基于最大熵原理的语言建模Word格式文档下载.docx
《基于最大熵原理的语言建模Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于最大熵原理的语言建模Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
最大熵原理是E.T.Jayness于1950年提出的,其基本思想是:
假设{X}是一个事件空间,有许多种能够刻画该事件空间的信息源特征(或称约束),可以用来对事件的出现概率P(X)进行表述,假设每个约束i与一个约束函数fi(X)和一个数学期望Ki相联系,则该约束可以写为:
(5)
对于多个相容的约束条件,式(5)的唯一的最大熵解保证存在,其形式为:
(6)
其中λi为待求的未知常量,称为模型参数,它将使P(X)满足所有的约束。
由式(6)可以看出,事件X的出现概率完全由模型参数λi和特征约束函数fi(X)所决定,特征约束函数fi(X)可以看作是对信源特征i的表示,因此,求取事件X概率P(X)必须要考虑参数λi的计算和特征i(或特征约束函数fi(X))的选择。
特征选择是选择出对模型有表征意义的特征,以此建立一组约束;
参数估计则在这些约束下,用最大熵原理对每一个特征进行估值,最终建立起事件空间X的概率模型。
2.2模型参数估计
Danroch和Ratcliff于1972年提出了一个GIS(GeneralizedIterativeScalingAlgorithm)算法,对每一个特征fi,找出满足所有约束的i,下面是求取式(6)中i的迭代算法:
算法1GIS算法
输入:
特征集f={f1,f2,…,fn}
输出:
最优参数值1,2,…,n,最佳模型p(x)
过程:
(1)变量初始化:
给i赋任一初值
,i=1,2,…,n。
(2)按照式(6)计算初始P(X):
。
(3)在当前估计函数下按式(5)计算每个fi的期望,
i{1,2,…n},
(4)将实际计算得到的概率
与期望概率Ki进行比较,并按下列公式对i进行更新:
(7)
(5)根据新的i值计算概率估计函数P(X):
(8)
(6)若条件P(j+1)(X)-P(j)(X)≤ε满足,则迭代收敛,输出1,2,…,n和P(X),否则,转(3)。
3基于最大熵原理的自然语言建模
3.1问题描述
设自然语言是一个随机过程,如果将Y看作当前词的所有可能取值的有限集合,y∈Y可能是随机过程产生的输出,X为其上下文信息x组成的集合,则当前输出y的取值受上下文信息X的影响。
可以将(X,Y)看作是自然语言文本的一个事件空间。
例如,在中文文本校对中,当对文本中的错误词进行修正时,如果当前词的易混淆集或纠错建议候选集为Y,选择其中的哪一个词y替换错误词完全受上下文x∈X的影响。
上下文信息就是出错词周围的一些词。
构造随机模型的任务是要对语言的这一过程特性进行描述。
模型的目标是估计在给定上下文信息x出现的情况下,过程输出为y的条件概率,即P(y|x)。
3.2特征与约束
1.经验概率分布
语言建模的目标是构造能够对实际文本进行准确描述的统计模型,即它的概率分布与训练语料中的经验概率分布应该相符。
对于中文文本纠错,假设事先由人工完成了许多纠错的样例,即(x,y)样本。
经过对训练语料的统计,可以得到在特定的上下文中一个错误词应更换为哪个候选建议的频率,从而通过最大似然法,可得到训练语料中上下文信息与输出的经验概率分布
:
(9)
式中,Count(x,y)为(x,y)在训练语料中出现的次数。
2.特征与约束
随机过程的输出受上下文信息的影响。
如在文本纠错过程中,选用哪个候选建议对错误词进行修改,与其上下文有关。
我们可以将这些上下文看作是对当前词具有表征作用的特征。
例如,如果在文本中出现这样的句子,“他们所承担的任务非常艰匡”,“艰匡”是一个错误词,易混淆集中提供了“简况”、“艰巨”、“艰难”、“艰苦”,“艰辛”等多个候选建议,选择那一个呢?
显然,它的选择与上下文密切相关,其上下文信息有:
“非常”、“任务”等等,根据人的判断,“任务”对建议的选择非常重要,当然,我们还可以对文本中的每个词标上词性,词性也可以成为选取建议的特征。
上下文X中的特征信息可能有很多,如何选取有用的特征信息,在下面再作论述。
现先引入特征的定义:
定义1(特征)设x∈X,其长度≥1,它是当前过程输出y(∈Y)的上下文信息,如果x对y具有表征作用,则称(x,y)为模型的一个特征。
x长度为1时称为原子特征,否则称为复合特征。
可以引入一个定义于{0,1}域上的二值函数来表示特征:
(10)
建立语言模型时,信息特征的获取来自训练语料,语料中当前词的上下文中的所有词与当前词一起都可以作为模型的信息特征,因此与模型有关的候选信源特征组成的集合很大,其中只有一些特征是对模型有用的特征,这些特征组成的集合只是候选特征集合的一个子集,它可以较完整地表达训练语料中数据。
那么,如何判断哪些特征对语言模型有用呢?
可以通过所建模型与经验概率分布模型的一致性来判定特征的重要性。
如果有特征f,它在训练样本中关于经验概率分布
的数学期望可表示如下:
(11)
假设所建立的语言模型的概率分布为
,则特征f关于所建模型p的概率分布的数学期望为:
(12)
而
,由于所建模型应符合训练语料中的概率分布,所以,如果
表示x在训练样本中的经验分布,可令
,(12)变成
(13)
如果特征f对模型是有用的,则应要求(13)式所表示的特征f的数学期望与它在训练样本中的数学期望相同,即:
(14)
定义2(约束)称式(14)为语言建模的约束方程,简称约束。
这里需要指出特征与约束的区别:
特征是(x,y)的一个二值函数,而约束则是特征在所建模型中的数学期望与它在训练语料中的数学期望的方程。
3.3基于最大熵的模型遴选
假设存在n个特征fi(i=1,2,…,n),它们是语言建模过程中对输出有影响的统计单元,我们所建立的模型应满足所有这些特征,即所建立的模型p应属于这n个特征约束所产生的模型集合C:
(15)
这里,
表示所有的(无条件或无约束)概率分布模型空间,C是在加入特征约束条件后得到的
的一个子集。
满足约束条件的模型集C中有许多模型,我们所需要的是具有最均匀分布的模型,而条件概率p(y|x)均匀性的一种数学测量方法为条件熵,定义为:
(16)
其中0H(p)log|y|。
模型遴选的最大熵原理:
在满足n个约束条件的前提下,具有使H(p)值最大的模型即为具有最均匀分布的模型。
即
(17)
可以证明,满足(17)式的解具有如下Gibbs分布形式:
(18)
其中,
(19)
为保证对所有x,使得
的归一常量。
3.4模型参数估计
在(18)式的概率模型解中,i为特征fi的相应权重参数,估算参数i的值是建模过程的重要一步。
算法1给出的GIS算法是一个应用最大熵方法求解问题时的通用参数求解迭代算法,DellaPietra等人在将最大熵方法应用于自然语言处理时,对GIS进行了改进,提出了一个改进的IIS算法(ImprovedIterativeScalingAlgorithm),它更具有针对性。
给定训练语料,可统计出经验分布
、
,给定一组特征{fi,1≤i≤n},则计算参数i和概率模型p(y|x)的IIS算法如下:
算法2IIS参数估计算法
特征集f={f1,f2,…,fn},经验概率
最优参数值1,2,…,n,最佳模型p(y|x)
1.变量初始化i=0,i=1,2,…,n。
2.对每个fi,i{1,2,…n}
·
计算i,使其满足约束:
(20)
更新i的值,使i=i+i。
3.若i(i=1,2,…n)不收敛,转2;
否则,过程结束。
在本算法中,若对所有的(x,y),f#(x,y)=M(常量),则i可以由下式直接求出:
(21)
若f#(x,y)不是常量,则i需通过数值迭代法求得,可以采用牛顿法来求解。
经验概率
计算中,若出现0概率时,可采用一些平滑方法处理。
4.模型参数计算及说明
4.1模型参数求取算法
在开源代码中,采用GIS算法计算参数值λj,GIS算法要求对训练集中的每个实例,对实例中的任何(a,b)∈A×
B,特征函数之和为常数,即对每个实例均满足
(其中C为一常数)(22)
如果这个条件不能满足,则根据训练集选择C,C为在训练集所有实例中根据(22)式等号左边算得的最大值。
还需要增加一个修正特征(correctionfeature)fl,其中l=k+1,
(23)
GIS算法如下:
算法1#设共有n个特征函数,Ep[i]表示特征函数fi的模型期望,E
[i]表示特征函数fi的样本期望。
1、初始化:
λ[1..n]=0
2、计算特征函数的训练语料样本期望:
sum=0,E
[1..n]=0
foreachb
foreacha
foreachisuchthatfi(a,b)<
>
E
[i]+=fi(a,b);
sum+=fi(a,b);
endfor
endfor
foreachi
[i]=E
[i]/sum
3、计算特征函数的模型期望:
Ep[1..n]=0
z=0
sum[a]=0
sum[a]+=λ[i]*fi(a,b)
z+=exp(sum[a])
Ep[i]+=fi(a,b)*
(b)*exp(sum[a])/z
4、修正λ:
λ[i]+=1/C*ln(Ep[i]/E
[i])
5、若满足终止条件,则结束,否则执行第3步
终止条件为:
达到确定的循环次数(如100次),或者对数似然(L(p))的变化小到可以忽略时。
其中
,
(a,b)为(a,b)在样本中的出现概率。
4.2模型参数说明
以OpenNLPMaxEnt提供的java程序中的一个例子说明生成的模型参数文件中各项代表的意义。
训练语料样本文件为“gameLocation.dat”,其内容如下(序号是后加上的):
(1)SunnyHappyOutdoor
(2)SunnyHappyDryOutdoor
(3)SunnyHappyHumidOutdoor
(4)SunnySadDryOutdoor
(5)SunnySadHumidOutdoor
(6)CloudyHappyHumidOutdoor
(7)CloudyHappyHumidOutdoor
(8)CloudySadHumidOutdoor
(9)CloudySadHumidOutdoor
(10)RainyHappyHumidIndoor
(11)RainyHappyDryIndoor
(12)RainySadDryIndoor
(13)RainySadHumidIndoor
(14)CloudySadHumidIndoor
(15)CloudySadHumidIndoor
利用该训练语料主要是获取决定一项运动是在户内(Indoor)还是在户外(Outdoor)举行的知识。
所能获得的特征信息与天气和情绪有关(如Sunny、Happy)。
OpenNLPMaxEnt提供的java程序中有几个参数可以选择:
(1)cutoff:
选为特征的最小出现数,为0表示不使用此参数,所有出现的上下文都选为特征;
(2)USE_SMOOTHING:
是否使用平滑;
(3)_useSlackParameter:
是否使用修正特征函数。
当cutoff=0,USE_SMOOTHING=false时,特征函数为:
在训练语料样本文件中有(Sunny,Outdoor)的出现,所以有上面的特征函数f1(a,b),而由于没有(Sunny,Indoor)的出现,才没有特征函数
的出现。
根据这样的原则,得出了上面的f1~f12共12个特征函数。
修正特征函数如下:
(24)
当不使用修正特征函数时,运用GIS算法求得的模型参数文件“gameLocationModel.txt”的内容如下(序号是后加的):
(1)GIS
(2)3
(3)0.0
(4)2
(5)Outdoor
(6)Indoor
(7)3
(8)10
(9)501
(10)11
(11)7
(12)Sunny
(13)Happy
(14)Dry
(15)Humid
(16)Sad
(17)Cloudy
(18)Rainy
(19)9.941938146233399
(20)1.6418306061895096
(21)-3.5887761573494905
(22)-0.1721107426716194
(23)0.181********005283
.0593********
(25)0.1434603996212549
(26)-0.9360637474831563
(27)0.9636537581896802
(28)0.9145019760532005
(29)-1.61436968937009
(30)12.573539229046837
预测条件:
用来预测结果的条件,如“Sunny”、“Happy”
(1)GIS:
表示所用的算法为GIS算法
(2)3:
为C
(3)0.0:
为修正特征函数对应的参数
(4)2:
为输出结果数目,在义项标注中为词形或词性对应的标注记号的种数
(5)(6):
为输出结果,在义项标注中为词形或词性对应的标注记号,如对“斗争vn”的标注记号为“!
1$”、“!
2$”
(7)按预测条件对应的结果情况所做的分类数
(8)(9)(10):
按预测条件对应的结果情况所做的分类的具体情况
java程序对输出结果做了索引,其中Outdoor的索引为0,Indoor的索引为1
(8)10:
表示输出结果仅为0(Outdoor)的预测条件数为1
(9)501:
表示输出结果为0(Outdoor)和1(Indoor)两个输出结果的预测条件数为5
(10)11:
表示输出结果仅为1(Indoor)的预测条件数为1
(11)7:
预测条件数
(12)-(18):
各种预测条件
(19)-(30):
特征函数f1~f12所对应的特征参数