MaxEnt: 最大熵模型(Maximum Entropy Models)(二)

本文深入探讨了最大熵模型在自然语言处理中的应用,包括熵的概念、最大熵原理及其在模型中的作用,通过具体例子展示了如何使用最大熵模型进行事件识别。文章详细介绍了模型的构建过程、目标函数、约束条件以及如何利用拉格朗日乘子法求解最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转http://www.zhizhihu.com/html/y2011/3500.html

上面《MaxEnt: 最大熵模型(Maximum Entropy Models)(一)》其实就是讲了下熵,下面我们继续最大熵模型(Maximum Entropy Models)。

最大熵原理指出,当我们需要对一个随机事件的概率分布进行预测时,我们的预测应当满足全部已知的条件,而对未知的情况不要做任何主观假设。在这种情况下,概率分布最均匀,预测的风险最小。因为这时概率分布的信息熵最大,所以人们称这种模型叫“最大熵模型”。我们常说,不要把所有的鸡蛋放在一个篮子里,其实就是最大熵原理的一个朴素的说法,因为当我们遇到不确定性时,就要保留各种可能性。说白了,就是要保留全部的不确定性,将风险降到最小。----摘自《Google黑板报》作者:吴军

https://i-blog.csdnimg.cn/blog_migrate/c5f37d27385888d10fb4374f462ef3b9.png<a href="https://i-blog.csdnimg.cn/blog_migrate/c5f37d27385888d10fb4374f462ef3b9.png" target="_blank" class="cboxElement" rel="example4" 3500"="" style="text-decoration: none; color: rgb(1, 150, 227);">link

========

继续用【参考5】的例子。

“学习”这个词可能是动词,也可能是名词。可以可以被标为主语、谓语、宾语、定语……
x1 表示“学习”被标为名词,  x2 表示“学习”被标为动词。令 y1 表示“学习”被标为主语,  y2 表示被标为谓语, y3 表示宾语,  y4 表示定语。得到下面的表示:

p(x1)+p(x2)=1i=14p(yi)=1

如果没有其他的知识,根据信息熵的理论,概率趋向于均匀。所以有:

p(x1)=p(x2)=0.5p(y1)=p(y2)=p(y3)=p(y4)=0.25

但是在实际情况中,“学习”被标为定语的可能性很小,只有0.05。我们引入这个新的知识: p(y4)=0.05 ,在满足了这个约束的情况下,其他的事件我们尽可能的让他们符合自然,符合均匀分布:

p(x1)=p(x2)=0.5p(y1)=p(y2)=p(y3)=0.953

嗯,如果再加入一个知识,当“学习”被标作动词的时候,它被标作谓语的概率为0.95,这个其实是很自然的事情。都已经是动词了,那么是谓语的可能性就很大了:

p(y2|x2)=0.95

已经有了两个知识了,第二个还是条件概率的知识,那么其他的我们尽可能的让他们不受约束,不受影响,分布的均匀一些,现在应该怎么让他们符合尽可能的均匀分布呢?

其实就是使熵尽可能的大就行了。也就是有个分布p,他尽可能的把训练集中的知识表示出来,损失最小,并且还能够保证p的熵最大:

p=argmaxpH(p)

那约束是什么呢?

用概率分布的极大似然对训练语料表示如下,其中是 Count(x,y) 在语料中出现的次数,N为总次数:

p¯(x,y)=1N×Count(x,y)

在实际问题中,由于条件x和结果y取值比较多样化,为模型表示方便起见,通常我们将条件x和结果y表示为一些二制特征。对于一个特征 (x0,y0) ,定义特征函数:

f(x,y)={1:y=y0&x=x00:others

特征函数在样本中的期望值为:

p¯(f)=(xi,yi)p¯(xi,yi)f(xi,yi)

其中 p¯(x,y) 在前面已经数了,数数次数就行。

有了训练集,我们就能够训练一个模型出来,特征f在这个模型中的期望值为:

p(f)=(xi,yi)p(xi,yi)f(xi,yi)=(xi,yi)p(yi|xi)p(xi)f(xi,yi)=(xi,yi)p(yi|xi)p¯(xi)f(xi,yi)

其中 p¯(xi) 为x出现的概率,数数归一化就行。

好了,约束来了,有了样本的分布,有了模型,那么对每一个特征(x,y),模型所建立的条件概率分布要与训练样本表现出来的分布相同:

p(f)=p¯(f)

==========

目标函数有了,约束有了,归纳一下最大熵模型(Maximum Entropy Models)。

p=argmaxpPH(Y|X)

P={p|p是y|x的概率分布并且满足下面的条件},对训练样本,对任意给定的特征 fi

p(fi)=p¯(fi)

展开:

p=argmaxpP(x,y)p(y|x)p¯(x)log1p(y|x)

约束P为:

P=p(y|x)fi:(x,y)p(y|x)p¯(x)fi(x,y)=(x,y)p¯(x,y)fi(x,y)x:yp(y|x)=1

========

都齐了,该求解了吧?哈哈,有没有看过wiki上的关于拉格朗日乘子Lagrange Multiplier的问题,恰好这里面有个例子就是求最大熵的,哈哈。所以我们可以用拉格朗日乘子法来求解。

对于有k个约束的优化问题:

maxH(p)s.t.:Ci(p)=bi,i=1,2,...,k

可以引入k个拉格朗日算子

Λ=[λ1,λ2,...,λk]T

,那么拉格朗日函数为:

L(p,λ)=H(p)+i=1kλi[Ci(p)bi]

OK,咱们开始一步一步的带入求解 Lp=0

由于约束中有两部分组成,对于第二部分,我们引入拉格朗日算子为 γ :

L(p,Λ,γ)=(x,y)p(y|x)p¯(x)log1p(y|x)+    i=1kλi(x,y)(p(y|x)p¯(x)fi(x,y)p¯(x,y)fi(x,y))+   γyp(y|x)1

下面就是就偏微分=0计算最优解了:

Lp(y|x)=p¯(x)(log1p(y|x)1)+i=1kλip¯(x)fi(x,y)+γ=0

求得最优解的参数形式:

p(y|x)=eiλifi(x,y)+γp¯(x)1

但是里面还有参数,所以我们必须求得 γ Λ

巧妙的是我们发现最后节的后面部分有个类似的常数项:

eiλifi(x,y)+γp¯(x)1=eiλifi(x,y)eγp¯(x)1

而且有意思的是,前面问题的第二个约束中有:

x:yp(y|x)=1

从而:

yp(y|x)=y(eiλifi(x,y)eγp¯(x)1)=1eγp¯(x)1yeiλifi(x,y)=1eγp¯(x)1=1yeiλifi(x,y)=Z(x)

也就是式子中的关于 γ 的常数项我们用关于 Λ 的常数项进行代替了,这样参数就剩下一个了:

p(y|x)=Z(x)eiλifi(x,y)Z(x)=1yeiλifi(x,y)

那么剩下的一个参数 Λ 应该怎么进行求解呢?

解法以及最大熵模型与最大似然估计的关系在参考5中很详细,还有GIS以及IIS的方法进行求解,以后再写《MaxEnt: 最大熵模型(Maximum Entropy Models)(三)》。

有什么问题请留言。

参考:

1、A maximum entropy approach to natural language processing (Adam Berger)

2、A Brief MaxEnt Tutorial (Adam Berger)

3、Learning to parse natural language with maximum entropy models (Adwait Ratnaparkhi)

4、中科院刘群教授《计算语言学-词法分析(四)》

5、《最大熵模型与自然语言处理》:laputa,NLP Group, AI Lab, Tsinghua Univ.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值