注:此文转自知乎 erwin 的回答
什么是信息熵
从信息编码的角度举个例子,假设一个信源是一个随机变量X,且该随机变量取值的正确分布p如下:

那么可以简单认为,平均每发送4个符号其中就有2个A,1个B,1个C。因为我们知道信道传输是只能传二进制编码的,所以必须对A、B、C进行编码,根据哈夫曼树来实现,如下所示:
也就是说A被编码为0,B被编码为10,C被编码为11。所以每4个字符的平均编码长度为:
,
因为平均有2个A,1个B,1个C。那么这个随机变量的信息熵是什么呢?根据信息熵的计算公式:
则此信息传输的的信息熵为:

正好也是1.5。所以说信息熵是随机变量平均编码的最小长度。
什么是交叉熵
有了信息熵的概念后,然后就去看看交叉熵的物理含义。假设我们用一个错误的分布q,对随机变量编码,q的分布如下:
那么我们得到的哈夫曼树为:

也就是说A被编码为11,B被编码为10,C被编码为0。但是实际上,平均每4个字符还是2个A,1个B,1个C。所以在这种情况下,平均编码长度变成了:
那么这时候的交叉熵H(p,q)是什么呢?根据信息熵公式,计算如下:
正好也是1.75的,所以这就是交叉熵的物理含义。
什么是相对熵
有了交叉熵和信息熵,那么相对熵更好理解了。其实际含义就是用错误分布对随机变量编码时,其产生多余的编码长度。
对于两个概率分布P(x)和Q(x),其相对熵计算公式如下:
