机器学习 条件随机场CRF

原文:http://blog.csdn.net/u010487568/article/details/46485673

声明:本文是在《最优化方法》课程中阅读的Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data这篇文章后的总结。

CRF由来

条件随机场(CRF)这种用来解决序列标注问题的机器学习方法是由John Lafferty于2001年发表在国际机器学习大会ICML上的一篇经典文章所引入,对后人的研究起到了非常大的引领作用。特别是标注问题在很多自然科学领域有广泛应用,在自然语言处理领域对于自动分词、命名实体标注等问题都以这篇文章作为开山之作。

CRF的特性

1.判别式模型

CRF是一种概率无向图判别式模型,解决了HMM(隐马尔科夫)和MEMM(最大熵马尔科夫)模型在序列标注中的标注偏差(bias)问题。

2. 实用性高

CRF使用一个单独的指数模型来表示在给定观测序列条件下整个序列的标签的联合概率,不同状态下的不同特征能够相互进行平衡。同时,可以把CRF当做一个具有非规范化的转移概率的有限状态模型,使用MLE或者MAP进行学习之后可以得到一个定义良好的可能标注的概率分布。同时,训练的损失函数是凸函数,保证了全局收敛性,是无约束凸优化问题,具有非常好的实用性

模型详解

模型定义

随机变量 X 表示待标注的序列数据,随机变量 Y 表示序列数据对应的标签,其中 Y 的每一个分量 Yi 取值于一个有限个标签的集合 Y 。 
定义:给定图 G=(V,E) 表示概率分布 P(Y) ,即在图中顶点确定的随机变量 Y=(Yv)vV 属于图 G ,图中的边 eE 表示随机变量之间的依赖性。当随机变量 Yv 在给定条件 X 满足马尔科夫性质时,那么 (X,Y) 构成了一个条件随机场(CRF)。其中马尔科夫性质是指: 

P(Yv|X,Yw,wv)=P(Yv|X,Yw,wv)
其中的 wv 表示图中与节点 v 相连的节点 。 
在序列标注问题中,所有元素连接成为一条链式结构,因此定义中的图结构在处理序列标注问题时默认为线性链式结构,也就是 G=(V={1,2,...m}) E={(i,i+1),i=1,2...m1} ,定义中没有规定 X Y 有同样的结构,但是现实中一般假定 X Y 具有同样的结构,常使用的是 X=(X1,X2,...Xm) Y=(Y1,Y2,...Ym) 。 
根据上述假设,可以得出如下的线性链条件随机场: 
X=(X1,X2,...Xn) Y=(Y1,Y2,...Yn) 为线性链表示的随机变量序列,若在给定随机变量序列 X 的条件下,随机变量序列 Y 的条件概率分布 P(Y|X) 满足马尔科夫性 
P(Yi|X,Y1,...Yi1,Yi+1,....Yn)=P(Yi|X,Yi1,Yi+1)
那么 P(Y|X) 成为线性链条件随机场,标注问题中 X 表示观测序列, Y 表示对应的状态标记序列。

概率表示

根据Hammersley 和 Clifford于1971提出的随机场基本理论,可以得出上述条件概率分布由如下的形式 

P(y|x)=1Z(x)(eE,kλktk(e,y|e,x)+μksk(v,y|v,x))

其中 x 为标记序列, y 为标签序列, Z(x) 是归一化因子,使得上式可以表示为一个概率分布。 tk sk 分别表示转移特征函数和状态特征函数,前者定义在边上,后者定义在顶点上。二者都依赖于位置,是局部特征函数,一般使用取值为1和0的二值函数。 λk μk 分别是特征对应的权重,也是模型最终需要学习到的参数值。 也就是CRF最终表示的就是上述特征和和权重的组合

优化算法

模型的学习策略是最大似然估计,在一直训练集的前提下,可以得到经验分布 P^(X,Y) ,则训练数据的对数似然函数为 

LP^=log(x,yPw(Y|X)P^(X,Y))=x,yP^(X,Y)logPw(Y|X)

将条件随机场模型 Pw(Y|X) 带入上式即可得到 
L(w)=j=1NP^(Xj,Yj)i=1Kwifi(wj,yj)j=1NP^(xj)log(Zw(xj))

针对上述目标函数,需要求解其最大值,得到最优的权重值,从而就可以得到CRF模型。这是一个无约束优化问题,求解方式较多,但是在序列标注问题中涉及到的特征函数的维度会非常高,在实际实现中需要考虑高维问题。

IIS(论文中给出)

文中的作者给出的是改进的迭代尺度法(IIS)进行求解的,通过迭代不断优化目标函数的改变量的下界,达到最大化目标函数。详情可以参考论文介绍。

BFGS(自己给出)

由于上述问题是无约束优化问题,使用BFGS拟牛顿法可以明显降低运算步骤,同时对于数据维度特别大的问题时,可以使用有限内存的拟牛顿法L-BFGS进行计算。 
最大似然函数的无约束优化问题为 

maxwL(w)=maxwx,yP^(X,Y)logPw(Y|X)=maxwf(w)=x,yP^(x,y)logyexp(k=1Kwkfk(x,y))x,yP^(x,y)k=1Kwkfk(x,y)

梯度分量为 
fwi=x,yP^(x,y)Pw(y|x)fi(x,y)x,yP^(x,y)fi(x,y)

上面的计算中,需要训练样本中X,Y的联合经验分布,同时需要特征函数,其中的模型 Px(y|x) 根据前面的随机场理论直接使用特征函数和权重表示即可得到。因此BFGS方法实现起来就比较方便了。 
详细算法描述如下 
输入:特征函数f1,f2….fn,经验分布 P^(x,y) ,精度 ϵ ,最大迭代次数 n  
输出:最优参数值 w ,最优模型 Pw(y|x)  
(1)选定初始点w^(0),取 H0 为对称正定矩阵,k=0 
(2)计算 gk=g(w(0)) ,若 gk 满足精度要求或者达到最大迭代次数停止循环 
(3)求出迭代更新步长 pk=Hkgk  
(4)使用非精确的先搜索方法求出步长 αk ,使得 
f(w(k)+αkpk)=minα0f(w(k)+αpk)

(5)更新权重值 w(k+1)=w(k)+αkpk  
(6)计算 gk+1=g(w(k+1)) ,如果 gk+1 达到精度要求则返回结果;否则更新 
Hk+1=(IρkskyTk)Hk(IρkyksTk)+ρksksTk

其中, sk=w(k+1)w(k) yk=gk+1gk ρk=1yTksk 。计数器增加k=k+1,转到第(3)步进行循环。

开源工具

  1. CRF++,开源的C++实现,优化算法使用的是L-BFGS
  2. MALLET,通用的Java自然语言处理包,包含了分类、序列标注等多种算法
  3. NLTK,通用的python自然语言处理工具包,很多工具是从MALLET转换到python接口
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值