logistic regression 和 softmax regression的损失函数

本文探讨了logistic regression在处理概率输出时为何不适合使用MSE损失函数,并介绍了如何通过交叉熵损失函数解决这一问题。同时,文章还涉及softmax回归,说明在实际应用中通常将softmax层与回归层结合,并采用log-likelihood作为损失函数。

我们有logistic regression可以将实数域的输入映射为0到1的概率输出,能够有很好的意义。但是如果用平常的MSE(最小均方误差)就会有问题。我们来剖析这个问题:

logistic与MSE

这里写图片描述

现在有一个目标:输入0,输出1。
为了方便起见,我们现在只考虑有一个神经元

这里写图片描述

我们给定初始的权重w=0.6,b=0.9来看学习趋势,这里学习率 η=0.15,初始预测值为0.82
这里写图片描述

可以看到Cost一开始随着训练轮数的增加下降的还是蛮快的,之后平缓,符合人们的直觉。
我们再次改变权重令,w=2.0,b=2.0,初始预测值为0.98
这里写图片描述

可以看出一开始的Cost几乎是不下降的,也就是说学习得特别缓慢。为什么会出现这种情况呢,初始的权重不同为什么会导致学习速率的不同呢?我们来看logistic regression+MSE到底哪里有欠缺。

首先来看MSE的形式:

C(ω,b)=12nx||y(x)a||2

由于我们的简化,现在只有一个神经元则,变成:
C(ω,b)=12||ya||2

其中 a=σ(z),z=ωx+b
分别对 ω b 求偏导:
Cω=(yσ(z))σ(z)x

Cb=(yσ(z))σ(z)

上式右边带入了y=0,x=1。
改变 ω ,b带来的Cost的下降是与z的梯度有关系的,下面给出 σ 函数的图像。可以看出值越接近1的时候,梯度是越小的。这就是为什么预测值是0.82的时候,Cost下降的很快而预测值是0.98的时候,Cost下降很慢了。

这里写图片描述

logistic和cross-entropy

关于交叉熵的知识详见这里
进过研究,人们发现用交叉熵作为损失函数就会避免这种0学习速率的问题。

这里写图片描述

考虑上述模型,引入交叉熵之后,Cost为:
C=1nx[ylna+(1y)ln(1a)]

其中 a=σ(z),z=ωx+b
Cωj=1nx(yσ(z)1y1σ(z))σωj=1nx(yσ(z)1y1σ(z))σ(z)xj=1nxσ(z)yσ(z)(1σ(z))σ(z)xj

我们知道sigmod函数的导数为: σ(z)=σ(z)(1σ(z))
所以:
Cωj=1nxxj(σ(z)y)

类似的有
Cb=1nx(σ(z)y)

可以看出学习快慢取决于 σ(z)y 的大小。错误率越大,学习效率也交越大。还是形象的看学习快慢。
w=0.6,b=0.9来看学习趋势,这里学习率 η=0.005
这里写图片描述

w=0.2,b=0.2
这里写图片描述

softmax 回归

为了精确运算一般都是把softmax计算层和回归层放在一起进行。采用log-likelihood

Cost=log(ezymj=1ezj)=log(j=1mezj)zy

Costzk=ezkmj=1ezjδky=soft(z)δky

其中: δky=1,k=y;δky=0,ky

参考http://neuralnetworksanddeeplearning.com/chap3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值