sigmoid函数是如何诞生的(最大熵原理)

      由于工作的原因没有在学校里那么多学习的时间,对于很多基础知识纠结好久还是觉得应该记录下来,于是就打开了好多年没用的csdn,开始记录下自己的偶尔的学习过程,希望能以此勉励自己。当然第一篇博客,自然逼格不能低,先来谈谈自己一直很好奇的,大牛们熟的不能再熟的sigmod函数究竟是怎么得来的。

      很多人可能会说,懵的?那你怕是石乐志,其实很多地方都有解释这个函数为什么好,但始终没有给出这个玩意儿到底是怎么出来的。话不多说,先给结论:最大熵原理

      对于最大熵原理,首先给出一个定理:对于概率模型而言,在缺乏先验的情况下,条件熵最大的模型是最好的模型。很好理解,熵最大意味着不确定度最高,在没有先验知识情况下,自然这是最好的假设(注意和决策树中特征选择时的熵区分)

      好,下面开始装逼(推导主要参考了统计学习方法

      首先,明确我们的目标:条件熵最大:

这里上面波浪号可以理解为是联合概率密度和样本特征分布已知(根据样本先验可知),最终我们的目标就是求出让H函数最大的P(Y|X)。

在这里定义一个特征函数的概念,这个不太好理解,我个人理解为在样本特征与Label之间满足一定关系下,对于样本特征的描述,这个描述自己定,因此个数也不定(不一定对),这里先定义为:

由贝叶斯相关定理,对于每个特征函数i而言,其期望值显然有:

而对于最终的条件概率而言,所有lable取值概率和为1:

好了,接下来,我们综合上面的信息,得到了一个等式约束下的拉格朗日最优化问题(这里不太明白为啥书上会用到KKT条件,等式约束按理说直接导数即可解决,求纠正,我就按自己想法来了):

sigmoid函数是如何诞生的(最大熵原理)_第1张图片

由拉格朗日乘子法,问题转化为求如下式子的最小值:

sigmoid函数是如何诞生的(最大熵原理)_第2张图片

此时,我们对L求P(y|x)的导数(指定x和y,去掉求和符号,方便求解),并让导数值为0:

sigmoid函数是如何诞生的(最大熵原理)_第3张图片

注意,w是拉格朗日参数,主要不和变量相关,加减乘除运算后,他还是w。进一步可以得到:

显而易见,直接求出:

由所有lable概率和为1:

上面两式合并可得(w0参数可以任意+-1):

看到这里,想必大家已经开始感觉有点熟悉了,这是不是和大名鼎鼎的softmax函数十分相似????

好了,之前说过,在最大熵模型中,特征函数是自己定的,这个时候,定义:

注意,这里的x和接下来的特征函数一样,都是指向量x的第i维分量。那么,直接给出softmax函数:

好了,写到这里,其实问题基本已经解决,因为从分类角度考虑,sigmod函数其实就是softmax的二分类特例。当然,装逼要装完,还是给出sigmod再跑路:假定y取值为0和1,且定义

此时,我们来看这个函数:

so,这里我们就给出了所谓的sigmod函数,当然,自己加个负号就行,毕竟w是随意的,装逼结束。

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(机器学习)