信息论在不光在通信领域有着广泛的应用,其在自然语言处理中仍然有着广泛的应用,甚至可以说其对nlp有着指导性的意义。鉴于此,对于信息论的基本概念做一下总结是很有必要的。
信息熵
我们知道,今天处在一个信息化的社会,那么不同的事物,大到比如语言文字、小到猜谜游戏,它们的信息量怎样去衡量呢?信息论的创始人香农提出了一个思路,一个事物的信息量可以用其不确定性来衡量,依据这个观点,信息熵的引出也就非常自然了。举个例子,世界杯有32只球队,假设我们对这32个球队没有先验知识,盲猜那个队伍会夺冠,学过二分搜索的朋友们应该很容易发现我们需要 log32 = 5 次就一定可以猜到冠军是哪只球队。直觉上,我们是可以用盲猜的次数来代表信息量的,以上的问题信息量为5,单位为比特。那么有人要问了,大多情况下我们并非对球队一无所知,如果我们优选选择搜索夺冠热门,很可能不需要5次就能猜中答案,这时信息量是多少呢?香农指出,其信息为:
p1,p2,...p32为各个球队夺冠的概率,香农称其为信息熵。我们给出信息熵的定义,对于任意的一个随机变量,它的信息熵为:
x
对于连续的随机变量,我们可以改用积分符号,这里不做赘述。
消除不确定性
一个事物内部会存在随机性,也就是不确定性,假设为U,而从外部消除这个不确定性唯一的办法是引入信息I,而需要引入的信息量取决于这个不确定性的大小,即才行。当
时,这些信息可以消除一部分不确定性,也就是新的不确定性。
反之,如果没有信息,任何公式或者数字的游戏都无法排除不确定性。
但是问题来了,根据之前的介绍,U我们可以通过事物的不确定性来衡量。但是怎么衡量呢?总不能用不确定性来定义"用来消除不确定性"的信息(information)。
1. 条件熵
上面提出的问题暂且放一下,我们先来看条件熵的定义。条件概率相信大家都是熟悉的,说的是已知随机变量Y的情况下,随机变量X的概率。类似的,我们可以定义条件熵,也就是已知事件Y的信息,X的不确定性:
后面我们会证明H(X|Y) <= H(X),直觉上也很好理解,但凡Y和X是有一定相关性的,知道了Y的信息,那么X的不确定性自然会减少。如果X和Y完全不相关,知道了Y自然也不会对X的不确定性有什么影响。
2. 互信息
有了条件熵的定义,那么,两个随机事件之间的相关程度怎样来衡量呢。这里给出一个思考的角度:两个随机事件X和Y的相关度(有方向性)的量度,就是在了解了其中一个事件Y的前提下,对消除另一个事件X不确定性所提供的信息。按照这个角度,我们定义一个新的量,互信息:
我们可以很容易的推导得出:
我们回到最开始提出的问题,怎样去衡量信息I?按照定义,互信息正是给不确定性带来信息的那个量。
3. 相对熵(或者叫KL散度、交叉熵)
信息论中另外一个重要的概念是“相对熵”,它用来衡量两个取值为正数(注意是正数)的函数(PDF正符合这种描述)的相似性:
从离散的角度来考虑,公式转化为:
关于相对熵,我们需要记住关于它的三个结论:
1. 完全相同的函数,它们的相对熵为0
2. 相对熵越大,两个函数差异越大
3. 相对熵可以衡量两个概率密度函数,或者说两个概率分布之间的差异。
附录
1. 证明: 恒成立。依据Jensen不等式,我们有
2. 证明:互信息恒大于0。对于互信息,我们有:
显然,其恒大于0