avatar

LOSS:交叉熵损失函数

交叉熵损失函数

交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。以前做一些分类问题的时候,经常会用到,最近老师让看下交叉熵损失函数,今天就来看看他是何方神圣。

信息论

交叉熵损失函数是基于信息论提出来的。信息论是由香农于1948年提出,最初在通信领域中应用,后来不断发展和完善(计网和决策树中学到过)。信息论的重要特征是信息熵(entropy)的概念,他是事件发生不确定性的度量单位,信息熵越大表示不确定性越高,反之不确定性越低。

假设在系统S中有多个可能发生的事件:a1,a2,...,ana_{1},a_{2},...,a_{n},并且事件aia_{i}发生的可能性(概率)为p(ai),i=1,2,..,n,p(ai)[0,1]p(a_{i}),i=1,2,..,n,p(a_{i})\in[0,1]。容易想到,如果一个事件aia_{i}发生的可能性p(ai)p(a_{i})越大,则该事件的不确定程度就越低;如果p(ai)=1p(a_{i})=1,则该事件aia_{i}肯定会发生,那么时间aia_{i}的不确定性就不存在了,即时间aia_{i}的不确定程度为0。反之,如果p(ai)p(a_{i})越小,则事件aia_{i}的不确定程度就越高。

于是,就用log(p(ai))-log(p(a_{i}))来表示事件的不确定程度,称为aia_{i}自信息量。即:

I(ai)=log(p(ai))I(a_{i}) = -log (p(a_{i}))

如果我们把系统S看做一个信源,a1,a2,...,ana_{1},a_{2},...,a_{n}看成信源S发出的n种类型的信息,则信源S的不确定性就可以用平均自信息量来度量,记为H(S)H(S),定义如下:

H(S)=p(a1)I(a1)+p(a2)I(a2)+...+p(an)I(an)H(S) = p(a_{1})I(a_{1})+p({a_{2}})I(a_{2})+...+p(a_{n})I(a_{n})

=i=1np(ai)I(ai)=i=1np(ai)log(p(ai))= \sum_{i=1}^{n} p(a_{i})I(a_{i}) = - \sum_{i=1}^{n}p(a_{i})log(p(a_{i}))

称为H(S)H(S)为信源S的信息熵。上式就是信息熵的定义公式。

相对熵(KL散度)

相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。

即如果用P来描述目标问题,而不是用Q来描述目标问题,得到的信息增量。

在机器学习中,P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1]
直观的理解就是如果用P来描述样本,那么就非常完美。而用Q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和P一样完美的描述。如果我们的Q通过反复训练,也能完美的描述样本,那么就不再需要额外的“信息增量”,Q等价于P。

KL散度的计算公式:

DKL(pq)=i=1np(xi)log(p(xi)q(xi))D_{KL}(p||q) = \sum_{i=1}^np(x_{i})log(\frac{p(x_{i})}{q(x_{i})})

n为事件的所有可能性。

DKLD_{KL}的值越小,表示q分布和p分布越接近.

交叉熵

对相对熵进行变形:

DKL(pq)=i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))D_{KL}(p||q) = \sum_{i=1}^{n}p(x_{i})log(p(x_{i}))-\sum_{i=1}^n p(x_{i})log(q(x_{i}))

=H(P(x))+[i=1np(xi)log(q(xi))]=H(P(x))+[-\sum_{i=1}^n p(x_{i})log(q(x_{i}))]

等式的前一部分恰巧就是p的熵(信息熵),等式的后一部分就是交叉熵:

H(p,q)=i=1np(xi)log(q(xi))H(p,q) =-\sum_{i=1}^n p(x_{i})log(q(x_{i}))

在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即DKL(yy^)D_{KL}(y||\widehat{y}),由于KL散度中的前一部分H(y)−H(y)不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。

参考资料:

【1】机器学习—蔡自兴

【2】https://blog.csdn.net/tsyccnh/article/details/79163834

Author: Hui Ning
Link: https://angelni.github.io/cross-entropy/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付宝
    支付宝

Comment