信息是个相当宽泛的概念,很难用一个简单的定义将其完全准确的把握。然而,对于任何一个概率分布,可以定义一个称为熵(entropy)的量,它具有许多特性符合度量信息的直观要求。这个概念可以推广到互信息(mutual information),互信息是一种测度,用来度量一个随机变量包含另一个随机变量的信息量。熵恰好变成一个随机变量的自信息。相对熵(relative entropy)是个更广泛的量,它是刻画两个概率分布之间距离的一种度量,而互信息又是它的特殊情形。
——随机变量不确定度的度量
设p(x)为随机离散变量X的概率密度函数,x属于某个符号或者字符的离散集合 X:
p(x) = P(X = x), x ∈ X
熵表示单个随机变量的不确定性的均值,随机变量的熵越大,它的不确定性越大,也就是说,能正确估计其值的概率越小。熵的计算公式 :
将负号移入对数公式内部:
上式实际上表达的是一个加权求值的概念,权重就是随机变量X的每个取值的概率。
用E表示数学期望。如果X~p(x),则随机变量g(X)的期望值可表示为:
注:X的熵又解释为随机变量 的期望值,其中p(x)是X的概率密度函数。
例子:世界杯足球赛冠军、中文书的信息量和冗余度。
信息的作用在于消除不确定性,自然语言处理的大量问题就是寻找相关信息。
不确定性U,信息I,新的不确定性: U’= U - I
如果没有信息,任何公式或者数字的游戏都无法排除不确定性。合理利用信息,而非玩弄什么公式和机器学习算法,是做好搜索的关键。
例子:网页搜索
如果(X,Y)是一对离散随机变量,其联合概率分布密度函数为p(x,y),(X,Y)的联合熵H(X,Y)定义为:
已知随机变量X的情况下随机变量Y的条件熵:
上式实际上表示的是在已知X的情况下,传输Y额外所需的平均信息量。
例子:自然语言的统计模型,一元模型就是通过某个词本身的概率分布,来消除不确定因素;而二元及更高阶的语言模型还是用了上下文的信息,那就能准确预测一个句子中当前的词汇了。
根据熵的链式法则,我们有如下的计算公式:
H(X,Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)
所以有:
H(X) - H(X|Y) = H(Y) - H(Y|X)
这个差值称为随机变量X和Y之间的互信息(mutual information),用I(X;Y)表示。
互信息是一个取值在0到min(H(X), H(y))之间的函数,当X和Y完全相关时,取值为1;当二者完全无关时,取值为0。
互信息被广泛用于度量一些语言现象的相关性。例如可以用于词的聚类和语义消岐。
例子:机器翻译中词义的二义性问题
相对熵是两个随机分布之间距离的度量。在统计学中,它对应的是似然比的对数期望。相对熵D(p||q)度量当真实分布为p而假定分布为q时的无效性。
例如,已知随机变量的真实分布为p,可以构造平均描述长度为H(p)的码。但是如果使用针对分布q的编码,那么在平均意义上就需要H(p) + D(p||q)比特来描述这个随机变量。
给定两个概率密度函数p(x)和q(x),它们的相对熵(relative entropy)又称为Kullback-Leibler(KL)距离:
结论:
Google自动问答系统,采用类似方法衡量两个答案的相似性。
设 X~p(x),q(x)为我们估计的近似p(x)的一个概率分布,则p(x)和q(x)的交叉熵表示为:
因为H(X)的值一般是固定不变的,因此交叉熵的最小化等同于相对熵的最小化,即估计出概率分布和真实数据分布之间的差值。
模型的交叉熵越低,一般就意味着它在应用中的性能越好。
在设计语言模型时,我们通常用混乱度(perplexity)衡量一个语言模型的好坏。
语言模型是为了用上下文预测当前的文字,模型越好,预测的越准,那么当前文字的不确定性 就越小。
信息熵正是对不确定性的衡量,因此可以想象信息熵能够直接用来衡量语言模型的好坏。
当然,因为有了上下文的条件,所以对于高阶的语言模型,应该用条件熵。
如果再考虑从训练语料和真实应用的文本中得到的概率函数有偏差,就需要再引入相对熵的概念。
贾里尼克从条件熵和相对熵出发,定义了一个称为语言模型复杂度(Perplexity)的概念,直接衡量语言模型的好坏。复杂度有很清晰的物理含义,它是在给定上下文的条件下,句子中的每个位置平均可以选择的单词数量。一个模型的复杂度越小,每个位置的词就越确定,模型越好。
自然语言处理学习笔记
参考 《Elements of Information Theory》、《Foundations of Statistical Natural Language Processing》、 《统计自然语言处理》、《数学之美》
推荐一篇信息论的博文,写的非常好:Visual Information Theory