机器学习 —— 条件随机场模型

1、背景

  有了强大的log-linear模型,连水槽都能拿来做分类特征了,当然要想办法用一下试试了。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_ 里都只能有两个词性。当我们有很多这样的规则时,正确的规则(名次后面接动词)会被训练成较高的权重,而错误的规则则会被赋予较低的权重,最后得到的词性序列会有较高的正确性。

2、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 次(此处可能有误)。。。。

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

3.模型迭代所使用的梯度

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

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

时间: 2024-10-12 16:06:51

机器学习 —— 条件随机场模型的相关文章

机器学习实战——条件随机场(CRF)

声明:本文是在<最优化方法>课程中阅读的Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data这篇文章后的总结. CRF由来 条件随机场(CRF)这种用来解决序列标注问题的机器学习方法是由John Lafferty于2001年发表在国际机器学习大会ICML上的一篇经典文章所引入,对后人的研究起到了非常大的引领作用.特别是标注问题在很多自然科学领域有广泛应用,在自然语言处理

【NLP】条件随机场知识扩展延伸

条件随机场知识扩展延伸 作者:白宁超 2016年8月3日19:47:55 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有应用.本文源于笔者做语句识别序列标注过程中,对条件随机场的了解,逐步研究基于自然语言处理方面的应用.成文主要源于自然语言处理.机器学习.统计学习方法和部分网上资料对CRF介绍的相关的相关,最后进行大量研究整理汇总成体系知识.文章布局如下:第一节介绍CRF相关的基础统计知识:第二节介绍基于自然语言角度的

隐马尔可夫(HMM)/感知机/条件随机场(CRF)----词性标注

笔记转载于GitHub项目:https://github.com/NLP-LOVE/Introduction-NLP 7. 词性标注 7.1 词性标注概述 什么是词性 在语言学上,词性(Par-Of-Speech, Pos )指的是单词的语法分类,也称为词类.同一个类别的词语具有相似的语法性质,所有词性的集合称为词性标注集.不同的语料库采用了不同的词性标注集,一般都含有形容词.动词.名词等常见词性.下图就是HanLP输出的一个含有词性的结构化句子. 我/r 的/u 希望/n 是/v 希望/v 张

条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)

声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了弄懂其中的内容查阅了很多资料,所以里面应该会有引用其他帖子的小部分内容,如果原作者看到可以私信我,我会将您的帖子的地址付到下面. 3,如果有内容错误或不准确欢迎大家指正. 4,如果能帮到你,那真是太好了. 学习方法 条件随机场模型实际上是定义在时序数据上的对数线性模型,其学习方法包括极大似然估计和正则化的极大

统计学习方法 李航---第11章 条件随机场

第11章 条件随机场 条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场.条件随机场可以用于不同的预测问题,本章主要讲述线性链(linear chain)条件随机场在标注问题的应用,这时问题变成了由输入序列对输出序列预测的判别模型,形式为对数线性模型,其学习方法通常是极大似然估计或正则化的极大似然估计. 11.1 概率无向图模型 概率无向图模型(probabilist

条件随机场入门(四) 条件随机场的训练

本节讨论给定训练数据集估计条件随机场模型参数的问题,即条件随机场的学习问题.条件随机场模型实际上是定义在时序数据上的对数线形模型,其学习方法包括极大似然估计和正则化的极大似然估计.具体的优化实现算法有改进的迭代尺度法IIS.梯度下降法以及 L-BFGS 算法.(crf++ 采用了 L-BFGS 优化的方式,所以着重看这种训练方法即可) L-BFGS算法 对于条件随机场模型: \[P_w(y|x) = \frac{\exp \left \{ \sum_{k=1}^K w_kf_k(x,y)\rig

CRF 条件随机场

条件随机场模型是Lafferty于2001年,在最大熵模型和隐马尔科夫模型的基础上,提出的一种判别式概率无向图学习模型,是一种用于标注和切分有序数据的条件概率模型. CRF最早是针对序列数据分析提出的,现已成功应用于自然语言处理(Natural Language Processing,NLP) .生物信息学.机器视觉及网络智能等领域. 1.序列标注的例子 标注(实体命名识别):任命 地名 组织名 标注(汉语词性标注):名词 动词 主次形容词 副词 -简单地讲,随机场可以看成是一组随机变量的集合(

条件随机场(CRF)的理解

Motivation 学习CRF的过程中,我发现很多资料,教程上来就给一堆公式,并不知道这些公式是怎么用的. 所以我想以面向问题的形式,分享一下自己对CRF用于序列标注问题的理解 问题定义 应该注意以下几点: 输入\(x\)是观测序列,是先验条件 输出\(Y\)是标注序列,也称为状态序列 我们举个例子:(<统计学习方法> 例11.1) 设有一标注问题:输入观测序列为\(X=(X_1,X_2,X_3)\),输出标记序列为\(Y=(Y_1,Y_2,Y_3)\),\(Y_1,Y_2,Y_3\)取值于

条件随机场之CRF++源码详解-开篇

介绍 最近在用条件随机场做切分标注相关的工作,系统学习了下条件随机场模型.能够理解推导过程,但还是比较抽象.因此想研究下模型实现的具体过程,比如:1) 状态特征和转移特征具体是什么以及如何构造 2)前向后向算法具体怎么实现 等等.那么,想要深入了解一个算法比较好的方式就是阅读现有的开源项目.阅读好的开源项目不但可以深入理解原理,还可以学习一些工程实践的经验.我阅读条件随机场的开源项目是CRF++.我在阅读CRF++源码的时候走过一些弯路也积累了一些经验,想把这个过程和经验总结下来,希望能够对正在