常见的损失函数

1.均方误差损失函数(MSE)

J(θ)=∑ni=1(y(i)−y(i)′)2nJ(θ)=∑i=1n(y(i)−y(i)′)2n 其中yy是真值,y′y′是预测值,它是W,b,xW,b,x
的函数。

2.交叉熵损失函数(cross-entropy)

J(θ)=−1m∑mi=1y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))),J(θ)=−1m∑i=1my(i)log⁡(hθ
(x(i)))+(1−y(i))log⁡(1−hθ(x(i))),
首先熵是香农信息量(log1p)(log1p)的期望。可以这样理解yy表示真实标记的分布,h(x)h(x)
则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量yy与h(x)h(x)的相似性。即两个分布的交叉熵越小越相似。

在上一次激活函数中我们聊到sigmoid激活函数,因为其本身的特性(饱和区),导致网络BP时会出现收敛很慢,怎么解决这个问题呢?
我们使用交叉熵损失函数代替MSE损失函数,先来回顾一下DNN反向传播的时候δLδL:

∂J(W,b,x,y)∂zL=(aL−y)⊙σ′(z)∂J(W,b,x,y)∂zL=(aL−y)⊙σ′(z)
而我们损失函数改为交叉熵之后:
δL=∂J(W,b,aL,y)∂zL=−y1aL(aL)(1−aL)+(1−y)11−aL(aL)(1−aL)=−y(1−aL)+(1−y)aL=aL−y
(433)(434)(435)(436)(433)δL=∂J(W,b,aL,y)∂zL(434)=−y1aL(aL)(1−aL)+(1−y)11−aL(aL)(
1−aL)(435)=−y(1−aL)+(1−y)aL(436)=aL−y
此时的梯度表达式已经没有σ′σ′
了,也就是说没有sigmoid函数的导数了,所以可以避免那个问题。但是sigmoid激活函数在网络变深之后依然存在梯度弥散现象,在现在普遍用Relu激活函数取代sigmoid激活函数,Relu在网络很深的情况可以一定程度的避免梯度弥散。


3.对数似然损失函数

J(W,b,aL,y)=−∑kyklnaLkJ(W,b,aL,y)=−∑kyklnakL 其中aLkakL表示网络的输出值,ykyk表示真值,取0或1.

对数似然损失一般用于多分类问题,在输出层加softmax激活,然后求对数似然损失。其本质就是,一组参数在一堆数据下的似然值,等于每一条数据在这组参数下的条件概率之积,而损失函数一般是每条数据的损失之和,为了把积变为和,就取了对数,再加个负号是为了让最大似然值和最小损失对应起来。
如果某一训练样本的输出为第i类。则yi=1yi=1,其余的j≠ij≠i都有yj=0yj=0。由于每个样本只属于一个类别,所以这个对数似然函数可以简化为:J(
W,b,aL,y)=−lnaLiJ(W,b,aL,y)=−lnaiL
可见损失函数只和真实类别对应的输出有关,这样假设真实类别是第i类,则其他不属于第i类序号对应的神经元的梯度导数直接为0。对于真实类别第i类,它的WLiWiL
对应的梯度计算为:


∂J(W,b,aL,y)∂WLi=∂J(W,b,aL,y)∂aLi∂aLi∂zLi∂zLi∂wLi=−1aLi(ezLi)∑j=1nLezLj−ezLiezL
i(∑j=1nLezLj)2aL−1i=−1aLi(ezLi∑j=1nLezLj−ezLi∑j=1nLezLjezLi∑j=1nLezLj)aL−1i=−1aL
iaLi(1−aLi)aL−1i=(aLi−1)aL−1i(537)(538)(539)(540)(541)(537)∂J(W,b,aL,y)∂WiL=∂J(W
,b,aL,y)∂aiL∂aiL∂ziL∂ziL∂wiL(538)=−1aiL(eziL)∑j=1nLezjL−eziLeziL(∑j=1nLezjL)2aiL
−1(539)=−1aiL(eziL∑j=1nLezjL−eziL∑j=1nLezjLeziL∑j=1nLezjL)aiL−1(540)=−1aiLaiL(1−
aiL)aiL−1(541)=(aiL−1)aiL−1
同样的可以得到bLibiL的梯度表达式为:
∂J(W,b,aL,y)∂bLi=aLi−1∂J(W,b,aL,y)∂biL=aiL−1

可见,梯度计算也很简洁,也没有第一节说的训练速度慢的问题。举个例子,假如我们对于第2类的训练样本,通过前向算法计算的未激活输出为(1,5,3),则我们得到softmax激活后的概率输出为:(0.015,0.866,0.117)。由于我们的类别是第二类,则反向传播的梯度应该为:(0.015,0.866-1,0.117)。


参考

http://www.cnblogs.com/pinard/p/6437495.html
<http://www.cnblogs.com/pinard/p/6437495.html>
https://www.zhihu.com/question/27126057
<https://www.zhihu.com/question/27126057>

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信