Shannon怎样测定英语字母的熵值?

标签:
哈特利随机试验条件熵英语字母概率 |
第一,随机试验的可能结局n越大,这个随机试验的不定度也就越大,因而它的熵也就越大。
第二,如果我们同时做包含两个随机试验的复合试验,每一个随机试验有n个可能的结局(例如,同时掷两颗骰子),那么,这个复合试验有n2个结局,其熵等于 ,即等于只掷一颗骰子时的二倍,这与Hartley的看法完全一致。
第三,如果我们同时做包含两个随机试验的复合试验,一个随机试验有m个可能结局,另一个随机试验有n个可能结局(例如,投硬币时,m=2;掷骰子时,n=6),那么,这个复合试验有m·n个可能的等概率结局,也就是说,这个复合试验的熵应该等于log2mn,另一方面,我们又可以认为,这个复合试验结局的熵应该等于构成这个复合试验的两个随机试验结局的熵之和,即等于log2m + log2n。但是,我们知道,
可见,复合试验结局的熵,不论是把它看成一个统一的试验,还是看成两个随即试验的总和,都是相等的。
这些事实都说明了我们用log2n来度量熵的合理性。
我们把有n个可能的等概率结局的随机试验的熵记为H0,
这时的熵,叫做1比特。
如果随机试验有n个结局,而且,它们是不等概率的,那么,第i个结局的概率为pi,那么,这个随机试验的熵H1用下面的公式来计算:
1951年,Shannon首先应计算出英语字母的不等概率独立链的熵H1为4.03比特。
随机试验结局不等概率,减少了这个随机试验的不定度,因此,有不等式:
对于计算机科学工作者来说,定义熵的最直观的办法,就是把熵想像成在最优编码中一定的判断或信息编码的比特数的下界。
假定有八匹马参加比赛。给这个消息编码的一个办法是用二进制代码来表示马的号码;这样,号码为1的马的二进制代码是001,号码为2的马的二进制代码是010,号码为3的马的二进制代码是011,等等,号码为8的马的二进制代码是000。如果我们用一天的时间来下赌注,每一匹马用比特来编码,每次比赛我们要发出3比特的信息。
对于这些马的随机变量X的熵可以让我们知道其比特数的下界,计算如下:
http://s14/middle/72d083c7g9e4e7f7c129d&690
每次比赛平均为2比特的代码可以这样来编码:用最短的代码来表示我们估计概率最大的马,估计概率越小的马,其代码越长。例如,我们可以用0来给估计概率最大的马编码,按照估计概率从大到小的排列,其余的马的代码分别为:10,110,1110,111100,111101,111110,111111。
如果我们对于每一匹马的概率估计都是一样的,情况将如何呢?前面我们已经看到,如果对于每一匹马,我们都使用等长的二进制编码,每匹马都用3比特来编码,因此平均的比特数为3。这时的熵是一样的吗?是的,在这种情况下,每匹马的估计概率都是1/8。我们选择马的熵是这样计算的:http://s2/middle/72d083c7g9e4e81b450a1&690
与熵有密切关系的是“困惑度”(perplexity)这个概念。如果我们把熵H作为2的指数,那么,2H这个值就叫做困惑度。从直觉上,我们可以把困惑度理解为在随机试验中选择随机变量的加权平均数。因此,在等概率估计的8匹马之间进行选择(这时,熵 H=3比特),困惑度为23,也就是8。在概率有差异的8匹马之间进行选择(这时,熵H=2比特),困惑度是22,也就是4。显然,一个随机试验的熵越大,它的困惑度也就越大。
在自然语言处理中,熵和困惑度是用于评估N元语法模型的最普通的计量方法。
http://s6/middle/72d083c7g9e4e839fda05&690
http://s10/middle/72d083c7g9e4e8544e259&690
某个模型的交叉熵可以用来作为某个随机过程的极限熵的上界。我们可以使用这样的方法来估计英语的极限熵。
为什么我们要关心英语极限熵呢?
第一个原因是英语的极限熵将为我们对概率语法的试验提供一个可靠的下界。另一个原因是我们可以利用英语极限熵帮助理解语言中的哪一部分提供的信息最大。例如,判断英语的预测能力主要是依赖于词序,还是语义,还是形态,还是组成符号,还是语用方面的线索?这可以大大地帮助我们了解我们的语言模型应该着重研究哪一方面。
计算英语极限熵的方法通常有两种。
第一种方法是Shannon使用的方法,这是他在信息论领域的开创性工作的一部分。他的思想是利用受试人来构造一个信息试验,要求受试人来猜测字母,观察他们的猜测的字母中有多少是正确的,从而估计字母的概率,然后估计序列的熵值。
实际的试验是这样来设计的:我们给受试人看一个英语文本,然后要求受试人猜测下一个字母。受试人利用他们的语言知识来猜测最可能出现的字母,然后猜测下一个最可能的字母,如此等等。我们把受试人猜对的次数记录下来。Shannon指出,猜测数序列的熵与英语字母的极限熵是相同的。Shannon这种观点的直觉解释是:如果受试人做n个猜测,那么,给定猜测数序列,我们能够通过选择第n个最可能的字母的方法,重建原来的文本。这样的方法要求猜字母而不是猜单词,受试人有时必须对所有的字母进行穷尽的搜索!所以,Shannon计算的是英语中每个字母的极限熵,而不是英语中每个单词的极限熵。他报告的结果是:英语字母的极限熵是1.3比特(对于27个字母而言[26个字母加上空白])。Shannon 的这个估值太低了一些,因为他是根据单篇的文本(Dumas Malose的《Jefferson the Virginian》)来进行试验的。Shannon还注意到,对于其他的文本(新闻报道、科学著作、诗歌),他的受试人往往会猜测错误,因此这时的熵就比较高。
第二种计算英语的熵的方法有助于避免导致Shannon
例如,Brown(布朗)等在58,300万单词的英语文本上(293,181个“型”[type])训练了一个三元语法模型,用它来计算整个Brown语料库的概率(1,014,312个“例”[token])。训练数据包括新闻、百科全书、小说、官方通信、加拿大议会的论文集,以及其他各种资源。
大多数文献报道,包含在一个英语字母中的极限熵大约在 0.9296比特到1.5604比特之间,其平均值为 1.245比特,这个计算结果与Shannon测定的结果(1.3比特)相近,我们一般都采用这样的计算结果。
http://s16/middle/72d083c7g9e4e557cbb5f&690
1988年,北京航空学院计算机系刘源使用计算机自动查频计算出汉字的熵H1为9.71比特,1994年,新加坡国立大学计算机系赖金锭使用计算机计算出汉字的熵H1为9.59比特,他们的结果与冯志伟原来用手工查频方法猜测的结果是很接近的。