熵的概念首先是在热力学中引入的,用于表述热力学第二定律。波尔兹曼输出了热力学熵与微观状态数目的对数之间存在联系,并给出了公式:
S=K logW
这个公式作为他最骄傲的成绩,镌刻在了他的墓碑上,以此可见该公式的伟大。
信息熵与上述热力学的熵,并不是同一个东西,但是有一定的联系。熵在信息论中代表随机变量不确定度的度量。科学而抽象的定义较为晦涩难懂,一个离散型随机变量 X 的熵 H(X) 定义为: H(X)=-∑p(x)log
p(x)。
我们尝试着用生活中的场景来说明情况。在直觉上,信息量等于传输该信息所用的代价,这个也是通信中考虑最多的问题。比如说:赌马比赛里,有4匹马A、B、C、D ,获胜概率分别为1/2,1/4,1/8,1/8 。接下来,让我们将哪一匹马获胜视为一个随机变量 X。假定我们需要用尽可能少的二元问题来确定随机变量 X的取值。例如:问题1:A获胜了吗?问题2:B获胜了吗?问题3:C获胜了吗?最后我们可以通过最多3个二元问题,来确定 X的取值,即哪一匹马赢了比赛。
如果X=A,那么需要问1次(问题1:是不是A?),概率为1/2 ;
如果X=B ,那么需要问2次(问题1:是不是A?问题2:是不是B?),概率为 1/4
如果 X=C,那么需要问3次(问题1,问题2,问题3),概率为1/8
如果 X=D,那么同样需要问3次(问题1,问题2,问题3),概率为 1/8;
那么很容易计算,在这种问法下,为确定X取值的平均二元问题数量为:
E=1/2+1/4*2+1/8*3+1/8*3=7/4
那么我们回到信息熵的定义,会发现通过之前的信息熵公式,神奇地得到了:
H(X)=1/2 log(2)+1/4
log(4)+1/8log(8)+ 1/8log(8)= 1/2+1/2+3/8+3/8=7/4bits
在计算机二进制中,一个比特为0或1,其实就代表了一个二元问题的回答。也就是说,在计算机中,我们给哪一匹马夺冠这个事件进行编码,所需要的平均码长为1.75个比特。
平均码长的定义为: L(C)=∑p(x)l(x)
很显然,为了尽可能减少码长,我们要给发生概率p(x)较大的事件,分配较短的码长 l(x)。这个问题深入讨论,可以得出霍夫曼编码的概念。霍夫曼编码就是利用了这种大概率事件分配短码的思想,而且可以证明这种编码方式是最优的。我们可以证明上述现象:
H(X)=-∑p(x)log p(x)
信息论之父克劳德·香农,总结出了信息熵的三条性质:
事件X=A,Y=B同时发生,两个事件相互独立
p(X=A,Y=B)=p(X=A)*p(Y=B)
那么信息熵H(A,B)=H(A)+H(B)。
香农从数学上,严格证明了满足上述三个条件的随机变量不确定性度量函数具有唯一形式,也就是文章开头的信息熵公式。