条件随机场CRF

  条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。本系列主要关注于CRF的特殊形式:线性链(Linear chain) CRF。本文关注与CRF的模型基础。

1.什么样的问题需要CRF模型

    和HMM类似,在讨论CRF之前,我们来看看什么样的问题需要CRF模型。这里举一个简单的例子:

    假设我们有Bob一天从早到晚的一系列照片,Bob想考考我们,要我们猜这一系列的每张照片对应的活动,比如: 工作的照片,吃饭的照片,唱歌的照片等等。一个比较直观的办法就是,我们找到Bob之前的日常生活的一系列照片,然后找Bob问清楚这些照片代表的活动标记,这样我们就可以用监督学习的方法来训练一个分类模型,比如逻辑回归,接着用模型去预测这一天的每张照片最可能的活动标记。

    这种办法虽然是可行的,但是却忽略了一个重要的问题,就是这些照片之间的顺序其实是有很大的时间顺序关系的,而用上面的方法则会忽略这种关系。比如我们现在看到了一张Bob闭着嘴的照片,那么这张照片我们怎么标记Bob的活动呢?比较难去打标记。但是如果我们有Bob在这一张照片前一点点时间的照片的话,那么这张照片就好标记了。如果在时间序列上前一张的照片里Bob在吃饭,那么这张闭嘴的照片很有可能是在吃饭咀嚼。而如果在时间序列上前一张的照片里Bob在唱歌,那么这张闭嘴的照片很有可能是在唱歌。

    为了让我们的分类器表现的更好,可以在标记数据的时候,可以考虑相邻数据的标记信息。这一点,是普通的分类器难以做到的。而这一块,也是CRF比较擅长的地方。

    在实际应用中,自然语言处理中的词性标注(POS Tagging)就是非常适合CRF使用的地方。词性标注的目标是给出一个句子中每个词的词性(名词,动词,形容词等)。而这些词的词性往往和上下文的词的词性有关,因此,使用CRF来处理是很适合的,当然CRF不是唯一的选择,也有很多其他的词性标注方法。

2. 从随机场到马尔科夫随机场

    首先,我们来看看什么是随机场。“随机场”的名字取的很玄乎,其实理解起来不难。随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。还是举词性标注的例子:假如我们有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在我们已知的词性集合(名词,动词...)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场。

    了解了随机场,我们再来看看马尔科夫随机场。马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。继续举十个词的句子词性标注的例子: 如果我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性有关。 

3. 从马尔科夫随机场到条件随机场

    理解了马尔科夫随机场,再理解CRF就容易了。CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有XX和YY两种变量,XX一般是给定的,而YY一般是在给定XX的条件下我们的输出。这样马尔科夫随机场就特化成了条件随机场。在我们十个词的句子词性标注的例子中,XX是词,YY是词性。因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个CRF。

    对于CRF,我们给出准确的数学语言描述:

    设XX与YY是随机变量,P(Y|X)P(Y|X)是给定XX时YY的条件概率分布,若随机变量YY构成的是一个马尔科夫随机场,则称条件概率分布P(Y|X)P(Y|X)是条件随机场。

4. 从条件随机场到线性链条件随机场

    注意在CRF的定义中,我们并没有要求XX和YY有相同的结构。而实现中,我们一般都假设XX和YY有相同的结构,即:

X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)

    我们一般考虑如下图所示的结构:XX和YY有相同的结构的CRF就构成了线性链条件随机场(Linear chain Conditional Random Fields,以下简称 linear-CRF)。

    在我们的十个词的句子的词性标记中,词有十个,词性也是十个,因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个linear-CRF。

    我们再来看看 linear-CRF的数学定义:

    设X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)均为线性链表示的随机变量序列,在给定随机变量序列XX的情况下,随机变量YY的条件概率分布P(Y|X)P(Y|X)构成条件随机场,即满足马尔科夫性:

P(Yi|X,Y1,Y2,...Yn)=P(Yi|X,Yi−1,Yi+1)P(Yi|X,Y1,Y2,...Yn)=P(Yi|X,Yi−1,Yi+1)

    则称P(Y|X)P(Y|X)为线性链条件随机场。 

