数学之美梳理(四)信息的度量和作用

我们常说信息有用,那么它的作用是如何直观,定量的体现出来呢?信息用途的背后是否有理论基础?

对于这个问题,香农在他著名的论文“通信的数学原理”中提出了信息熵的概念,才解决了信息的度量问题,并且量化出信息的作用。

信息熵

一条信息的信息量与其不确定性有着直接的关系。比如我们要搞清楚一件非常不确定的事情,就需要了解大量的信息。相反,如果我们对某件事了解较多,则不需要太多的信息就可以将它搞清楚。所以从这角度,可以认为,信息量就等于不确定性有多少。

那么如何量化信息的度量呢?假设在一个比赛中有32支参赛队伍,并且比赛结果已经出来了但是我们不知道,如何猜出谁是冠军呢?我们可能依次问“是否在1-16号中”,如果是,我们继续猜是否在“1-8号中”,如果他说不,那么我们自然知道冠军在“9-16号中”,这样只需要5次,我们就可以知道结果了。

基于这种方式,香农用比特来度量信息量,一个比特是一个二进制数字,我们可能已经发现,信息量的比特数和所有可能情况的对数函数log有关。

有些读者会发现,实际中可能并不需要猜这么多次,因为有的队伍是夺冠大热门,而有的不是,我们可以将这些队伍按照是否热门进行第一次分组。这样可能三到四次就可以得到结果。

因此当每支队伍夺冠的可能性不等时,总的信息量比5比特少,香农指出,它的准确信息量应该是:

H=(p1logp1+p2logp2++p32logp32)H = -(p_1 \cdot logp_1 + p_2 \cdot logp_2 + \ldots + p_{32}logp_{32})

其中,p1,p2,,p32p_1,p_2,\ldots,p_{32} 分别是这32支队伍夺冠的概率。香农把它称为“信息熵”,一般用符号H表示,单位是比特。当32支队伍夺冠概率相等时,对应的信息熵等于5比特。

对于任意一个随机变量X,它的熵定义如下:

H(X)=xXP(x)logP(x)H(X) = - \sum_{x \sub X} P(x)logP(x)

变量的不确定性越大,熵就越大。

信息的作用

信息和消除不确定性是相联系的。信息是消除系统不确定性的唯一办法。

一个事物内部会存在随机性,也就是不确定性,假定为U,而从外部消除这个不确定性唯一的办法就是引入信息I,而引入的信息量取决于这个不确定性的大小,即IUI \ge U 才行。

如果没有信息,任何公式或者数字的游戏都无法排除不确定性,这个朴素的结论非常重要。几乎所有的自然语言处理,信息与信号处理的应用都是一个消除不确定性的过程。

知道的信息越多,随机事件的不确定性就越小。这些信息,可以是直接针对我们要了解的随机事件,也可以是和我们关心的随机事件相关的的其他事件的信息。

在数学上可以严格地证明为什么这些“相关的”的信息也能够消除不确定性。为此,需要引入一个“条件熵”的概念。

假定X和Y是两个随机变量,X是我们需要了解的。假定我们现在知道了X的随机分布P(X)P(X) ,那么也就知道了X的熵:

H(X)=xXP(x)logP(x)H(X) = -\sum_{x \sub X} P(x)\cdot logP(x)

现在假定我们还知道Y的一些情况,包括它和X一起出现的概率,在数学上称为联合概率分布,以及在Y不同取值前提下X的概率分布,在数学上称为条件概率分布,则定义在Y条件下的条件熵为:

H(XY)=xX,yYP(x,y)logP(xy)H(X | Y) = - \sum_{x \sub X,y\sub Y} P(x,y)logP(x|y)

同理,我们可以定义有两个条件的条件熵:

H(XY,Z)=xX,yY,zZP(x,y,z)logP(xy,z)H(X|Y,Z) = - \sum_{x \sub X,y\sub Y,z \sub Z} P(x,y,z)logP(x|y,z)

可以证明H(X)H(XY)H(XY,Z)H(X) \ge H(X|Y) \ge H(X|Y,Z)

那么什么时候等号是成立的呢?等号成立说明增加了信息,不确定性却没有降低,这可能忙?答案是肯定的,当我们获取的信息和要研究的事物毫无关系时,等号就成立。

互信息

我们刚才提到过,当获取的信息和要研究的事物有关系时,才能帮助我们消除不确定性,但是,“有关系”这种说法不科学,最好能够量化表示。于是香农在信息论中提出了一个“互信息”作为两个概率事件相关性的度量。

假设有两个随机事件X和Y,它们的互信息定义如下:

I(X,Y)=xX,yYP(x,y)logP(x,y)P(x)P(y)I(X,Y) = \sum_{x \sub X, y \sub Y} P(x,y)log\frac{P(x,y)}{P(x)P(y)}

这个I(X,Y)I(X,Y) 其实就等于H(X)H(XY)H(X) - H(X|Y)

所以,所谓两个事件相关性的量化度量,就是在了解其中一个的前提下,对消除另一个X不确定性提供的信息量。

在自然语言处理中,两个随机事件,或者语言特征的互信息是很容易计算的。只要有足够的语料,就不难估计出互信息公式中的P(x,y),P(x,y),P(x)P(y)P(x,y),P(x,y),P(x)P(y)

机器翻译中,最难的两个问题之一是词义的二义性问题,比如Bush一词既可以是美国总统布什的名字,也可以是灌木丛。

那么如何正确翻译这些词呢?人们很容易想到要用语法,分析词句等等,但迄今为止,没有一种语法能够比较好地解决这个问题。

其实,真正简单且实用的方式就是使用互信息。具体的解决方法大致如下:首先从大量文本中找到和总统布什一起出现的互信息最大的一些词,如总统,美国,国会,华盛顿等等,再用同样的方法找到和灌木丛一起出现的互信息最大的词,比如土壤,植物,野生等。有了这两组词,在翻译Bush时,看看上下文中哪类相关的词躲就可以了。

相对熵

之前我们分别介绍了信息熵和互信息,它们是信息论的基础,而信息论在自然语言处理中也扮演着指导性的角色。这一节我们将介绍信息论中的另一个重要的概念——“相对熵”。

相对熵又被称为交叉熵。相对熵也被用于衡量相关性,但和互信息不同,他用来衡量两个取值为正数的函数的相关性,它的定义如下:

KL(f(x)g(x))=xXf(x)logf(x)g(x)KL(f(x)||g(x)) = \sum_{x \sub X} f(x) \cdot log\frac{f(x)}{g(x)}

大家可以不必关心公式本身,只要记住下面三条即可:

  1. 对于两个完全相同的函数,它们的相对熵等于0
  2. 相对熵越大,两个函数差异越大
  3. 对于概率分布或者概率密度函数,如果取值均大于0,相对熵可以度量两个随机分布的差异性

需要指出,相对熵是不对称的,即

KL(f(x)g(x))KL(g(x)f(x))KL(f(x)||g(x)) \ne KL(g(x)||f(x))

这样用起来不是很方便,所以詹森和香农提出一种新的相对熵的计算方式,将上面不等式两边取平均,即

JS(f(x)g(x))=12[KL(f(x)g(x))+KL(g(x)f(x))]JS(f(x)||g(x)) = \frac{1}{2}[KL(f(x)||g(x)) + KL(g(x)||f(x))]