数学之美 —— 阅读笔记(三)
信息熵
一条信息的信息量和它的不确定性有直接关系。很简单的道理,当我们对某件事一无所知时,我们需要大量信息来了解这件事;相反我们很熟悉某件事了,我们也就不需要那么多信息了。
那么怎么量化信息呢?以足球为例,有64支队伍进行竞赛,那么“谁是冠军”的信息量就是 log264=6 比特;但实际情况是,已知其中某些队伍(类似巴萨皇马)胜出的概率大于另一些队伍(南非、韩国什么的),即概率不等时,“谁是冠军”的信息量会与概率平均分布时不同,那么信息熵的提出者 香农 给出了准确信息熵的计算方式:
根据这个定义不难看出,信息熵满足:不确定性越大,熵就越大的性质。
有了熵这个概念,那么我们来推算下一本 50 万字的中文书平均有多少信息量。运用信息熵的定义来估算,常用汉字中每个汉字的信息熵平均为 5 比特左右。所以一本 50 万字的中文书信息量大约为 250 万比特。如果用一个好的算法来压缩,能将文件大小压到 320KB 左右,而采用编码存储需要 1MB 的大小。这两者的差距被定义为 “冗余度”。
信息的作用
一个事物内部会存在随机性,即不确定性,记为 U。从外部消除这个不确定性的唯一办法就是引入信息 I,而这个信息的信息量取决于不确定性的大小,即要满足 I>U 才行。当 I<U 时,只能消除一部分不确定性,即新的不确定性为 U−I,如果没有信息,任何公式或数字游戏都无法排除不确定性,这一点需要谨记。而 几乎所有的自然语言处理、信息与信号处理的应用都是一个消除不确定性的过程。
以网页搜索为例来解释:
搜索的本质就是从几十亿网页中找到和关键词最相关的几个网页。几十亿个可能性,对应着很大的不确定性 U,得到的几个搜索结果基本去掉了所有的不确定性,这样看来,搜索也是一个消除不确定性的过程。
还有一点需要注意,信息可以是直接针对我们要了解的随机事件的,也可以是和我们关心的随机事件相关的其他事件,比如之前提到的 n-gram 模型就是这样一个例子。引入 条件熵 就能从数学上进行证明这些相关的信息也能消除不确定性了。
假设 X 和 Y 是两个随机变量,X 是我们需要了解的。假设我们现在知道了 X 的随机分布 P(X),那么也就知道了 X 的熵:H(X)=−∑x∈XP(x)logP(x)
假设我们现在还知道关于 Y 的一些信息,包括它和 X 一起出现的概率(联合分布),以及 Y 取不同值前提下 X 的分布(条件概率),那么定义在条件 Y 下 X 的条件熵为:
后面介绍互信息的时候会证明 H(X)≥H(X|Y) 这样一来就证明了相关信息的确能降低不确定性。
互信息
互信息的提出是为了更好地量化两个随机事件的相关性。其定义如下;
需要提到的是,互信息的取值范围为 [0,min(H(X),H(Y))],即当 X Y 完全相同时互信息为 1,完全不相关时取值为 0。
互信息可以解决机器翻译中词的二义性的问题,通过对大量文本的统计计算与词不同含义一同出现的互信息最大的词,然后在翻译时观察上下文哪类词更多。
相对熵
也称“交叉熵”,同样这一概念也是用来衡量相关性的,但和互信息不同,相对熵用来衡量两个取值为正数的函数的相似性,其定义如下:
相对熵具有三条重要的结论:
- 当两个函数完全相同时,相对熵为 0;
- 相对熵越大,函数差异越大;反之同理;
- 对于概率分布或概率密度函数,相对熵可以度量两个分布的差异性;
自然语言处理中,相对熵的应用很广泛:根据语法和语义上两个常用词在不同文本中的概率分布判断是否同义;根据两篇文章中不同词的分布,判断文章内容是否相近等。
运用条件熵和相对熵,贾里尼克定义了一个称为语言模型复杂度 (perplexity) 的概念,直接衡量语言模型的好坏。其物理意义在于给定上下文条件下,句子中每个位置平均可选词数。一个模型的复杂度越小,每个位置的词越确定,模型越好。