信息熵其实解决的问题是信息量应该怎么量化,它的公式是
H =-(p1log2(p1)+p2log2(p2)+…..pnlog2(pn)
这个公式的含义是什么呢,举一个数学之美上的例子,马上要举行世界杯赛了。大家都很关心谁会是冠军。假如我错过了看世界杯,赛后我问一个知道比赛结果的观众“哪支球队是冠军”?他不愿意直接告诉我,而要让我猜,并且我每猜一次,他要收一元钱才肯告诉我是否猜对了,那么我需要付给他多少钱才能知道谁是冠军呢? 我可以把球队编上号,从 1 到 32,然后提问: “冠军的球队在 1-16 号中吗?” 假如他告诉我猜对了,我会接着问: “冠军在 1-8 号中吗?” 假如他告诉我猜错了,我自然知道冠军队在 9-16 中。这样只需要五次,我就能知道哪支球队是冠军。所以,谁是世界杯冠军这条消息的信息量只值五块钱。
当然,香农不是用钱,而是用 “比特”(bit)这个概念来度量信息量。一个比特是一位二进制数,计算机中的一个字节是八个比特。在上面的例子中,这条消息的信息量是五比特。(如果有朝一日有六十四个队进入决赛阶段的比赛,那么“谁世界杯冠军”的信息量就是六比特,因为我们要多猜一次。)
你可能会说这里肿么用到啦信息熵公式啦,其实吧,我们可以这么算:
H = (1/32)log2(1/32)+(1/32)log2(1/32)+……. (1/32)log2(1/32)
=log2(32)= 5
那么其中的物理含义是什么呢,我是这么理解的,我们其实是在对谁赢这个描述进行编码,而这个描述确定啦,那对于哪个队伍赢啦这场比赛显然是确定啦的,然后因为有32种可能,如果用二进制进行编码的话,那就需要log2(32) = 5个二进制位,更泛化意义的讲,如果这32个队赢得概率是p1,p2,p3….p32,那么单对于i队来说,它赢概率pi,那我们用二进制对它进行编码,需要log2(1/pi) , 但是我们考虑全部队伍的时候,不是全部相加,因为不可能说每个队都获得冠军,所以我们进行啦一个加权的操作,求得是平均信息编码量。
即 H = -(p1log2(p1)+p2log2(p2)+…..p32log2(p32)
接下来一个概念是条件熵熵,
它衡量的是在X条件下,求Y还需要多少信息量,为什么呢,
所以不要看第一行的计算公式,它其实就是确定X和Y的信息量减去单独确定X的信息量,也就是确定Y还需要多少信息量(~ ̄▽ ̄)~*。
再有就是一个互信息的概念,I(Y;X) =H(Y) – H(Y|X), 结合上面的条件熵,互信息的含义就很明了啦,就是X的确定给Y带来啦多少信息量。
其实还有一个相关概念叫相对熵,机器学习里面叫KL divergence.
KL散度是用来 度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。具体请参考ttp://baike.baidu.com/link?url=XidDDDKQTc4BJzF2gSjzEv1Qa5smjlz8SEnxMqfDxM-xleRE3k4Wiz6BXiYccTGJGNmuix143Kl1Iu-2r8gmFK
参考文献:
数学之美
维基百科http://zh.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E7%86%B5