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

李亚超     2010-10-29

1 简介

信息论产生于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: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提出,目的是为了在噪音的信道下,以最少的编码空间来发送信息,并且还要根据接收到的信号恢复出原信息。模型如下。

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,...) 就是我们在系列一中提到的语言模型。

统计自然语言处理---信息论基础相关推荐

  1. 统计自然语言处理基础(一)

    基础认知 语言学的目的是为了能够描述和解释我们周围的语言现象. 人们对在自然语言处理中使用统计方法抱有的热情,在很大程度上是 因为他们看到了统计方法在解决实际问题时的前景,而这些问题正是传统方法无法解 ...

  2. 自然语言处理(2)-信息论基础

    自然语言处理-数学基础 概述 1.信息论基础 1.1熵 1.2 联合熵和条件熵 1.3 相对熵和交叉熵 1.4 互信息和双字耦合度 1.5 噪声信道模型 概述 本系列文章计划总结整理中国科学院大学宗成 ...

  3. 《统计自然语言处理》读书笔记 一.基础知识及概念介绍

    最近准备学习自然语言处理相关的知识,主要参考<统计自然语言处理·宗成庆>和<Natural Language Processing with Python>,推荐大家阅读.第一 ...

  4. 统计自然语言处理基础-第四章 基于语料库的工作(笔记)

    4 基于语料库的工作 统计自然语言处理的主要需求包括计算机.语料库和软件.计算机和语料库的变化非常快,没有必要放注意力在他们上面. 本章研究 语料格式以及在处理生语料时遇到的的问题.研究工作开始之前需 ...

  5. NLP汉语自然语言处理入门基础知识介绍

    NLP汉语自然语言处理入门基础知识介绍 自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部 ...

  6. 信奥中的数学:信息论基础

    详解机器学习中的熵.联合熵.条件熵.相对熵和交叉熵 详解机器学习中的熵.联合熵.条件熵.相对熵和交叉熵_Rank92的博客-CSDN博客 详解熵.最大熵.联合熵和条件熵.相对熵以及互信息之间的关系 详 ...

  7. 贝叶斯网专题1:信息论基础

    文章目录 贝叶斯网专题前言 第一部分:贝叶斯网基础 1.1 信息论基础 1.1.1 预备数学知识:Jensen不等式 1.1.2 熵 1.1.3 联合熵.条件熵.互信息 1.1.4 交叉熵和相对熵(K ...

  8. 一文让你完全弄懂逻辑回归和分类问题实战《繁凡的深度学习笔记》第 3 章 分类问题与信息论基础(上)(DL笔记整理系列)

    好吧,只好拆分为上下两篇发布了>_< 终于肝出来了,今天就是除夕夜了,祝大家新快乐!^q^ <繁凡的深度学习笔记>第 3 章 分类问题与信息论基础 (上)(逻辑回归.Softm ...

  9. 国科大UCAS胡包钢教授《信息论与机器学习》课程第二讲:信息论基础一

    来源:专知 信息论中最为基本的概念就是香农熵(第8页),由此可以导出信息论中其它各种定义,以至我们常规应用的其它经验式定义(以后会提到).学习信息论基础知识时要避免仅是概念与定义的简单记忆,要尽量结合 ...

  10. UA MATH566 统计理论4 贝叶斯统计基础1

    UA MATH566 统计理论4 贝叶斯统计基础1 贝叶斯公式 贝叶斯充分统计量 这一讲讨论贝叶斯统计的一些基础思想,会分成三个部分,第一部分讨论贝叶斯统计的设定:第二部分讨论贝叶斯统计的估计与假设检 ...

最新文章

  1. plsql 为空显示 0 的函数_记住这三个检测函数,彻底清除公式当中的0值
  2. 计算机中什么是适配器及作用,适配器是什么?适配器的作用主要有哪些
  3. python自动化运维快速入门-Python自动化运维快速入门
  4. js和python哪个好_Python与Node.JS:哪一个比较适合您的项目?
  5. java 并行_在使用Java并行流之前要三思而后行
  6. HDFS常用命令/API+上传下载过程(三)
  7. 【渝粤题库】陕西师范大学500009 微机原理
  8. SQL Server 2017 AlwaysOn AG 自动初始化(十六)
  9. python ascii转字符串_Python将混合ASCII代码转换为字符串
  10. 河南中睿保险中介系统环境升级配置纪录
  11. 教育学外文文献是哪里找的?
  12. 千兆以太网_接收模块设计_udp_rgmii_rx
  13. 图灵——如迷的解谜者
  14. java的下标循环_java的for下标循环遍历和foreach循环遍历测试
  15. T51:字符流中第一个未重复的字符(Java)
  16. Fritzing软件绘制Arduino面包板接线图传感器模块库文件273
  17. 【MM32F5270开发板试用】二、探测环境温度和光照度参数
  18. 绘制Excel字符画
  19. 豆豆趣事[2015年08月]
  20. npm install下载依赖项时报错 fatal: unable to access ‘https://github.com/nhn/raphael.git/‘: Failed to connect

热门文章

  1. Modbus 调试工具: Modbus poll与Modbus slave下载与使用(上)
  2. 浙江地图和杭州地图及其县市整理
  3. Jenkins整合Sonar
  4. 考勤机信息同步不到服务器,考勤机实时同步功能上线啦
  5. windows电脑借助多开软件实现ZALO程序多开
  6. PLTS中计算Skew(计算延时差:对内/对间)
  7. 钱包系列教程七】玩转 EOS 命令行钱包
  8. H5网页等链接被微信秒封(拦截、屏蔽、和谐)后最好的解决方法
  9. [置顶]       cocos2d-x2.2.5走四棋儿源码“开源”
  10. 免费报表工具 - RDP报表工具