【机器学习】条件随机场CRF算法 梳理

条件随机域(场)(conditional random fields,简称 CRF,或CRFs),是一种判别式概率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。

如同马尔可夫随机场,条件随机场为具有无向的图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场中,随机变量 Y 的分布为条件机率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链结式的架构,链结式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在效率较高的算法可供演算。

“条件随机场”被用于中文分词和词性标注等词法分析工作,一般序列分类模型常常采用隐马尔可夫模型(HMM),像基于类的中文分词。但隐马尔可夫模型中存在两个假设:输出独立性假设和马尔可夫性假设。其中,输出独立性假设要求序列数据严格相互独立才能保证推导的正确性,而事实上大多数序列数据不能被表示成一系列独立事件。而条件随机场则使用一种概率图模型,具有表达长距离依赖性和交叠性特征的能力,能够较好地解决标注(分类)偏置等问题的优点,而且所有特征可以进行全局归一化,能够求得全局的最优解。摘自百度百科

 

CRF

CRF即条件随机场(Conditional Random Fields),是在给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,它是一种判别式的概率无向图模型,既然是判别式,那就是对条件概率分布建模。

CRF较多用在自然语言处理和图像处理领域,在NLP中,它是用于标注和划分序列数据的概率化模型,根据CRF的定义,相对序列就是给定观测序列X和输出序列Y,然后通过定义条件概率P(Y|X)来描述模型。

CRF的输出随机变量假设是一个无向图模型或者马尔科夫随机场,而输入随机变量作为条件不假设为马尔科夫随机场,CRF的图模型结构理论上可以任意给定,但我们常见的是定义在线性链上的特殊的条件随机场,称为线性链条件随机场。

概率无向图模型

前面说到CRF的输出随机变量是一个概率无向图模型,那么现在看看该模型。

概率无向图模型是由无向图表示的联合概率分布,假设联合概率分布P(Y)通过无向图来表示,则在图中节点表示随机变量,边表示随机变量之间的依赖关系,联合概率分布P(Y)满足马尔科夫性则称其为概率无向图模型,或者是马尔科夫随机场。

如下图,图是一个由节点和边组成的结构体,无向是指边没有方向,整个图记作G=(V,E),其中圆形V为节点的集合,E为边的集合。

线性链条件随机场

无向图的结构理论上可以是任意的,但在NLP中对于标记处理问题,对其建模主要用最简单最普通的链式结构,即线性链条件随机场。如下图,可以看到节点为线性链结构,节点对应了序列Y的元素,而观察序列X不做任何独立性假设,但X序列的结构也可以是线性链结构。

这里写图片描述

概率的定义

 

 

如何训练CRF

啥时考虑CRF

如果信息是与时间或空间的前后有关联时要考虑到CRF。

-----------------------------------------------------------------------------------------------

  log-linear模型的输入是一系列几乎接近自然语言的特征方程,这种抽象的东西拿来做语义识别自然是再好不过了。语义识别有一个重要的步骤,叫做 ”给句子贴标签“,简而言之,就是给定一个句子,通过识别其中一些特征:比如存在人名,地名,日期,商品名称,从而判断这个句子的属性(做交易,下任务,更改设置等。) 能够准确的识别句子中的这些 tag 可以有助于理解一个句子。但是要怎样来确定某个单词是不是地名或者人名呢?光靠首字母是否大小写或者和对应的库去匹配显然是不够好的。

  为了更好的完成任务,引入上下文成了一个有意义的手段。对自然语言或者大部分信号而言,在某信号之前的上个信号有着重要的意义(比如我使用了重要的,那么下个词多半是名词)。所以构建了以相邻信号作为特征方程的模型,成为条件随机场。

  普通的log-linear模型长这样:

                                                     

  如果把上下文考虑进特征方程,那么它的特征方程大概长这样:

                                                       

  (x-) 代表整个句子,(y-)代表标签序列。一个n个词(x的长度)的句子显然有m个标签(tag的容量)。因为句子的长度一般都不同,但“标签”的集合却可以是相同的(词性总归就那么几个),所以,我们需要恒定数目的特征方程(一般情况下特征方程的数目是m*n).

  故考虑设计了上述形式的子特征方程,以 y_i-1 (这表示某标签序列的第i-1个标签)以及第i个标签形成的子特征方程遍历整个句子。最后将子特征方程遍历的结果求和,作为总特征方程的返回值。子特征方程可以是以下形式(如果符合则返回1,否则返回0)

  f1.前面为名词,则后面一个词开头为M

  f2.前面为副词,则后面一个词是形容词

  f3.前面为形容词,则后面一个词以y结尾

  显然对于一般情况下的句子而言,上述子特征方程求和后会给 F_j 一个比较大的值(因为符合语法规则)。注意每个 f_ 里都只能有两个词性。当我们有很多这样的规则时,正确的规则(名次后面接动词)会被训练成较高的权重,而错误的规则则会被赋予较低的权重,最后得到的词性序列会有较高的正确性。

CRF 模型的数学分析

  拿到CRF模型后,我们要想办法能够通过训练得到 一组合适的参数w_j,以实现分类器的构造。但是在拿到参数之前,还是需要做些准备工作,比如:获得各阶导数的表达式。ok,由于我们引入了 子特征方程 f_ 并且 F_与f_ 存在求和关系,所以这里的算法会比较复杂。

  整体的表达式长这样:

  如果把 f_j 带入,表达式长这样:

  (外围部分被忽略了)

  最终目标也就变成了:

  这里做了一个乘法结合律,把wj和fj放在了一起,总结成了一个g函数。是不是   “一个”   g函数呢?这倒是不一定。。。。。。。

  对于任意一个 i ,gi 都是不同的方程。和 gi 有关的参数是两个,这两个参数都是tag。那么假设 tag的集合里有m个元素,则gi的总个数是 m^2(所有的tag组合都要遍历)。也就是说,对长度为n的一个句子,都要算 n*m^2 次(此处可能有误)。。。。

  计算次数这么多显然有点问题。故考虑设计一种递归的算法,来减小计算的规模。这里不详细讲述。

 

模型迭代所使用的梯度

  要对 log-linear 模型进行标定,当然是要想办法使模型参数最符合训练集合了。最符合训练集合的意思就是要想办法使得在某组参数下,训练集发生的概率达到最大。不妨对概率取对数,使得式子线性化。

  ok,到此为止,已经求出了各个参数导数的表达形式,F_j(x,y)是很容易求的,对任意训练集这都是已知的。而后面的E求起来却比较麻烦,它需要把所有可行的标签带入Fj中,并且乘以p(这里p也好求,给定wj,p就是已知的)但是这样子梯度的计算量就非常大。相当于每一次迭代都需要对 标签集 进行遍历,计算量很大,不过机智的计算机科学家设计了算法通过预测p的分布,来描述E。具体的算法不再赘述,总之,条件随机场模型是一种可考虑多因素,对物体进行多标签分类的模型。其训练过程需要有监督学习,对机器人视觉来说,有监督学习并不是一件简单的事情。物体的外形也很难和物体的标签联系起来(圆的是杯子还是茶叶罐?)所以条件随机场对计算机视觉会更有效,基于纹理颜色形状等信息的二维图像更适合去探究其意义。

====================================================================================

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值