注:此文转自知乎 erwin 的回答

    什么是信息熵

    从信息编码的角度举个例子,假设一个信源是一个随机变量X,且该随机变量取值的正确分布p如下:

    1. ![](https://cdn.nlark.com/yuque/__latex/2f028788f47fdfc5b58dcfe5da5b21f8.svg#card=math&code=A%3A%20%5Cfrac%7B1%7D%7B2%7D%EF%BC%8C%5C%20B%3A%5Cfrac%7B1%7D%7B4%7D%EF%BC%8C%5C%20C%3A%5Cfrac%7B1%7D%7B4%7D&height=38&width=163)

    那么可以简单认为,平均每发送4个符号其中就有2个A,1个B,1个C。因为我们知道信道传输是只能传二进制编码的,所以必须对A、B、C进行编码,根据哈夫曼树来实现,如下所示:
    image.png
    也就是说A被编码为0,B被编码为10,C被编码为11。所以每4个字符的平均编码长度为:

    1. ![](https://cdn.nlark.com/yuque/__latex/32e29911e74db2156a71cc83b913a41c.svg#card=math&code=%5Cfrac%7B1%2A2%2B1%2A2%2B2%2A1%2B2%2A1%7D%7B4%7D%3D1.5&height=38&width=241),

    因为平均有2个A,1个B,1个C。那么这个随机变量的信息熵是什么呢?根据信息熵的计算公式:
    如何理解交叉熵与相对熵 - 图2

    则此信息传输的的信息熵为:

    1. ![](https://cdn.nlark.com/yuque/__latex/72ccd81afd82203a6024950dbe2c1cb7.svg#card=math&code=H%28X%29%3D-%5Cfrac%7B1%7D%7B2%7Dlog_2%28%5Cfrac%7B1%7D%7B2%7D%29-%5Cfrac%7B1%7D%7B4%7Dlog_2%28%5Cfrac%7B1%7D%7B4%7D%29-%5Cfrac%7B1%7D%7B4%7Dlog_2%28%5Cfrac%7B1%7D%7B4%7D%29%3D0.5%2B0.5%2B0.5%3D1.5&height=38&width=500)

    正好也是1.5。所以说信息熵是随机变量平均编码的最小长度。

    什么是交叉熵

    有了信息熵的概念后,然后就去看看交叉熵的物理含义。假设我们用一个错误的分布q,对随机变量编码,q的分布如下:
    如何理解交叉熵与相对熵 - 图3

    那么我们得到的哈夫曼树为:

    image.png
    也就是说A被编码为11,B被编码为10,C被编码为0。但是实际上,平均每4个字符还是2个A,1个B,1个C。所以在这种情况下,平均编码长度变成了:

    如何理解交叉熵与相对熵 - 图5
    那么这时候的交叉熵H(p,q)是什么呢?根据信息熵公式,计算如下:

    如何理解交叉熵与相对熵 - 图6

    正好也是1.75的,所以这就是交叉熵的物理含义。

    什么是相对熵

    有了交叉熵和信息熵,那么相对熵更好理解了。其实际含义就是用错误分布对随机变量编码时,其产生多余的编码长度。

    对于两个概率分布P(x)和Q(x),其相对熵计算公式如下:

    如何理解交叉熵与相对熵 - 图7
    如何理解交叉熵与相对熵 - 图8