交叉熵

交叉熵在机器学习和深度学习的任务中被广泛使用,下面从信息量开始,讲解了交叉熵能够作为任务loss的原理。

信息量

A:巴西队进入了2018世界杯决赛圈
B:中国队进入了2018世界杯决赛圈

显然A比B概率大,所以B包含的信息比A少。所以当概率越小的事件发生了,那么获取到的信息量就越大,反之。
假设$X$是一个离散型随机变量,取值集合为$\chi$,概率分布为$p(x)=P(X=x), x\in\chi$,则定义事件$X=x_0$的信息量为

对于一个随机变量,会有$n$种可能,每种都对应一个信息量,熵表示信息量的期望。

相对熵(KL散度)

相对熵又称KL散度,如果我们对于同一个随机变量$X$有两个单独的概率分布$P(X)$和$Q(X)$,我们可以使用KL散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
在机器学习中,$P(X)$往往用来表示样本的真实分布,$Q(X)$用来表示模型预测的分布,往往用$Q(X)$来描述样本不是那么完美,需要一些额外的“信息增量”才能达到$P(X)$的水平,所以KL散度用来度量这两个分布之间的差(“信息增量”):

KL散度越小,说明两个分布之间的差异越小,模型效果越好。

交叉熵

对KL散度变形可得:

可见,Kl散度前半部分为熵,等式后半部分定义为交叉熵:

机器学习中,因为KL散度是常值,所以通常用交叉熵来作为真实标签与预测标签之间的loss

多标签

对于一个多标签问题,可以将最后的模型输出向量压缩到标签数那么多维度,然后对每一维使用sigmoid函数压缩到$(0,1)$,再对每一维使用交叉熵,最后结果加起来就是总loss

参考

https://blog.csdn.net/tsyccnh/article/details/79163834