5. 线性链条件随机场的参数化形式

    对于上一节讲到的linear-CRF,我们如何将其转化为可以学习的机器学习模型呢?这是通过特征函数和其权重系数来定义的。什么是特征函数呢?

    在linear-CRF中,特征函数分为两类,第一类是定义在YY节点上的节点特征函数,这类特征函数只和当前节点有关,记为:

sl(yi,x,i),l=1,2,...Lsl(yi,x,i),l=1,2,...L

    其中LL是定义在该节点的节点特征函数的总个数,ii是当前节点在序列的位置。

    第二类是定义在YY上下文的局部特征函数,这类特征函数只和当前节点和上一个节点有关,记为:

tk(yi−1,yi,x,i),k=1,2,...Ktk(yi−1,yi,x,i),k=1,2,...K

    其中KK是定义在该节点的局部特征函数的总个数,ii是当前节点在序列的位置。之所以只有上下文相关的局部特征函数,没有不相邻节点之间的特征函数,是因为我们的linear-CRF满足马尔科夫性。

    无论是节点特征函数还是局部特征函数,它们的取值只能是0或者1。即满足特征条件或者不满足特征条件。同时,我们可以为每个特征函数赋予一个权值,用以表达我们对这个特征函数的信任度。假设tktk的权重系数是λkλk,slsl的权重系数是μlμl,则linear-CRF由我们所有的tk,λk,sl,μltk,λk,sl,μl共同决定。

    此时我们得到了linear-CRF的参数化形式如下:

P(y|x)=1Z(x)exp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))P(y|x)=1Z(x)exp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))

    其中,Z(x)Z(x)为规范化因子:

Z(x)=∑yexp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))Z(x)=∑yexp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))

    回到特征函数本身,每个特征函数定义了一个linear-CRF的规则,则其系数定义了这个规则的可信度。所有的规则和其可信度一起构成了我们的linear-CRF的最终的条件概率分布。

6. 线性链条件随机场实例

    这里我们给出一个linear-CRF用于词性标注的实例,为了方便,我们简化了词性的种类。假设输入的都是三个词的句子,即X=(X1,X2,X3)X=(X1,X2,X3),输出的词性标记为Y=(Y1,Y2,Y3)Y=(Y1,Y2,Y3),其中Y∈{1(名词),2(动词)}Y∈{1(名词),2(动词)}

    这里只标记出取值为1的特征函数如下:

t1=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1t1=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1
t2=t2(y1=1,y2=1,x,2)λ2=0.5t2=t2(y1=1,y2=1,x,2)λ2=0.5
t3=t3(y2=2,y3=1,x,3)λ3=1t3=t3(y2=2,y3=1,x,3)λ3=1
t4=t4(y1=2,y2=1,x,2)λ4=1t4=t4(y1=2,y2=1,x,2)λ4=1
t5=t5(y2=2,y3=2,x,3)λ5=0.2t5=t5(y2=2,y3=2,x,3)λ5=0.2
s1=s1(y1=1,x,1)μ1=1s1=s1(y1=1,x,1)μ1=1
s2=s2(yi=2,x,i),i=1,2,μ2=0.5s2=s2(yi=2,x,i),i=1,2,μ2=0.5
s3=s3(yi=1,x,i),i=2,3,μ3=0.8s3=s3(yi=1,x,i),i=2,3,μ3=0.8
s4=s4(y3=2,x,3)μ4=0.5s4=s4(y3=2,x,3)μ4=0.5

    求标记(1,2,2)的非规范化概率。

    利用linear-CRF的参数化公式,我们有:

P(y|x)∝exp[∑k=15λk∑i=23tk(yi−1,yi,x,i)+∑l=14μl∑i=13sl(yi,x,i)]P(y|x)∝exp[∑k=15λk∑i=23tk(yi−1,yi,x,i)+∑l=14μl∑i=13sl(yi,x,i)]

    带入(1,2,2)我们有:

