信息熵

来源:百度文库 编辑:神马文学网 时间:2024/04/19 18:00:10
(2007-05-11 14:41:44)转载
信息量与信息熵信息论量度信息的基本出发点,是把获得的信息看作用以消除不确定性的东西,因此信息数量的大小,可以用被消除的不确定性的多少来表示。设随机事件A在获得信息α之前结果的不确定性为H(A),得到信息α之后为Hα(A),那么包含在消息α中的关于事件A的信息量: I(α,A) = H(A) - Hα(A)
利用上表的数据可以求出包含在消息a,b,c.d中的关于事件A的信息量:
I(a,A) = kln2
I(b,A)= kln1.2
I(c,A)= 0
I(d,A)= kln6
事件A的Shannon熵H(A) 也可以理解为包含在A这个事件本身中的关于它自己的信息,因为事件发生后结果(d)就完全确定了,这时 Hd(A) = 0所以H(A) = I(d,A)= kln6。换句话说,事件A的Shannon熵H(A)等于这个事件发生之后,我们所得到的信息。
一般而言,Shnnon熵在随机事件发生之前,它是结果不确定性的量度;在随机事件发生之后,它是我们从该事件中所得到信息的量度(信息量)。因此,随机事件的Shnnon熵也叫信息熵,它是一个随机事件的不确定性或信息量的量度。与统计熵相似,在给定的实验条件下,所有可能的概率分布中,存在一个使信息熵Hn取极大值的分布(,,,……,) 。这称为最大信息熵原理。这一原理使我们能从所有可能的相容分布中挑选出使信息熵为极大值的分布——即最为常见的、实现概率最大的“最佳”分布。
信息量是信息论的中心概念,把熵作为一个随机事件的不确定性或信息量的量度,它奠定了现代信息论的科学理论基础,大大地促进了信息论的发展。
关于信息熵
设符号系统由n个符号构成,若每个符号出现的概率相等,即P=1/n,则出现某个符号的不肯定性为
H = k loga(1/P)=k loga(n)
H 称为该符号的熵值。令k = 1,则有
H = loga(n)
取 a = 2,则 H 单位为比特(bit)
取 a = e,则 H 单位为奈特(nat)
取 a = 10,则 H 单位为玳特(det)
今取a = 2,对二进制数苻,n=2,
H = log2(2)=1(bit)
不同的文字体系,n值不同,H值也不同。
作为符号系统,若每个字符出现的概率(频度)相等,则为无序状态,此时符号熵最大,称为最大熵。
Hmax = log2(n)
字符集的平均熵值为
H0 = -∑(i=1,n)( Pi log2 Pi)/ ∑Pi = -∑(i=1,n)( Pi log2 Pi)。
∑Pi = 1。H0 称为字符集的零阶熵,是以 pi 为权的字符集熵的加权平均值。如果不取平均值,则其值相当大。若取自然平均值,计算结果出入很大。
熵值首先取决于 n 值,其次取决于 Pi 的分布形态。
对于拼音文字,就字母而言,n值是有限的。如英文为26个(不计大小写),俄文为33个。若计及标点符号和其他符号,充其量也是30-40个左右。
而就词汇来说,那就数以万计,几乎是不计其数了。若像俄文那样,把每个词的词尾变化、词头附加等都分别计算为一个独立词汇,那n值就大得数以百万计了。
对于汉字,就常用和次常用字,或GB或GBK或Big5,n值大到上万。而由汉字组成的词汇(词语)就有十来万或十多万个了。
最大熵Hmax = log2 n 及零阶熵H0 = -∑(i=1,n)( Pi log2 Pi)计算示例。
对于二进制数符,符号集为0和1。n = 2。Hmax = 1。设一篇“文章”有1000个字符,每个数符出现500次,则零阶熵H0 = 1,等于最大熵;
若每个数符分别出现600次和400次,则H0 = 0.971,小于Hmax;
若每个数符分别出现800次和200次,则H0 = 0.772;
若每个数符分别出现900次和100次,则H0 = 0.469;
若每个数符分别出现990次和10次,则H0 = 0.081;
若每个数符分别出现999次和1次,则H0 = 0.011。
可见零阶熵与数符出现频度或称频率分布形态有关。
对于十进制数符,符号集为0123456789。Hmax = 3.32。
对于罗马字母,不计大小写,符号集为abcdefghijklmnopqrstuvwxyz。n = 26,Hmax = 4.70。
字母出现频率均匀递减,H0 = 4.47;特大特小分明,H0 = 4.07。
n = 30,Hmax = 4.91。罗马字母加几个符号。
n = 52,Hmax = 5.70。罗马字母计及大小写。
n = 70,Hmax = 6.13。罗马字母计及大小写加几个符号。
n = 6000,Hmax = 12.55。常用汉字及次常用汉字。
n = 8000,Hmax = 12.97。汉字。
n = 10000,Hmax = 13.29。汉字。
n = 80000,Hmax = 16.29。汉语或其它语言词语。
n = 100000,Hmax = 16.61。汉语或其它语言词语。
n = 1000000,Hmax = 19.93。汉语或其它语言词语。
有资料列出了几种拼音文字零阶熵值。
法语 3.98
意大利语 4.00
西班牙语 4.01
英语 4.03
德语 4.10
罗马尼亚语 4.12
俄罗斯语 4.35
汉字零阶熵值。
自古至今加权平均值 9.71
信息是个很抽象的概念。1948 年,香农提出了“信息熵”(shāng) 的概念,才解决了对信息的量化度量问题。
一条信息的信息量大小和它的不确定性有直接的关系。比如说,我们要搞清楚一件非常非常不确定的事,或是我们一无所知的事情,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了解,我们不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少。
那么我们如何量化的度量信息量呢?我们来看一个例子,马上要举行世界杯赛了。大家都很关心谁会是冠军。假如我错过了看世界杯,赛后我问一个知道比赛结果的观众“哪支球队是冠军”?他不愿意直接告诉我,而要让我猜,并且我每猜一次,他要收一元钱才肯告诉我是否猜对了,那么我需要付给他多少钱才能知道谁是冠军呢? 我可以把球队编上号,从 1 到 32, 然后提问: “冠军的球队在 1-16 号中吗?” 假如他告诉我猜对了, 我会接着问: “冠军在 1-8 号中吗?” 假如他告诉我猜错了, 我自然知道冠军队在 9-16 中。 这样只需要五次,我就能知道哪支球队是冠军。所以,谁是世界杯冠军这条消息的信息量只值五块钱。
当然,香农不是用钱,而是用 “比特”(bit)这个概念来度量信息量。一个比特是一位二进制数,计算机中的一个字节是八个比特。在上面的例子中,这条消息的信息量是五比特。(如果有朝一日有六十四个队进入决赛阶段的比赛,那么“谁世界杯冠军”的信息量就是六比特,因为我们要多猜一次。)读者可能已经发现, 信息量的比特数和所有可能情况的对数函数 log 有关。 (log32=5, log64=6。)
有些读者此时可能会发现我们实际上可能不需要猜五次就能猜出谁是冠军,因为象巴西、德国、意大利这样的球队得冠军的可能性比日本、美国、韩国等队大的多。因此,我们第一次猜测时不需要把 32 个球队等分成两个组,而可以把少数几个最可能的球队分成一组,把其它队分成另一组。然后我们猜冠军球队是否在那几只热门队中。我们重复这样的过程,根据夺冠概率对剩下的候选球队分组,直到找到冠军队。这样,我们也许三次或四次就猜出结果。因此,当每个球队夺冠的可能性(概率)不等时,“谁世界杯冠军”的信息量的信息量比五比特少。香农指出,它的准确信息量应该是
= -(p1*log p1 + p2 * log p2 + ... +p32 *log p32),
其中,p1,p2 , ...,p32 分别是这 32 个球队夺冠的概率。香农把它称为“信息熵” (Entropy),一般用符号 H 表示,单位是比特。有兴趣的读者可以推算一下当 32 个球队夺冠概率相同时,对应的信息熵等于五比特。有数学基础的读者还可以证明上面公式的值不可能大于五。对于任意一个随机变量 X(比如得冠军的球队),它的熵定义如下:

