虽然很早就碰到过信息熵这个词,但是一直都没有对其进行过深入了解.这里对其进行详细阐述.

介绍

学习信息熵,一定要区分出两个概念,随机变量的信息熵和事件的信息量.

事件的信息量

对于一个发生概率为$p$的事件x,其信息量为

$$
L(x)=-\log(p(x))
$$

随机变量的信息熵

信息熵$H(X)$为一个函数,自变量$X$为一个离散型随机变量,其表达形式为:

$$
H(X)=-\sum _{x \in X} p(x) \log p(x)
$$

这个表达形式不是重点,重点意义在于其表达了什么,又为什么如此表达.

信息量的意义

信息量,针对一个事件而言,表示这个随机事件x所蕴含的信息量,假设该事件发生概率为$p(x)$其表达式为:

$$
L(x)=-log(p(x))
$$

按照常识理解,信息量肯定是非负的,并且也应该具有叠加性,例如对于张三是男人和李四是女人所蕴含的信息量应该和张三是男人的信息量加上李四是女人的信息量.

唯一稍微难以理解的是,信息量是和概率相关的,并且具有单调性,即概率越大,信息量越小.其实举个极端例子就会理解了.例如对于太阳从东边升起,这样的事情发生概率为1,所以信息量为0,没有人会觉得这个事情有什么好提的.而对于太阳从东边升起,这样的事情的概率是0,其信息量为无穷大,这也是合理的.

再拿一个寻常的例子做比方,假设经过统计,名为张三的人绝大多数是男人,而名为李四的人绝大多数也是男人.对于张三是男人这件事,李四是女人这件事是不是更具有"信息量"一点呢?

最后一个问题是,为什么表达形式是那样呢?是否具有其他表现形式?

答案是唯一的,下面予以证明.

信息量的表达式的唯一性

对于随机事件x,假设该事件发生概率为$p(x)$,其信息量假设为$f(p(x))$

首先假设对于确定性事件,其信息量为0,这是合理的.

由叠加性可知

$$
f(p(xy))=f(p(x)*p(y))=f(p(x))+f(p(y))
$$

实际上,这是一个函数方程,利用柯西法可求解得$f(x)$的表达式为

$$
f(x)=b\log_a(x)
$$

最后由于非负性和一般性将b取为-1就是信息量的表达式.

信息熵的意义

从信息论的定义来说,信息熵代表了随机变量不确定度的度量.所以要理解这个信息熵,就要理解不确定度是什么.

这里举个好多博客都提过的例子.

赌马比赛里,有4匹马 ${A,B,C,D}$ ,获胜概率分别为 ${\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{8}}$ 。

我们想用一串二进制编码来表示哪匹马获胜了.

最直接的思路是这样理解的,四种结果,用2个bit就可以表达了.

但这个结果并不是最优的结果.实际上,最优的结果是这样的:

  • 0: 表示A获胜
  • 10: 表示B获胜
  • 110: 表示C获胜
  • 111: 表示D获胜

这样,对于哪匹马获胜这样一个随机事件的结果,其编码长度为:

$$
E(X)=1 \times \frac{1}{2} + 2 \times \frac{1}{4} + 3 \times \frac{1}{8} + 3 \times \frac{1}{8} = 1.75
$$

即只需1.75个bit就可以对哪匹马获胜了这个信息进行编码了.(关于为什么1.75bit是最小的,和霍夫曼编码有关)

再来对比一下信息熵的公式,我们可以发现,对于这个事件,其信息熵的值

$$
H(X)=-(\frac{1}{2} \times -1 + \frac{1}{4} \times -2 + \frac{1}{8} \times -3+ \frac{1}{8} \times -3)=1.75
$$

和用二进制比特编码表示的最短长度是一致的.

这里对于这个随机事件的编码长度,就可以反映出这个随机事件的不确定度了.编码长度越长,说明随机事件越"不确定".极端一点,对于一个零一概率的随机事件,其编码长度就是0,因为没有任何表示的必要,结果就是确定的.

这里我们利用了计算机中二进制表达来计算信息量,为1.75bits,但实际上信息熵的表达形式并不局限于此,只是计算机科学如此更为方便.实际上,物理上信息熵的表达形式底数是$e$.


我很好奇