自然语言处理-数学基础
- 概述
- 1.信息论基础
- 1.1熵
- 1.2 联合熵和条件熵
- 1.3 相对熵和交叉熵
- 1.4 互信息和双字耦合度
- 1.5 噪声信道模型
概述
本系列文章计划总结整理中国科学院大学宗成庆老师《自然语言处理》课程相关知识,参考数目《统计自然语言处理》-第二版,宗成庆。
1.信息论基础
1.1熵
熵是信息论中的基本概念 ,又称为自信息(self-information)。表示信号源X每发送一个符号(不论发什么符号)所提供的平均信息量。熵经常被用来描述一个随机变量的不确定性,一个随机变量的熵越大,这个随机变量的不确定性越大;那么正确估计其随机变量值的可能性就越小。
如果X是一个离散型的随机变量,其概率分布p(x)=P(X=x),x∈Xp(x)=P(X=x),x\in Xp(x)=P(X=x),x∈X。X的熵H(X)为:
H(X)=−∑x∈Xp(x)log2p(x)H(X)=-\sum_{x\in X}p(x)\log_{2}p(x) H(X)=−x∈X∑p(x)log2p(x)
约定:0log20=00log_20=00log20=0。对数以2为底时,熵的单位为比特(bit)。
定性理解:熵越大不确定性越大。
随机实验1:掷一枚均匀的硬币,结果等可能的出现正反两面,即P(X=正面)=0.5,P(X=反面)=0.5P(X=正面)=0.5,P(X=反面)=0.5P(X=正面)=0.5,P(X=反面)=0.5,则
H(X)=−(0.5log20.5+0.5log20.5)=1H(X)=-(0.5\log_20.5+0.5log_20.5)=1H(X)=−(0.5log20.5+0.5log20.5)=1
随机实验2:掷一枚不均匀的硬币(一面镀铅),结果不等可能的出现正反两面,其中P(X=正面)=0.3,P(X=反面)=0.7P(X=正面)=0.3,P(X=反面)=0.7P(X=正面)=0.3,P(X=反面)=0.7,则
H(X)=−(0.3log20.3+0.7log20.7)=0.88H(X)=-(0.3\log_20.3+0.7log_20.7)=0.88H(X)=−(0.3log20.3+0.7log20.7)=0.88
实验1等可能的出现正反面,不难理解出现其正面的不确定性比实验2中出现正面的不确定性大,通过计算,实验1结果的熵确实比实验二结果的熵大。
1.2 联合熵和条件熵
联合熵: 描述一对随机变量所需要的平均信息量。一对离散型随机变量X,Y的联合概率概率分布为p(x,y)p(x,y)p(x,y),X,Y的联合熵为:
H(X,Y)=−∑x∈X∑y∈Yp(x,y)log2p(x,y)H(X,Y)=-\sum_{x\in X}\sum_{y\in Y}p(x,y)log_2p(x,y)H(X,Y)=−x∈X∑y∈Y∑p(x,y)log2p(x,y)
条件熵: 给定随机变量X的条件下,随机变量Y的熵:
H(Y∣X)=∑x∈Xp(x)H(Y∣X=x)=∑x∈Xp(x)[−∑y∈Yp(y∣x)log2p(y∣x)]=−∑x∈X∑y∈Yp(x)p(y∣x)log2p(y∣x)H(Y|X)=\sum_{x\in X}p(x)H(Y|X=x)=\sum_{x\in X}p(x)[-\sum_{y\in Y}p(y|x)log_2p(y|x)]=-\sum_{x\in X}\sum_{y\in Y}p(x)p(y|x)log_2p(y|x)H(Y∣X)=x∈X∑p(x)H(Y∣X=x)=x∈X∑p(x)[−y∈Y∑p(y∣x)log2p(y∣x)]=−x∈X∑y∈Y∑p(x)p(y∣x)log2p(y∣x)
连锁规则: 联合熵可以表示为条件熵与熵的和,通过数学变换:
H(X,Y)=−∑x∈X∑y∈Yp(x,y)log2p(x,y)=−∑x∈X∑y∈Yp(x,y)log2[p(y∣x)p(x)]H(X,Y)=-\sum_{x\in X}\sum_{y\in Y}p(x,y)log_2p(x,y)=-\sum_{x\in X}\sum_{y\in Y}p(x,y)log_2[p(y|x)p(x)]H(X,Y)=−x∈X∑y∈Y∑p(x,y)log2p(x,y)=−x∈X∑y∈Y∑p(x,y)log2[p(y∣x)p(x)]
=−∑x∈X∑y∈Yp(x,y)[log2p(y∣x)+log2p(x)]=-\sum_{x\in X}\sum_{y\in Y}p(x,y)[log_2p(y|x)+log_2p(x)]=−x∈X∑y∈Y∑p(x,y)[log2p(y∣x)+log2p(x)]
=−∑x∈X∑y∈Yp(x,y)log2p(y∣x)+−∑x∈X∑y∈Yp(x,y)log2p(x)=-\sum_{x\in X}\sum_{y\in Y}p(x,y)log_2p(y|x)+-\sum_{x\in X}\sum_{y\in Y}p(x,y)log_2p(x)=−x∈X∑y∈Y∑p(x,y)log2p(y∣x)+−x∈X∑y∈Y∑p(x,y)log2p(x)
=−∑x∈X∑y∈Yp(x)p(y∣x)log2p(y∣x)+−∑x∈X∑y∈Yp(x,y)log2p(x)=-\sum_{x\in X}\sum_{y\in Y}p(x)p(y|x)log_2p(y|x)+-\sum_{x\in X}\sum_{y\in Y}p(x,y)log_2p(x)=−x∈X∑y∈Y∑p(x)p(y∣x)log2p(y∣x)+−x∈X∑y∈Y∑p(x,y)log2p(x)
=H(Y∣X)+H(X)=H(Y|X)+H(X)=H(Y∣X)+H(X)
同理可以推导:
H(X,Y)=H(Y)+H(X∣Y)H(X,Y)=H(Y)+H(X|Y)H(X,Y)=H(Y)+H(X∣Y)
1.3 相对熵和交叉熵
(之后公式中底数2将被省略)
相对熵: 又称为KL散度,用于衡量两个随机分布的差距。当两个随机分布相同时其相对熵为0.当两个随机分布的差别增加时,其相对熵也增加 。两个概率分布p(x),q(x)p(x),q(x)p(x),q(x)d的相对熵为:
D(p∣∣q)=∑x∈Xp(x)logp(x)q(x)D(p||q)=\sum_{x\in X}p(x)log \frac{p(x)}{q(x)}D(p∣∣q)=x∈X∑p(x)logq(x)p(x)
KL散度不对称与不满足三角不等式例子博客:https://blog.csdn.net/qq_44702847/article/details/95190388
交叉熵: 用于衡量估计模型与真实概率分布之间的差异,随机变量X~p(x),q(x)为p(x)的近似概率分布,则随机变量X与模型q之间的交叉熵为:
H(X,q)=−∑xp(x)logq(x)H(X,q)=-\sum_xp(x)logq(x)H(X,q)=−x∑p(x)logq(x)
通过数学推导可得,交叉熵=随机变量的熵+真实分布与模型分布的差距:
H(X,q)=H(X)+D(p∣∣q)H(X,q)=H(X)+D(p||q)H(X,q)=H(X)+D(p∣∣q)
分析:因为,在同一随机变量的前提下,真实分布与模型分布的差距(即相对熵)越小越好;所以,真实分布与模型分布之间的交叉熵越小,估计模型越逼近真实概率分布。
困惑度: 在实际应用中经常用困惑度来代替交叉熵衡量语言模型的好坏(交叉熵计算的时候会过小溢出?)给定语言L的样本l1n=l1...lnl_1^n=l_1...l_nl1n=l1...ln,L的困惑度PPqPP_qPPq为:
PPq=2H(L,q)≈2−1nlogq(l1n)=[q(l1n)]−1nPP_q=2^{H(L,q)}\approx 2^{-\frac{1}{n}logq(l_1^n)=[q(l_1^n)]^{-\frac{1}{n}}}PPq=2H(L,q)≈2−n1logq(l1n)=[q(l1n)]−n1
小结:语言模型设计任务就是:寻求与真实概率分布差距较小的模型,也就是要寻找交叉熵较小的模型,也就是要寻找困惑度较小的模型。
1.4 互信息和双字耦合度
互信息: 定义:
I(X;Y)=H(X)−H(X∣Y)I(X;Y)=H(X)-H(X|Y)I(X;Y)=H(X)−H(X∣Y)
I(x;y)I(x;y)I(x;y)表示在知道了Y的值之后X不确定量的减少程度。
经过推导:
I(X;Y)=∑x∈X∑y∈Yp(x,y)logp(x,y)p(x)p(y)I(X;Y)=\sum_{x\in X}\sum_{y\in Y}p(x,y)\log \frac{p(x,y)}{p(x)p(y)}I(X;Y)=x∈X∑y∈Y∑p(x,y)logp(x)p(y)p(x,y)
例子:汉语分词问题:利用互信息估计两个汉字结合强度,互信息越大表示两个汉字之间的结合越紧密,越有可能成词。反之断开的可能性较大。 当两个汉字x和y 的关联度较强时,其互信息的值I(x,y)>0I(x,y)>0I(x,y)>0;关系较弱时I(x,y)≈0I(x,y)\approx 0I(x,y)≈0.。当I(x,y)<0I(x,y)<0I(x,y)<0时,x与y称为互补分布。
互信息统计的是两个汉字连续出现在一个词中的概率,有些汉字单个使用时跟频繁,连续与其他字在一起成词的情况较少,但是,一旦连续在一起出现很有可能会成词。这中情况下两个汉字之间的互信息很小。用互信息来判断,该字对应该分开。
因为,互信息在上述情况下并不能很好工作。所以,就有学者提出双字耦合度的概念。
双字耦合度:
Couple(ci,ci+1=N(cici+1)N(cici+1)+N(C(...ci∣ci+1...)))Couple(c_i,c_{i+1}=\frac{N(c_ic_{i+1})}{N(c_ic_{i+1})+N(C(...c_i|c_{i+1}...))}) Couple(ci,ci+1=N(cici+1)+N(C(...ci∣ci+1...))N(cici+1))
其中:ci,cI+1c_i,c_{I+1}ci,cI+1是有序字对。N(cici+1)N(c_ic_{i+1})N(cici+1)表示字符串ci,cI+1c_i,c_{I+1}ci,cI+1成词的次数,N(C(...ci∣ci+1...))N(C(...c_i|c_{i+1}...))N(C(...ci∣ci+1...))表示字符串ci,cI+1c_i,c_{I+1}ci,cI+1不成词(cic_ici为上一个词的词尾, ci+1c_{i+1}ci+1为下一个词的词头)的次数。双字偶尔度考虑的是两个字连续出现的情况下,两者成词的概率,有效规避互信息将二者不连续出现的次数也考虑在计算式中所造成的麻烦。
1.5 噪声信道模型
在信号传输的过程中要进行双重性处理:一方面尽量消除冗余,另一方面增加冗余利于恢复信号。噪声信道模型的目标就是优化噪声信道中信号的吞吐量和准确率,其基本假设是:一个信道的输出以一定的概率依赖于输入。
信道容量:
C=maxp(x)I(X;Y)C=\max_{p(x)}I(X;Y)C=p(x)maxI(X;Y)
依据上式定义,我们能够设计一个输入编码器X,其概率分布为p(x),其使得输入与输出之间的互信息达到最大值。那么,我们的设计就达到了信道的最大传输容量。在语言处理中,我们不需要进行编码,只需进行解码,使得系统的输出更加接近与输入。