熵、KL散度、交叉熵公式及通俗理解

根据香农信息论中对于熵的定义,给定一个字符集,假设这个字符集是X,对x∈X,其出现概率为P(x),那么其最优编码(哈夫曼编码)平均需要的比特数等于这个字符集的熵。

 如果字符集中字符概率越趋于平均,说明某个字符被预测的不确定性最大,只有最后我们知道了某一可能性确实发生了,才得到最大的信息量,因此它的熵就越大。而如果字符集中字符概率分布差异越大,则认为我们知道某一字符出现的可能性比其他类更大,这个字符集包含的信息量很小,因此它的熵越小。

  • KL散度

KL散度用于计算两个随机变量的差异程度。相对于随机变量A,随机变量B有多大的不同。注意,由于相较基准不同,KL(A||B) ≠ KL(B||A)。

从编码的角度理解,在同样的字符集上,假设存在另一个概率分布Q(X)。如果用概率分布P(X)的最优编码(即字符x的编码长度等于log[1/P(x)]),来为符合分布Q(X)的字符编码,那么表示这些字符就会比理想情况多用一些比特数。KL-divergence就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离

  • 交叉熵

交叉熵用于度量两个分布或者说两个随机变量、两个事件不同的程度。从编码的角度理解,使用随机变量B的最优编码方式对随机变量A编码所需要的字节数,具体来说就是使用哈夫曼编码去根据B的概率分布对A进行编码,所需要的编码数。

例如说,在深度学习中常用的交叉熵损失,A的分布通常为one-hot分布作为真实概率分布(也就是某一预测出现最肯定的情况),而B是预测概率分布。在模型训练时,希望目标优化函数能够尽可能小,我们希望能够B的分布概率能够向着A的方向分布,此时熵最小。

参考资料:

熵、KL散度、交叉熵 - 知乎 (zhihu.com)

你可能感兴趣的:(机器学习)