分词算法模型学习笔记(二)——MEMM

来源:互联网 发布:郑州软件开发工资 编辑:程序博客网 时间:2024/06/05 02:56

分词算法模型学习笔记(二)——MEMM

Maximum Entropy Markov Model(MEMM,最大熵马尔科夫模型)

1.HMM的存在问题

生成式模型

需要准确地计算出观测序列X和隐藏状态序列Y的联合概率,然而这会导致以下两个问题:
1. 必须计算出所有的潜在可能路径的概率值大小(然后再挑概率值最大的那一个作为最终结果)
2. 对于某些未定义的观测值(如分词问题中的未登录词)需要统一设置一个默认的概率值

缺乏灵活性

如果对于某一个观测值,它可能并非由一个隐藏状态决定的,而是两个以上的隐藏状态综合作用而产生的,那么这时HMM就无能为力了。
比如说,对于词性标注问题,可能有这么两类非互斥的隐藏状态——1.是否首字母大写、2.是否以’er’结尾。

2.MEMM的特征

①判别式模型(最大熵模型)

对于给定的观测序列X,计算出各隐藏状态序列Y的条件概率分布
这种情况下,就不需要假设观测序列中各时刻的取值相互独立,也能算出概率值(因此比HMM更加合理)

MEMM模型图示
MEMM模型图示

要研究的目标函数:P(Y|X)=t[sPs(Yt|Xt)I(Yt1=s)]

其中,I()为指示函数,在·为真和假时分别取值为1和0

Ps(Yt|Xt)=1Z(Xt)exp(aλafa(Xt,s))

其中1Z(Xt)=sexp(aλafa(Xt,s))为归一化因子(很像Softmax函数)

λa为权重因子

fa(Xt,Yt)为特征函数

下面解释一下什么是特征函数:

特征函数

显然,此时a=< b,s>,且b为特征,s为目标状态

比如说,我们要给Usenet网站的FAQ页面的每一行文字打上标签(这些标签包括head、question、answer、tail)
然后我们有如下特征:

特征一览

对于特征函数f<beginswithnumber,question>,如果它对应的权重因子λ<beginswithnumber,question>越大说明begins-with-number→question越可信

 

②可以处理多种可同时出现的隐藏状态

 

③一些HMM的高效算法(如维特比算法)可以直接拿过来用

 

3.维特比算法

计算目标:

y^=argmaxyP(y|x)

定义局部概率δt(si|x)=maxy1yt1P(y1,,yt1,Yt=si|x1,,xt)

其含义可以解释为前t个时刻中,在已经知道观测序列为s1,,xt的情况下,对于所有以si结尾的隐藏状态跳转路径,最有可能的是哪个,而它的概率值就是δt(si|x)
同时因为要求的是这个概率值最大的隐藏状态序列本身,而不是它的概率值,因此还需要一个回退指针变量ψ用于记录状态的转移情况。

算法步骤:

  1. 定义局部概率的初始值(边界值)

δ1(x,si)=P(Y1=si)P(x1|si)

  1. 利用状态转移方程迭代计算当t=1,···,T-1时的局部概率值

δt+1(si|x)=maxsj[δt(sj|x)P(si|sj,xt+1)]

ψt(si|x)=argmaxsj[δt(sj|x)P(si|sj,xt+1)]

  1. 利用计算好了的局部概率值,确定回退起点

yT^=argmaxsjδT(sj|x)

  1. 利用回退指针变量ψ,逐个确定目标序列(t = T-1,···,1)

yt^=ψt(yt+1^|x)

原创粉丝点击