统计自然语言处理---信息论基础

统计自然语言处理---信息论基础

                         李亚超     2010-10-29

简介

        信息论产生于20世纪,最早由Shannon(Claude Shannon)提出。 那时Shannon在研究如何在由噪音的通信链路上尽量提高数据的传输量,为了能够从理论上求出最大的数据压缩律,Shannon提出了熵(Entropy)的概念。注意这个概念很重要,是信息论的基本理论,以后会多次用到。这里我要 介绍的包括熵(Entropy),联合熵和交叉熵(Joint entropy and conditional entropy),互信息(Mutual information ),噪声信道模型(The noisy channel model),相对熵(Relative entropy or Kullback-Leibler divergence)。这些信息论上的理论在用到统计自然语言处理时,会产生意想不到效果。


2 信息论

2.1 熵(Entropy)

      熵(自信息,self-information)是度量信息量的一种方法。一条信息的信息量大小和他的不确定性有直接的关系,比如我们要搞清楚一个不一无所知的问题需要大量的信息,相反如果要我们已经对一件事有所了解,那么就不需要太多的信息就可以把它搞清楚。从这个意义上说熵就是平均不确定性的多少。


      熵的大小用bits来衡量,这里我们用得到数学公式log是以2为基底,并且定义和log0=0。

      离散型随机变量X包含一系列值{x1,x2,...,xn}的熵H为: H(X) =E(I (X) ) 。 E是期望值, I 是X的信息内容,I(X)是自我随机变量(I(X) is itself a random variable),如果p表示x的概率的质量函数( probability mass function),那么熵可以写为:

 

 

 

 

b是对数的底,通常为2,欧拉数e和10。当b=2时熵的单位为bit,b=e是熵的单位为nat,b=10时熵的单位为dit(gigit)。我们通常用的b=2。


2.2 联合熵和条件熵(Joint entropy and conditional entropy)

       联合熵是对一对离散的随机变量的信息量的度量,比如X,Y~P(x,y)

      

2.3 互信息(Mutual information)

  互信息 是信息熵的引申概念,它是对两个随机事件相关性的度量。下图表示熵和互信息之间的关系。

统计自然语言处理---信息论基础_第1张图片

 

 

图1:The relationship between mutual information  I and entropy  H.

        

 

 

 

 

 

 

 

 

 

 

  因此互信息的公式可以表述为:

 

 

 

 

 

 

 

 

2.3.1 互信息的用途— 词义的二义性( 歧义 )

         在自然语言处理中,经常要度量一些语言现象的相关性。比如在机器翻译中,最难的问题是词义的二义性(歧义性)问题。比如 Bush 一词可以是美国总统的名字,也可以是灌木丛。 至今为止,没有一种语法能很好解决这个问题,真正实用的方法是使用互信息。

        

        具体的解决办法大致如下:首先从大量文本中找出和总统布什一起出现的互信息最大的一些词,比如总统、美国、国会、华盛顿等等,当 然,再用同样的方法找出和灌木丛一起出现的互信息最大的词,比如土壤、植物、野生等等。有了这两组词,在翻译  Bush  时,看看上下文中哪类相关的词多就可以了。这种方法最初是由吉尔 (Gale) ,丘奇 (Church) 和雅让斯基 (Yarowsky) 提出的。


2.3.1 互信息的用途---求两个事件之间的独立性

        从图1可以看出,互信息表示两个变量之间的依赖性。除了这些,互信息可以更好地用于测量两个变量之间的独立性,因为:

       1 当两个变量独立时,互信息为0

       2 对于两个因变量,互信息的增长,不仅依赖于两个变量的依赖程度,而且和熵有关系。

       从I(X:Y)=H(X)-H(X|Y) = H(X)+H(Y)-H(X,Y)

         

     

 

 

  因为H(X|X)=0,可以得出H(X)=H(X)-H(X|X)=I(X:X), 这就是为什么把熵称为自信息(self-information ),为什么两个完全不同的变量的互信息并不是固定的,而是取决于他们的熵。


