信息熵、相对熵与交叉熵

目录

1. 信息熵

  熵是一个信息论中的概念,表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。信息熵公式如下:
H ( p ) = − ∑ i = 1 n p ( x i ) l o g p ( x i ) H(p)=-\sum_{i=1}^{n}{p(x_i)logp(x_i)} H(p)=−i=1∑n​p(xi​)logp(xi​)
关于熵的详细解释可参考最大熵阈值分割法

2. 相对熵

  相对熵又称KL散度,用于衡量对于同一个随机变量x的两个分布 p ( x ) p(x) p(x)和 q ( x ) q(x) q(x)之间的差异。 p ( x ) p(x) p(x)表示样本真实分布, q ( x ) q(x) q(x)表示模型预测分布,模型训练就是不断让 q ( x ) q(x) q(x)分布拟合分布 p ( x ) p(x) p(x)。KL散度的值越小表示两个分布越接近。KL散度公式如下:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) q ( x i ) D_{KL}(p||q)=\sum_{i=1}^{n}{p(x_i)log\frac{p(x_i)}{q(x_i)}} DKL​(p∣∣q)=i=1∑n​p(xi​)logq(xi​)p(xi​)​

3. 交叉熵

  将KL散度变形得到如下表达式:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) − ∑ i = 1 n p ( x i ) l o g q ( x i ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g q ( x i ) ] \begin{aligned} D_{KL}(p||q)&=\sum_{i=1}^{n}{p(x_i)logp(x_i)}-\sum_{i=1}^{n}{p(x_i)logq(x_i)} \\ &=-H(p(x))+[-\sum_{i=1}^{n}{p(x_i)logq(x_i)}] \end{aligned} DKL​(p∣∣q)​=i=1∑n​p(xi​)logp(xi​)−i=1∑n​p(xi​)logq(xi​)=−H(p(x))+[−i=1∑n​p(xi​)logq(xi​)]​
  第一项就是 p ( x ) p(x) p(x)的信息熵,第二项就是交叉熵cross entropy。我们常用KL散度来评估真实标签和预测标签的差别,由于KL散度第一项是个常量,所以直接将第二项的交叉熵作为损失函数也是一样的。

4. 交叉熵与softmax

  分类问题中常用交叉熵作为模型的损失函数。样本标签 y 的值为1或者0可以看做是概率,而模型的输出是一个实数值,如何将这个实数值转换成概率呢?这就要用到 softmax 函数了(所以面试官会经常问为什么交叉熵要和 softmax 一起用)。假设模型输出为 y 1 , y 2 , . . . , y n y_1,y_2,...,y_n y1​,y2​,...,yn​,经过 softmax 后的输出为:
s o f t m a x ( y i ) = e y i ∑ j = 1 n e y i softmax(y_i)=\frac{e^{y_i}}{\sum_{j=1}^{n}{e^{y_i}}} softmax(yi​)=∑j=1n​eyi​eyi​​
  这样就把模型的输出也变成了一个概率分布,从而可以用交叉熵来计算预测值和真实值之间的距离了。

上一篇:KL算法


下一篇:GAN 笔记