初学者在搞清楚这个三个信息论的大怪兽时,往往会晕头转向。本文将简要的对这三个概念进行理清,文章尽量通俗,有不对的地方恳请斧正。

信息熵:

香农提出信息熵主要是用来解决对信息的量化度量问题,比如说存在选项【A,B,C,D】,若每个字母都用8位Ascii码存储,则表示这个四个选项需要32位bit。 如果此时采用二进制的话,4个选项用2位bit便可表示【00,01,10,11】。于是对4个选项信息进行量化为log2(4)=2{log}_2(4) =2

值得注意的是,我们在量化这个四个选项信息是隐含了一个附加条件(A,B,C,D)出现的概率相同,各为1/4。如果出现的概率各不相同,我们不一定是将其表述为2进制【00,01,10,11】(各个事件的出现概率相同),这样在信息压缩上并不是最优。在考虑信息编码的时候,如果出现概率值不同,我们会将出现概率大的进行短编码,概率小的进行长编码,这也是哈夫曼编码的思想。

那么当事件的出现概率各不相同时,我们如何衡量信息的编码量呢?此时,需要引入数学上的期望。每个事件出现的概率为pip_i,那么这个信息量可以表示为期望ipilog(1/pi)=ipilog(pi)\sum_i p_i log(1/p_i) = -\sum_i p_i log(p_i)

那么可以将信息熵定义为:
Entropy=ipilog(pi)Entropy = -\sum_i p_i log(p_i)

所谓信息熵:是对每个可能性编码所需要的期望值,延伸一下,也是对信息的量化指标。香农则将信息熵用来描述信息源的不确定度, 信息熵越大,混乱度越大。

这里再衍生一下,如果有一个硬币,往上抛,落到地上猜正反。那么假如这个硬币是正常硬币的话,则正反的概率均为1/2,此时二元信源的熵达到最大,也就是说我们不知道硬币到底是正,还是反,只能靠猜,信息的混乱度很大,信息源极不确定。

考虑一下,如果这个硬币被动了手脚的,两面都是正,则反的概率为0,代入信息熵的公式可得此时的信息熵为0,也就意味着这个信息是确定的,闭着眼也能知道这个硬币最终是正的。同时,也可以描述信息源是完全确定的。

相对熵:

相对熵也称之为Kullback-Leibler散度(KL散度),是用来衡量两个信息分布的差异性。相对熵是如何去衡量数据分布的差异性呢?KL(PQ)KL(P||Q)指的是如果用事件P代替事件Q进行描述,那么其所获得的信息增量。

数学描述为:
KL(PQ)=P(x)log(P(x)Q(x))=P(x)log(Q(x)P(x)) KL(P||Q)=\sum P(x) log(\frac{P(x)}{Q(x)}) = -\sum P(x) log(\frac{Q(x)}{P(x)})

Note: 当P(x) = Q(x)时,KL散度为0,当两者分布差异越大时,KL散度也越大。

此处引用维基百科上的一个例子,
存在下面两个分布P,Q。P为二项分布,Q为均匀分布。
【机器学习】一文理清信息熵,相对熵,交叉熵
【机器学习】一文理清信息熵,相对熵,交叉熵
值得注意的是相对熵并不对称,KL(P||Q)不等于KL(Q||P)。
后续为了引入对称的度量,引入了JS分布,此处不细述。

交叉熵:

交叉熵往往在机器学习的分类问题中的很多
我们将相对熵的数学公式进行拆分为:

KL(PQ)=P(x)log(P(x)Q(x))=P(x)log(P(x))P(x)log(Q(x))=H(P(x))+CrossEntrop(P,Q) KL(P||Q) =\sum P(x) log(\frac{P(x)}{Q(x)}) = \sum P(x) log(P(x)) - \sum P(x) log(Q(x)) = -H(P(x)) + Cross Entrop(P,Q)

交叉熵的定义:
CrossEntrop(P,Q)=P(x)log(Q(x)) Cross Entrop(P,Q) = -\sum P(x) log(Q(x))

在分类问题中,P(x)为label的one-hot,Q(x)为softmax的结果。由于label的熵不会改变,是一个常数。因此对相对熵进行最小化,也是对交叉熵进行最小化。

相关文章: