分词算法模型学习笔记(三)——CRF
Conditional Random Fields(CRF,条件随机场)
1.MEMM的存在问题
标注偏置
所谓的标注偏置就是更偏向于选择分支较少的路径,而不是全局概率更大但分支更多的真正正确路径。
如上图所示,虽然对于观测序列 x1,x2,x3 来说,隐藏状态序列 s0,s1,s2,s3 和 s0,s1,s4,s3 的出现频率会更高,但最后MEMM仍会选择分支较少的 s0,s5,s6,s3
问题的根源在于MEMM中的概率值只在局部做归一化,所以容易陷入局部最优。
2.CRF的特征
继承了MEMM的优点
同样是判别式模型,同样适用于多种非互斥隐藏变量同时存在的情况
克服了MEMM的标注偏置问题
由于所有的概率值均由全局归一化得出,因此可以得到真正的全局最优解
一些HMM的高效算法(如维特比算法)可以直接拿过来用
3.HMM和CRF之间的联系
4.维特比算法
计算目标:
y^=argmaxyP(y|x)=argmaxy[∑t,iλifi(Yt−1,Yt,X,t)+∑t,jμjgj(Yt,X,t)]
定义两个局部概率
ht(Yt−1,Yt,X)=∑iλifi(Yt−1,Yt,X,t)+∑jμjgj(Yt,X,t)
δk(x,sl)=maxy1⋅⋅⋅yk−1[∑t=1k−1ht(yt−1,yt,x)+hk(yk−1,sl,x)]
同时因为要求的是这个概率值最大的隐藏状态序列本身,而不是它的概率值,因此还需要一个回退指针变量 ψ 用于记录状态的转移情况。
算法步骤:
- 定义局部概率的初始值(边界值)
δ1(x,sl)=h1(sS,sl,x)
- 利用状态转移方程迭代计算当k=1,···,T-1时的局部概率值
δk+1(x,sl)=maxsm[δk(x,sm)+hk+1(sm,sl,x)]
ψk(x,sl)=argmaxsm[δk(x,sm)+hk+1(sm,sl,x)]
- 利用计算好了的局部概率值,确定回退起点
yT^=argmaxsmδT(x,sm)
- 利用回退指针变量 ψ ,逐个确定目标序列(t = T-1,···,1)
yt^=ψt(x,yt+1^)