2.4 相对熵(Relative entropy or Kullback-Leibler divergence)

         

       对于两个概率质量函数(pmf)P、 Q ,他们的相对熵可以表示为:

       

      

 

 

  我们定义log(0/Q)=0,log(P/0)= 。在 信息论中这是除了熵以外另一个重要的概念, 在有些文献中它被称为成 交叉熵 。在英语中是 Kullback-Leibler Divergence, 是以它的两个提出者库尔贝克和莱伯勒的名字命名的。相对熵用来衡量两个正函数是否相似,对于两个完全相同的函数,它们的相对熵等于零。在用到两个概率分布函数时,要求由相同的概率空间。


       在自然语言处理中可 以用相对熵来衡量两个常用词(在语法上和语义上)是否同义,或者两篇文章的内容是否相近等等。利用相对熵,我们可以用到信息检索中最重要的一个概念:词频率-逆向文档频率(TF/IDF)。下面我们简单介绍一下。

    

       词频率-逆向文档频率(TF/IDF)最早用在信息检索中,用来确定信息和查询的相关性。简单的说,就是用户输入一个或多个关键词,然后系统统计所存贮的文本信息包含这个关键字的多少,凭直觉如果一个文本中出现所要求的关键字越多那么这个文本和用户所要求的信息相关性就越大。比如用户输入“西北民族大学”,如果在某个1000个词的网页中,西北出现了15词,民族出现了3次,大学出现了6次。那么词频分别为,0.015,0.003,0.006.这三个数相加就是原始预料和查询“西北民族大学”的简单的相关性度量。

       

        概括的说,如果一个查询包括关键词w1,w2,w3...wn.他们在一个网页中出现的词数分别为TF1,TF2,TF3...TFn。(TF:term frequency),那么这个查询和网页的相关性就是:TF1+TF2+TF3+...+TFn。

         通过观察很容易发现,如果一个关键词在网页很少出现,那么通过他可以很快锁定目标,那么它的权重应该大一些,反之相反。如果一个关键词w在Dw个网页中出现过,那么Dw越大,w的权重越小,反之亦然。在信息检索中使用最大的权重是“逆文本频率指数” (Inverse document frequency 缩写为IDF),它的公式为log(D/Dw)。利用 IDF,上述相关性计算个公式就由词频的简单求和变成了加权求和,即 TF1*IDF1 + TF2*IDF2 +... +TFN*IDFN。

其实IDF 的概念就是一个特定条件下、关键词的概率分布的交叉熵(Kullback-Leibler Divergence) 这样,信息检索相关性的度量,又回到了信息论。


2.5 噪音信道模型和HMM模型

       噪音信道模型由信息论的祖师 Shannon提出,目的是为了在噪音的信道下,以最少的编码空间来发送信息,并且还要根据接收到的信号恢复出原信息。模型如下。

统计自然语言处理---信息论基础_第2张图片

s1 , s2 , s3... 表示信息源发出的信号。 o1,o2,o3 ... 是接受器接收到的信号。通信中的解码就是根据接收到的信号 o1 , o2 , o3 ... 还原出发送的信号 s1 , s2 , s3...


      其实人们日常的语言交流也可以看成为信息的发送和接受。 很多自然语言处理问题都可以等同于通信系统中的解码问题 一个人根据接收到的信息,去猜测发话人要表达的意思。这其实就象 通信 中,我们根据接收端收到的信号去分析、理解、还原发送端传送过来的信息 。对应到机器翻译中这就是 翻译模型


     那么,怎么根据接收到的信息推测出原信息呢。 我们可以 用隐马克尔克夫模型 HMM, Hidden Markov Model 来解决这个问题。 机器 为例,当我们观测到 藏语句子 o1,o2,o3时,我们要根据这组 词语来推测汉语句子  s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知 o1,o2,o3,...的情况下,求使得条件概率P(s1,s2,s3,...|o1,o2,o3....) 达到最大值的那个句子 s1,s2,s3,...

    

当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式 证明如下, P(o|s)=P(o)P(s|o)/P(s),因为在给定条件下P(S)是个常数,所以Max(P(o|s))=Max(P(o)P(s|o))

所以 可以把上述公式等价变换成

P(o1,o2,o3,...|s1,s2,s3....) * P(s1,s2,s3,...)

P(o1,o2,o3,...|s1,s2,s3....) 表示某句话 s1,s2,s3...被读成 o1,o2,o3,...的可能性, 而

P(s1,s2,s3,...) 表示字串 s1,s2,s3,...本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为 s1,s2,s3...这个数列的可能性乘以 s1,s2,s3...本身可以一个句子的可能性,得出概率。


(读者读到这里也许会问,你现在是不是把问题变得更复杂了,因为公式越写越长了。别着急,我们现在就来简化这个问题。)我们在这里做两个假设:

第一,s1,s2,s3,... 是一个马尔可夫链,也就是说,si 只由 si-1 决定

第二,第 i 时刻的接收信号 oi 只由发送信号 si 决定(又称为独立输出假设, 即 P(o1,o2,o3,...|s1,s2,s3....) = P(o1|s1) * P(o2|s2)*P(o3|s3)...。

那么我们就可以很容易利用算法 Viterbi 找出上面式子的最大值,进而找出要识别的句s1,s2,s3,...。


       满足上述两个假设的模型就叫隐含马尔可夫模型。我们之所以用“隐含”这个词,是因为状态

s1,s2,s3,...是无法直接观测到的。


      隐含马尔可夫模型 (HMM) 的应用远不只在 机器翻译 中。在上面的公式中,如果我们把 s1,s2,s3,...当成中文,把 o1,o2,o3,...当成对应的 语音信号 ,那么我们就能利用这个模型解决 语音识别 问题; 如果我们把o1,o2,o3,...当成扫描文字得到的图像特征,就能利用这个模型解决印刷体和手写体的识别。


      P(o1,o2,o3,...|s1,s2,s3....)根据应用的不同而又不同的名称,在语音识别中它被称为“声学模型”(Acoustic Model), 在机器翻译中是“翻译模型” (Translation Model) 而在拼写校正中是“纠错模型” (Correction Model)。而P (s1,s2,s3,...) 就是我们在系列一中提到的语言模型。

你可能感兴趣的:(算法,文档,自然语言处理,语言,2010)