天天看点

NLP-初学条件随机场(CRF)

  • 说明:学习笔记,内容参考《机器学习》《数学之美》和七月在线课件

条件随机场

定义1:

条件随机场(conditional random field,简称CRF)是一种判别式无向图模型。生成式模型是直接对联合分布进行建模,而判别式模型则是对条件分布进行建模,隐马尔可夫模型就是生成式模型。——周志华《机器学习》

定义2:

条件随机场模型是Lafferty于2001年,在最大熵模型和隐马尔可夫模型的基础上,提出的一种判别式概率无向图学习模型,是一种用于标注和切分有序数据的条件概率模型。

普遍意义上的条件随机场:

NLP-初学条件随机场(CRF)

模型解释:

①条件随机场保留了隐含马尔可夫模型的一些特性,比如图中的 y1,y2,.. y 1 , y 2 , . . 等状态的序列还是一个马尔可夫链。

②在图中,顶点 x1,y1 x 1 , y 1 代表一个个随机变量,顶点之间的弧代表他们之间的依赖关系,采用概率分布 P(x1,y1) P ( x 1 , y 1 ) 来描述。

③它的特殊性在于变量之间要遵守马尔可夫假设,即每个状态的转移概率只取决于相邻的状态,这一点,它和贝叶斯网络相同。不同之处在于贝叶斯网络是有向图,而条件随机场是无向图,

1.生成式模型和判别式模型

o,s分别代表观测序列和标记序列

生成式模型
构建o和s的联合分布p(s,o),可以根据联合概率来生成样本,如HMM,BNs,MRF。
缺点:目标分类问题中容易产生较大的错误率
优点:实际上带的信息比判别模型丰富;能更充分利用先验知识;模型可以通过增量学习得到
判别式模型
构建o和s的条件分布p(s|o),因为没有s的知识无法生成样本,只能判断分类,如SVM,CRF,MEMM。
缺点:不能反映训练数据本身的特性
优点:分类边界更灵活;能清晰分辨出多类或某一类与其他类之间的差异特征;适用于较多类别的识别
二者关系
由生成模型可以得到判别模型,但由判别模型得不到生成模型。

2.词性标注

除了上一章介绍的HMM进行词性标注外,也可以使用条件随机场进行词性标注。正如分类器所做,首先需要设定一组特征方程。

①CRF的特征函数

每个特征函数的输入包括:

  • 一个句子 s s
  • 词在句子中的位置ii
  • 当前词的标签 li l i
  • 前一个词的标签 li−1 l i − 1

②从特征到概率

  • 为我们每个特征函数 fi f i 设置一个权重值 λj λ j (通过训练学习得到这些权重值),给定一个句子s,可以通过累加句中所有词加权后的特征来为s的打标结果打分:

    score(l|s)=∑j=1m∑i=1nλjfj(s,i,li′,li−1′) s c o r e ( l | s ) = ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i ′ , l i − 1 ′ )

    注:第一个求和是对遍历特征方程 j j 的求和,第二个球和是对句子里面的每一个位置ii进行遍历求和。

  • 最终,通过求指数与归一的方式将得分转化为0,1之间的概率值:

    p(l|s)=exp[score(l|s)∑l′exp[score(l′|s)]=exp[∑mj=1∑ni=1λjfj(s,i,li,li−1)]∑l′exp[∑mj=1∑ni=1λjfj(s,i,li′,li−1′)] p ( l | s ) = e x p [ s c o r e ( l | s ) ∑ l ′ e x p [ s c o r e ( l ′ | s ) ] = e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i , l i − 1 ) ] ∑ l ′ e x p [ ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i ′ , l i − 1 ′ ) ]

    注:逻辑回归是分类问题的对数线性模型,CRF是序列标注问题的对数线性模型。

③权重学习

学习CRF权重,以梯度上升方法为例:
有一组训练样本(包括句子和相关的词性标注标签结果);先为我们的CRF模型随机初始化权重值;为了使这些随机初始的权重最终调整为正确的值,需要遍历每个训练样本,然后执行:
  • 遍历每个特征函数 fi f i ,并为 λi λ i 计算训练样本的对数概率梯度值:

    ∂∂wjlogp(l|s)=∑j=1mfi(s,j,lj,lj−1)−∑l′p(l′|s)∑j=1mfi(s,j,lj′,lj−1′) ∂ ∂ w j l o g p ( l | s ) = ∑ j = 1 m f i ( s , j , l j , l j − 1 ) − ∑ l ′ p ( l ′ | s ) ∑ j = 1 m f i ( s , j , l j ′ , l j − 1 ′ )

  • 梯度公式中第一项是特征 fi f i 在正确标注下的贡献,梯度公式中的第二项是特征 fi f i 在当前模型中的贡献。
  • 将 λi λ i 朝着梯度方向移动:

    λi=λi+α[∑j=1mfi(s,j,lj,lj−1)−∑l′p(l′|s)∑j=1mfi(s,j,lj′,lj−1′)] λ i = λ i + α [ ∑ j = 1 m f i ( s , j , l j , l j − 1 ) − ∑ l ′ p ( l ′ | s ) ∑ j = 1 m f i ( s , j , l j ′ , l j − 1 ′ ) ]

    α α 是学习率。

重复上述步骤,直到达到某个停止条件,例如低于某一个阈值。

总而言之就是抽取当前模型与我们想要学习到的模型的差异,将 λi λ i 朝着正确的方向移动。

④找到最佳标注

问题:假定训练好了CRF模型,这时来了一个新的句子,应该如何标注它?

  • 最直接的方法:
为每个可能的标注 l l 计算p(l|s)p(l|s),接着选取一种概率值最大的打标。然而对一个大小为k的标签组和一个长度为m的句子,有 km k m 种可能的打标方式。
  • 更好的方法:
使CRF满足最佳子结构的属性,使得我们可以使用一种动态规划算法(多项式时间复杂度)找到最佳标注,类似于HMM的维特比算法。

扩展

词性标注的方法还有许多,而CRF除了命名实体抽取的其他有趣应用:

eg.圣诞节礼物抽取

①简单匹配形如‘I want/got xxx for Christmas’的句式

②CRF变种GIFT词标注:将其转换为词性标注问题,基于类似“如果上一个词是一个GIFT-RECIVER且前一个词是gave,那么这个词就是一个GIFT”或者‘如果后面紧跟两个词是for Christmas,那么这个词就是GIFT’的规则去构造特征。

继续阅读