1. 信息熵
信息熵就是信息的不确定程度,信息熵越小,信息越确定
信息熵=∑事件x发生的概率∗验证事件x需要的信息量
事件发生的概率越低,需要越多的信息去验证,所以验证真假需要的信息量和事件发生的概率成反比,假设信息量为I(x)
I(x)=−logp(x)
其中负号是用来保证信息量是正数或者零,p(x)是事件x发生的概率,I(x) 也被称为随机变量 $x $的自信息 (self-information),描述的是随机变量的某个事件发生所带来的信息量
信息熵即所有信息量的期望
H(X)=−x∑p(x)log(p(x))=−i=1∑np(xi)log(p(xi))
其中 n 为事件的所有可能性
2. 相对熵(KL散度)
相对熵又称KL散度,如果对于同一个随机变量x有两个单独的概率分布p(x)和 q(x),可以使用相对熵来衡量这两个分布的差异。
DKL(p∥q)=i=1∑np(xi)log(q(xi)p(xi))
DKL越小,表示 p(x) 和 q(x) 的分布越近
3. 交叉熵
交叉熵公式
H(p,q)=−i=1∑np(xi)log(q(xi))
相对熵的推导:
==DKL(p∥q)=i=1∑np(xi)log(p(xi))−i=1∑np(xi)log(q(xi))−H(X)+[−i=1∑np(xi)log(q(xi))][−i=1∑np(xi)log(q(xi))]−H(X)
所以:
相对熵 = 交叉熵 - 信息熵
在机器学习中,往往用 p(x) 用来描述真实分布,q(x) 用来描述模型预测的分布;计算损失,理应使用相对熵来计算概率分布的差异,然而由相对熵推导出的结果看,相对熵 = 交叉熵 - 信息熵,而信息熵描述的是消除 p (即真实分布) 的不确定性所需信息量的度量,所以其值应该是固定的,那么,优化减小相对熵也就是优化交叉熵,所以在机器学习中使用交叉熵就可以了
小结
相对熵描述的是两个概率分布分布之间的差异,所以本应该是使用相对熵来计算真实分布与预测分布之间的差异。但是,相对熵 = 交叉熵 - 信息熵,而信息熵描述的是消除 p (即真实分布) 的不确定性所需信息量,是个固定值,因此优化相对熵可以简化为优化交叉熵,故机器学习中使用交叉熵作为损失函数
4.分类问题中为什么使用交叉熵而不适用均方误差
如下,为前向传播中的线性部分和非线性部分:
zy^=wx+b=a=σ(z)
均方误差损失函数为:
L1(y,a)=21(y−a)2
交叉熵损失函数为:
L2(y,a)=−(ylog(a)+(1−y)log(1−a))
使用梯度下降来更新自变量,使得损失函数最小
w=w−α∂w∂L(y,a)b=b−α∂w∂L(y,a)
均方差对参数的偏导:
∂w∂L1(y,a)=−∣y−σ(z)∣σ′(z)x∂b∂L1(y,a)=−∣y−σ(z)∣σ′(z)
交叉熵对参数的偏导:
∂w∂L2(y,a)=x[σ(z)−y]∂w∂L2(y,a)=σ(z)−y
此处推导时注意:令f(x)是sigmoid函数,则f′(x)=f(x)(1−f(x))
从上可以看出均方差对参数的偏导的结果都乘了sigmoid的导数σ′(z),而sigmoid导数在其变量值很大或很小时趋近于0,所以偏导数很有可能接近于0;偏导很小时,参数更新速度会变得很慢,而当偏导接近于0时,参数几乎就不更新了
而交叉熵对参数的偏导就没有sigmoid导数,所以不存在这个问题。这就是选择交叉熵而不选择均方差的原因

图1. sigmoid函数及其导数
如上图,蓝色为sigmoid函数,红色为其导数图像
小结
使用交叉熵作为分类器的损失函数而不用均方误差的原因是:均方误差损失函数对自变量求偏导的结果带有sigmoid导数因子项,而当自变量值较大时,sigmoid导数值会趋向0,这样整个梯度会变得很小,再用梯度下降法更新自变量时,迭代速度会很慢,导致迟迟不能达到最优值;而交叉熵函数求导后不带sigmoid函数导数项,梯度下降时更新很快
reference
为什么用交叉熵做损失函数