机器学习之Logistic回归激活函数为什么是Sigmoid?

第一次听到这个问题,大概大脑停顿了片刻,这是个问题吗?因为sigmoid值在0-1之间符合概率分布,处处可导,关键是在0附近变化很快...这些都只是sigmoid的优点。为什么LR不用别的也具有这些优点的激活函数呢?这是数学公式推导出来的——最大熵模型!

证明Logistic回归激活函数为什么是Sigmoid?假设我们已经证明:

最大熵模型中,条件概率

 P_{w}(y|x)=\frac{1}{Z_{w}}exp(\sum_{i=1}^{n}w_{i}f_{i}(x,y))))

其中\frac{1}{Z_{w}}=\sum_{y} exp(\sum_{i=1}^{n}w_{i}f_{i}(x,y))),wi是参数,f为特征函数(x,y满足某一条件为1,不满足为0),是不是很像softmax?

假设LR可以使用最大熵模型这个结论,fi选取为线性的,即fi用x+b替代,则

P_{w}(1|x)=\frac{exp(w_{1}(x+b))}{exp(w_{1}(x+b)))+exp(w_{0}(x+b))}

\fn_cm P_{w}(1|x)=\frac{1}{1+exp((w_{0}-w_{1})(x+b))} 

那么LR能否用最大熵模型的结论?接下来一探究竟---最大熵模型和最大熵模型的证明。

最大熵模型:对一批数据,我们可以采用很多模型,在满足所有约束条件下,我们选择条件熵最大的模型(条件熵最大的模型我们叫最大熵模型,为啥最大?就好比鸡蛋不能放在一个篮子里面)。什么是条件熵?先说一下熵,表示信息的不确定性,不确定性越大,熵越大,熵也是概率的函数,定义为

H(P)=-\sum_{x} P(x)logP(x)

那为什么选择条件熵而不是熵?这不废话吗,因为我们是根据数据(即输入特征)预测输出的,也就是已经给定你条件x了,诺如LR中的P(y|x)。那这个条件熵怎么求呢?可不可以套用公式

H(P(Y|X))=-\sum_{x} P(y|x)logP(y|x)

答案是不可以,一知半解中...我按照书上的理解是:

H(Y|X=x)变量Y在变量X取特定值x下的熵,H(Y|X)是取遍所有可能的x值的平均,所以

H(P(Y|X))=-\sum_{x} P(x)H(Y|X=x) =-\sum_{x} P(x)\sum_{y} P(y|x)logP(y|x) =-\sum_{x}\sum_{y} P(x)P(y|x)logP(y|x)

模型的最大熵公式确定,但同时模型还要满足一些约束,如抛硬币,硬币反面出现的概率要小于正面,因为我硬币正面放了个磁铁。这些约束可用特征函数f(x,y)表示:

f(x,y)当x、y满足某一事实为1,否则为0(有人认为特征函数表示数据为训练集中的数,有点点偏,其实是表示约束)

我们希望这些约束不仅在训练集上成立,还能在模型当中也是成立的,即它的期望在训练集上和在整个模型中是相等的。因为这个模型本质上就是  概率分布p(y|x)。因此,提出约束征函数f关于经验概率\widetilde{P}(x,y)的期望,用E_{\widetilde{P}}(f)表示:

E_{\widetilde{P}}(f)=\sum _{x} \sum _{y} \widetilde{P}(x,y)f(x,y)

特征函数f关于模型P(Y|X)与经验概率\widetilde{P}(X)(其实是P(X),这里用经验概率近似)的期望,用E_{P}(f)表示:

E_{P}(f)=\sum _{x} \sum _{y} \widetilde{P}(x)P(y|x)f(x,y)

所以:

E_{P}(f) = E_{\widetilde{P}}(f)

把条件熵也用经验概率\widetilde{P}(X)替代P(X):

H(P(Y|X))=-\sum_{x}\sum_{y} \widetilde{P}(x)P(y|x)logP(y|x)

s.t.   E_{P}(fi)=E_{\widetilde{P}}(fi), i=1,2,..,n    (n个约束)

       \sum _{y}P(y|x)=1

接下来是优化环节,最大熵的模型等价于约束最优化问题:

min -H(P(Y|X))=\sum_{x}\sum_{y} \widetilde{P}(x)P(y|x)logP(y|x)

E_{P}(fi)-E_{\widetilde{P}}(fi)=0, i=1,2,..,n

\sum _{y}P(y|x)-1=0

引入拉格朗日乘子,定义拉格朗日函数为: 

L(P,w) =\sum_{x}\sum_{y} \widetilde{P}(x)P(y|x)logP(y|x)+w_{0}(1-\sum _{y}P(y|x))+\sum_{i=1}^{n}w_{i}(E_{P}(fi)-E_{\widetilde{P}}(fi))

=\sum_{x}\sum_{y} \widetilde{P}(x)P(y|x)logP(y|x)+w_{0}(1-\sum _{y}P(y|x))+\sum_{i=1}^{n}w_{i}( \sum_{x,y}\widetilde{P}(x,y)fi(x,y) - \sum_{x,y}\widetilde{P}(x)P(y|x)fi(x,y) )

最优化原始问题  min_{P}max_{w}L(P,w)——>对偶问题max_{w}min_{P}L(P,w)

求L(P,w)最优解,求导,对P(y|x)求导

\frac{\partial P(P,w)}{\partial P(y|x)}=\sum _{x,y}(log(P(y|x))+1)-\sum _{y}w_{0}+\sum_{i=1}^{n}w_{i}(\widetilde{P}(X)\sum _{x,y}fi(x,y)))

=\sum _{x,y}\widetilde{P}(X)(log(P(y|x))+1-w_{0}+\sum_{i=1}^{n}w_{i}fi(x,y)))

这里介绍一下为什么整理了一下公式w0还是w0,实际上对w0做了缩放,但w0本来就是变量,为了表达方便就还是用w0表示。

导数为0,可得最终条件概率模型:

P(y|x)=\frac{exp(\sum_{i=1}^{n}w_{i}fi(x,y))}{exp(1-w_{0})}

但注意,\sum_{y}P(y|x)=1

P_{w}(y|x)=\frac{exp(\sum_{i=1}^{n}w_{i}fi(x,y))}{Z_{w}}

Z_{w}=\sum _{y}exp(\sum_{i=1}^{n}w_{i}fi(x,y))

所以证明了最大熵模型的条件概率表达式。接下来可用梯度下降法去优化模型(即学习)

等等,还有一个问题,LR可以用最大熵模型吗?当然LR是假设伯努利分布(区别泊松),这是一个概率模型,而最大熵就是用在概率模型上,所以可以用最大熵模型。当然,西瓜书老师是这么引入LR的,这只是引入,而非为什么用sigmoid函数。

假设为1的概率是p,即P(1|x)=p,P(0|x)=1-p,然后预测值为概率大一点的值,定义一个odds,叫对偶几率:

log(p/(1-p)),当p>1-p,则说明类别是1,此时p/(1-p)>1,那么log(p/(1-p))>0,而sigmoid就是正数标签1,负数标签0。

所以对偶几率就很有意义啦,然后令它等于wx+b,最后可导出p=1/(1+exp^(wx+b))。

猜你喜欢

转载自blog.csdn.net/woshicao11/article/details/81458972