交叉熵与均方差

先放结论:

  • 相同点:当输出值与真实值接近的话,cross_entropy和rmse的值都会接近0
  • cross_entropy具有rmse不具有的优点:避免学习速率降低的情况,方法是避免了 σ() 的出现。 (注意这种效果仅限于输出层,隐藏层的学习速率与其使用的激活函数密切相关。)
  • 均方损失:假设误差是正态分布,适用于线性的输出(如回归问题),特点是对于与真实结果差别越大,则惩罚力度越大,这并不适用于分类问题
  • 交叉熵损失:假设误差是二值分布,可以视为预测概率分布和真实概率分布的相似程度。在分类问题中有良好的应用。

一、交叉熵与均方误差的对比

下面是3个训练样本经过使用softmax作为激活函数的神经网络的输出(computed)、真实结果(targets)以及是否预测正确的对比表格。

computed targets correct?
0.3, 0.3, 0.4 0, 0, 1 yes
0.3, 0.4, 0.3 0, 1, 0 yes
0.1, 0.2, 0.7 1, 0, 0 no

这是另外一个网络的输出结果:

computed targets correct?
0.1, 0.2, 0.7 0, 0, 1 yes
0.1, 0.7, 0.2 0, 1, 0 yes
0.3, 0.4, 0.3 1, 0, 0 no

交叉熵(Average Cross Entropy)

第一个样本的交叉熵为:

(0ln0.3+0ln0.3+1ln0.4)=ln0.4

对于神经网络来说,交叉熵的计算有点古怪,因为只有一项会被保留下来。因此三个样本的平均交叉熵为:

(ln0.4+ln0.4+ln0.1)/3=1.38

第二个网络的平均交叉熵为:

(ln0.7+ln0.7+ln0.3)/3=0.64

均方误差(Root Mean Square Error, RMSE)

RMSE=1n(yiy^i)2

第一个网络:0.81
第二个网络:0.34

相比ACE, MSE非常侧重那些没有被正确分类的输出

二、理论推导

真实分布p和估计分布q之间的交叉熵定义如下:

H(p,q)=ipilogqi

反向传播中的均方误差:

C=12(y1)2

偏导:
Cw=(ay)σ(z)x

反向传播中的交叉熵:

二分类情况下:

C=1nx[ylna+(1y)ln(1a)]

其偏导为:

Cwj=1nxxj(σ(z)y)

这个式子说明w的学习速率可以被输出的误差所控制。误差越大,学习速率越大,这正是我们所期待的。

交叉熵、相对熵、熵之间的关系:

与交叉熵相关的有两个概念:

  • 相对熵(KL散度):两个概率分布的整体差异情况
    D(p||q)=ipilogpiqi
  • 熵:单个概率分布内部混乱程度
    H(p)=ipilogpi

关于 H(p,q)=D(p||q)+H(p) 的推导:

H(p,q)====ipilogqiipilog(piqipi)i(pilogpipilogpiqi)H(p)+D(p||q)

你可能感兴趣的:(deep-learning)