P(y1=1,y2=2,y3=2|x)∝exp(3.2)P(y1=1,y2=2,y3=2|x)∝exp(3.2)

7. 线性链条件随机场的简化形式

    在上几节里面,我们用slsl表示节点特征函数,用tktk表示局部特征函数,同时也用了不同的符号表示权重系数,导致表示起来比较麻烦。其实我们可以对特征函数稍加整理,将其统一起来。

    假设我们在某一节点我们有K1K1个局部特征函数和K2K2个节点特征函数,总共有K=K1+K2K=K1+K2个特征函数。我们用一个特征函数fk(yi−1,yi,x,i)fk(yi−1,yi,x,i)来统一表示如下:

fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i)sl(yi,x,i)k=1,2,...K1k=K1+l,l=1,2...,K2fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i)k=1,2,...K1sl(yi,x,i)k=K1+l,l=1,2...,K2

    对fk(yi−1,yi,x,i)fk(yi−1,yi,x,i)在各个序列位置求和得到:

fk(y,x)=∑i=1nfk(yi−1,yi,x,i)fk(y,x)=∑i=1nfk(yi−1,yi,x,i)

    同时我们也统一fk(yi−1,yi,x,i)fk(yi−1,yi,x,i)对应的权重系数wkwk如下:

wk={λkμlk=1,2,...K1k=K1+l,l=1,2...,K2wk={λkk=1,2,...K1μlk=K1+l,l=1,2...,K2

    这样,我们的linear-CRF的参数化形式简化为:

P(y|x)=1Z(x)exp∑k=1Kwkfk(y,x)P(y|x)=1Z(x)exp∑k=1Kwkfk(y,x)

    其中,Z(x)Z(x)为规范化因子:

Z(x)=∑yexp∑k=1Kwkfk(y,x)Z(x)=∑yexp∑k=1Kwkfk(y,x)

    如果将上两式中的wkwk与fkfk的用向量表示,即:

w=(w1,w2,...wK)TF(y,x)=(f1(y,x),f2(y,x),...fK(y,x))Tw=(w1,w2,...wK)TF(y,x)=(f1(y,x),f2(y,x),...fK(y,x))T

    则linear-CRF的参数化形式简化为内积形式如下:

Pw(y|x)=exp(w∙F(y,x))Zw(x)=exp(w∙F(y,x))∑yexp(w∙F(y,x))Pw(y|x)=exp(w∙F(y,x))Zw(x)=exp(w∙F(y,x))∑yexp(w∙F(y,x))

8. 线性链条件随机场的矩阵形式

    将上一节统一后的linear-CRF公式加以整理,我们还可以将linear-CRF的参数化形式写成矩阵形式。为此我们定义一个m×mm×m的矩阵MM,mm为yy所有可能的状态的取值个数。MM定义如下:

Mi(x)=[Mi(yi−1,yi|x)]=[exp(Wi(yi−1,yi|x))]=[exp(∑k=1Kwkfk(yi−1,yi,x,i))]Mi(x)=[Mi(yi−1,yi|x)]=[exp(Wi(yi−1,yi|x))]=[exp(∑k=1Kwkfk(yi−1,yi,x,i))]

    我们引入起点和终点标记y0=start,yn+1=stopy0=start,yn+1=stop, 这样,标记序列yy的非规范化概率可以通过n+1n+1个矩阵元素的乘积得到,即:

Pw(y|x)=1Zw(x)∏i=1n+1Mi(yi−1,yi|x)Pw(y|x)=1Zw(x)∏i=1n+1Mi(yi−1,yi|x)

    其中Zw(x)Zw(x)为规范化因子。

    以上就是linear-CRF的模型基础,后面我们会讨论linear-CRF和HMM类似的三个问题的求解方法。

本文转载自:https://www.cnblogs.com/pinard/p/7048333.html

通俗易懂条件随机场CRF相关推荐

  1. 全网最通俗的条件随机场CRF

    前言 本文是我尽量以通俗易懂的口吻来讲解CRF的一篇博文,标题虽然取得有点自不量力,但也是我付出了十分心血总结出来的,如果你还是没能看懂那说明我能力不够没能讲清楚,烦请不要在我的留言区展现出你的杠精本 ...

  2. 条件随机场(CRF) - 1 - 简介

    声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...

  3. 条件随机场(CRF) - 2 - 定义和形式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueyingxue001/article/details/51498968 声明: 1,本篇为个人对 ...

  4. 条件随机场 (CRF) 分词序列谈之一(转)

    http://langiner.blog.51cto.com/1989264/379166 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  5. 条件随机场(CRF)相对于HMM,MEMM的优势

    条件随机场(CRF)相对于HMM,MEMM的优势 首先,CRF,HMM(隐马模型),MEMM(最大熵隐马模型)都常用来做序列标注的建模,像词性标注,True casing.但隐马模型一个最大的缺点就是 ...

  6. 【机器学习基础】一文读懂用于序列标注的条件随机场(CRF)模型

    模型前的铺垫 我们先引入一个假设,假设一个句子的产生只需要两步: 第一步:基于语法产生一个合乎文法的词性序列 第二步:对第一步产生的序列中的每个词性找到符合这个词性的一个词汇,从而产生一个词汇序列,便 ...

  7. 简明条件随机场CRF介绍 | 附带纯Keras实现

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 笔者去年曾写过文章<果壳中的条件随机场(CRF In A Nutshell)>[1], ...

  8. 条件随机场(CRF)相关理论知识

    文章目录 无向概率图模型 条件随机场 CRF 实例 线性链条件随机场的简化形式 线性链条件随机场的矩阵形式 linear-CRF的三个基本问题 1,概率计算问题 前向后向概率概述 前向后向概率计算 l ...

  9. 长文详解基于并行计算的条件随机场CRF

    六月 北京 | 高性能计算之GPU CUDA培训 6月22-24日三天密集式学习  快速带你入门阅读全文> 正文共3974个字,29张图,预计阅读时间18分钟. 之前写过CRF的详解,只是为了让 ...

最新文章

  1. 分布式锁实现:Redis
  2. Python IDLE快捷键一览
  3. 如何监视MySQL的性能
  4. 2022.4.9 mac os M1 芯片 12.3.1 Monterey 安装cocoapods
  5. Git Bash的一些命令和配置
  6. 朝花夕拾-4-shell
  7. 操作系统(1) 操作系统概念
  8. 京东商品分类API接口-(cat_get-获得jd商品分类API接口),京东分类API接口
  9. N81新手入门全攻略——N81常规设置问答篇
  10. SVN工具将本地代码导入SVN资源库
  11. Win10清理C盘垃圾
  12. cmake find_package 原理简介以及使用说明
  13. 中国新型显示产业竞争格局与发展规模预测报告2022版
  14. 浅谈CNN里的Lasso
  15. 相亲app开发,解决内存循环引用的问题
  16. (十八)视频换-脸、无训练高速换-脸、一张图片即可完成、批量处理
  17. 集成电路的代换方法及其原则
  18. setTimer()函数详解
  19. js reduce 累加数组里对象某个属性的和 NaN
  20. 欧姆龙, PLC CJ2M标准程序,一共控制12个伺服电机 ,气缸若干,包含轴点动,回零,相对与绝对定位

热门文章

  1. 成为大佬的第一步,黑客必备工具BurpSuite功能详解!
  2. Java获取汉字全拼和首拼
  3. 强烈推荐 在线接口文档管理工具 小幺鸡 小团队可以省掉测试了
  4. Jest和Enzyme使用
  5. 医院信息科笔试题(一)
  6. ceph-crush map区分ssd和hdd资源池
  7. 巴比特 | 元宇宙每日必读:NFT在游戏巨头内部存在较大分歧:领导支持,开发者反对,为什么?...
  8. 如何选择适合自己企业的B2B2C商城系统?
  9. Python自动发布markdown文章到WordPress网站
  10. 银河麒麟服务器操作系统安装SQLite数据库