- 签证留学 |
- 笔译 |
- 口译
- 求职 |
- 日/韩语 |
- 德语
熵(entropy)和困惑度(perplexity)是用于评估N元语法系统的最普通的计量方法。熵是信息量的度量,在自然语言处理、语音识别和计算语言学中,熵都是非常有价值的。熵可以用来度量一个特定语法中的信息量是多少,度量给定语法和给定语言的匹配程度有多高,预测一个给定的N元语法中的下一个单词是什么。如果有给定的两个语法和一个语料库,我们可以使用熵来估计哪个语法与语料库匹配得更好。我们也可以使用熵来比较两个语音识别任务的困难程度,还可以使用它来测量一个给定的概率语法与人类语法的匹配程度。
熵的计算要求我们在所要预测的范围内(单词、字母和词类,我们称为x的集合)建立一个随机变量X,并且要有一个特定的概率函数,称为p(x),那么这个随机变量X的熵为:
从原则上说,对数可以使用任何底数。在此我们在所有计算中采用的底数都是2,因此,熵的就用比特(bit)来度量,因为计算比特时是以2为底数的。
对于计算机科学家来说,定义熵的最直观方法,就是把熵想像成对某一判断进行信息编码的比特数的下界,或者把熵想像成在最优编码中信息量的大小。
Cover and Thomas(1991)提出了如下的例子。假定我们想给Yonkers赛马场的赛马下赌注,但是Yonker赛马场距离我们太远,我们只好给赛马场登记赌注的人发一个短的消息,告诉他我们给哪匹马下赌注。假定有八匹马参加比赛。
给这个消息编码的一种方法是用二进制代码来表示马的号码;这样,号码为1的马的二进制代码是001,号码为2的马的二进制代码是010,号码为3的马的二进制代码是011,依次类推,号码为8的马的二进制代码是000。如果我们用一天的时间来下赌注,每匹马用比特来编码,每次比赛我们要发出3比特的信息。
我们能不能把这件事做得好一点呢?我们可以根据赌注的实际分布来传送消息,假定每匹马的先验概率如下:
图1
计算这些马的随机变量X的熵,我们就可以知道其比特数的下界,具体计算如下:
每次比赛平均为2比特的代码可以这样来编码:用最短的代码来表示我们估计概率最大的马,估计概率越小的马,其代码越长。例如,我们可以用0来给估计概率最大的马编码,按照估计概率从大到小的排列,其余的马的代码分别为:10,110,1110,111100,111101,111110和111111。