变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
有了“熵”这个概念,我们就可以回答本文开始提出的问题,即一本五十万字的中文书平均有多少信息量。我们知道常用的汉字(一级二级国标)大约有 7000 字。假如每个字等概率,那么我们大约需要 13 个比特(即 13 位二进制数)表示一个汉字。但汉字的使用是不平衡的。实际上,前 10% 的汉字占文本的 95% 以上。因此,即使不考虑上下文的相关性,而只考虑每个汉字的独立的概率,那么,每个汉字的信息熵大约也只有 8-9 个比特。如果我们再考虑上下文相关性,每个汉字的信息熵只有5比特左右。所以,一本五十万字的中文书,信息量大约是 250 万比特。如果用一个好的算法压缩一下,整本书可以存成一个 320KB 的文件。如果我们直接用两字节的国标编码存储这本书,大约需要 1MB 大小,是压缩文件的三倍。这两个数量的差距,在信息论中称作“冗余度”(redundancy)。需要指出的是我们这里讲的 250 万比特是个平均数,同样长度的书,所含的信息量可以差很多。如果一本书重复的内容很多,它的信息量就小,冗余度就大。
不同语言的冗余度差别很大,而汉语在所有语言中冗余度是相对小的。这和人们普遍的认识“汉语是最简洁的语言”是一致的。