理解crf

一条图图犬 一条图图犬     2022-10-05     542

关键词:

参考:
作者:milter
链接:https://www.zhihu.com/question/35866596/answer/139485548
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题主说要用简单易懂的例子来说明,那我就来强答一发。 理解条件随机场最好的办法就是用一个现实的例子来说明它。但是目前中文的条件随机场文章鲜有这样干的,可能写文章的人都是大牛,不屑于举例子吧。于是乎,这件事只能由我这样的机器学习小白来干了。希望对其他的小白同学有所帮助。最近在刷李航的《统计学习方法》,翻阅目录,发现就后三章内容没有接触过,分别是EM算法、隐马尔可夫模型和条件随机场,其他内容在林轩田的两门公开课里都学过。以我的尿性,必须是先攻克后三章!EM算法和隐马尔可夫模型不费太大劲就理解了,在我乘胜前进,准备一举拿下条件随机场时,我懵逼了!这本书讲解得TTMD精炼了,上来就是卡卡卡的公式,背景、例子等人民群众喜闻乐见的东西一个没有!这对没有相关知识背景的我来说,简直就是灭绝人性!后来,在全球最大的同性互动交友平台上,找到了一篇文章,虽然也是英文,但是相比100多页的文章,算是很短的了,关键是,这篇文章就是用一个活生生的例子来说明条件随机场的,十分的通俗易懂!甚合我意!看完之后,再去看李航的书,顿时感觉神清气爽!于是,我果断决定翻译这篇文章。原文在这里[Introduction to Conditional Random Fields]想直接看英文的朋友可以直接点进去了。我在翻译时并没有拘泥于原文,许多地方都加入了自己的理解,用学术点的话说就是意译。(画外音:装什么装,快点开始吧。)好的,下面开始翻译!假设你有许多小明同学一天内不同时段的照片,从小明提裤子起床到脱裤子睡觉各个时间段都有(小明是照片控!)。现在的任务是对这些照片进行分类。比如有的照片是吃饭,那就给它打上吃饭的标签;有的照片是跑步时拍的,那就打上跑步的标签;有的照片是开会时拍的,那就打上开会的标签。问题来了,你准备怎么干?一个简单直观的办法就是,不管这些照片之间的时间顺序,想办法训练出一个多元分类器。就是用一些打好标签的照片作为训练数据,训练出一个模型,直接根据照片的特征来分类。例如,如果照片是早上6:00拍的,且画面是黑暗的,那就给它打上睡觉的标签;如果照片上有车,那就给它打上开车的标签。这样可行吗?乍一看可以!但实际上,由于我们忽略了这些照片之间的时间顺序这一重要信息,我们的分类器会有缺陷的。举个例子,假如有一张小明闭着嘴的照片,怎么分类?显然难以直接判断,需要参考闭嘴之前的照片,如果之前的照片显示小明在吃饭,那这个闭嘴的照片很可能是小明在咀嚼食物准备下咽,可以给它打上吃饭的标签;如果之前的照片显示小明在唱歌,那这个闭嘴的照片很可能是小明唱歌瞬间的抓拍,可以给它打上唱歌的标签。所以,为了让我们的分类器能够有更好的表现,在为一张照片分类时,我们必须将与它相邻的照片的标签信息考虑进来。这——就是条件随机场(CRF)大显身手的地方!#从例子说起——词性标注问题-----啥是词性标注问题?非常简单的,就是给一个句子中的每个单词注明词性。比如这句话:“Bob drank coffee at Starbucks”,注明每个单词的词性后是这样的:“Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”。下面,就用条件随机场来解决这个问题。以上面的话为例,有5个单词,我们将:(名词,动词,名词,介词,名词)作为一个标注序列,称为l,可选的标注序列有很多种,比如l还可以是这样:(名词,动词,动词,介词,名词),我们要在这么多的可选标注序列中,挑选出一个最靠谱的作为我们对这句话的标注。怎么判断一个标注序列靠谱不靠谱呢?就我们上面展示的两个标注序列来说,第二个显然不如第一个靠谱,因为它把第二、第三个单词都标注成了动词,动词后面接动词,这在一个句子中通常是说不通的。假如我们给每一个标注序列打分,打分越高代表这个标注序列越靠谱,我们至少可以说,凡是标注中出现了动词后面还是动词的标注序列,要给它减分!!上面所说的动词后面还是动词就是一个特征函数,我们可以定义一个特征函数集合,用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列。也就是说,每一个特征函数都可以用来为一个标注序列评分,把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。#定义CRF中的特征函数现在,我们正式地定义一下什么是CRF中的特征函数,所谓特征函数,就是这样的函数,它接受四个参数:- 句子s(就是我们要标注词性的句子)- i,用来表示句子s中第i个单词- l_i,表示要评分的标注序列给第i个单词标注的词性- l_i-1,表示要评分的标注序列给第i-1个单词标注的词性它的输出值是0或者1,0表示要评分的标注序列不符合这个特征,1表示要评分的标注序列符合这个特征。Note:这里,我们的特征函数仅仅依靠当前单词的标签和它前面的单词的标签对标注序列进行评判,这样建立的CRF也叫作线性链CRF,这是CRF中的一种简单情况。为简单起见,本文中我们仅考虑线性链CRF。#从特征函数到概率定义好一组特征函数后,我们要给每个特征函数f_j赋予一个权重λ_j。现在,只要有一个句子s,有一个标注序列l,我们就可以利用前面定义的特征函数集来对l评分。<img src="https://pic3.zhimg.com/50/v2-d5c036cdff0f8ab53bac9f60d126daee_hd.png" data-rawwidth="498" data-rawheight="68" class="origin_image zh-lightbox-thumb" width="498" data-original="https://pic3.zhimg.com/v2-d5c036cdff0f8ab53bac9f60d126daee_r.png">上式中有两个相加,外面的相加用来相加每一个特征函数f_j,里面的相加用来相加句子中每个位置的单词的的特征值。对这个分数进行指数化和标准化,我们就可以得到标注序列l的概率值p(l|s),如下所示:<img src="https://pic4.zhimg.com/50/v2-f309245728fef919a9843bd44c48267f_hd.png" data-rawwidth="637" data-rawheight="96" class="origin_image zh-lightbox-thumb" width="637" data-original="https://pic4.zhimg.com/v2-f309245728fef919a9843bd44c48267f_r.png">#几个特征函数的例子前面我们已经举过特征函数的例子,下面我们再看几个具体的例子,帮助增强大家的感性认识。<img src="https://pic3.zhimg.com/50/v2-1e2e20e990e4572907e6f87c88b40502_hd.png" data-rawwidth="212" data-rawheight="39" class="content_image" width="212">当l_i是“副词”并且第i个单词以“ly”结尾时,我们就让f1 = 1,其他情况f1为0。不难想到,f1特征函数的权重λ1应当是正的。而且λ1越大,表示我们越倾向于采用那些把以“ly”结尾的单词标注为“副词”的标注序列<img src="https://pic2.zhimg.com/50/v2-26349606327a44f4c432e604e168060d_hd.png" data-rawwidth="205" data-rawheight="42" class="content_image" width="205">如果i=1,l_i=动词,并且句子s是以“?”结尾时,f2=1,其他情况f2=0。同样,λ2应当是正的,并且λ2越大,表示我们越倾向于采用那些把问句的第一个单词标注为“动词”的标注序列。<img src="https://pic4.zhimg.com/50/v2-a75ed483ffdea2a543d8f44ff2031e13_hd.png" data-rawwidth="204" data-rawheight="34" class="content_image" width="204">当l_i-1是介词,l_i是名词时,f3 = 1,其他情况f3=0。λ3也应当是正的,并且λ3越大,说明我们越认为介词后面应当跟一个名词。<img src="https://pic1.zhimg.com/50/v2-7ad542bab7f9622e00003c4366639004_hd.png" data-rawwidth="207" data-rawheight="37" class="content_image" width="207">如果l_i和l_i-1都是介词,那么f4等于1,其他情况f4=0。这里,我们应当可以想到λ4是负的,并且λ4的绝对值越大,表示我们越不认可介词后面还是介词的标注序列。好了,一个条件随机场就这样建立起来了,让我们总结一下:为了建一个条件随机场,我们首先要定义一个特征函数集,每个特征函数都以整个句子s,当前位置i,位置i和i-1的标签为输入。然后为每一个特征函数赋予一个权重,然后针对每一个标注序列l,对所有的特征函数加权求和,必要的话,可以把求和的值转化为一个概率值。

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

...分标注相关的工作,系统学习了下条件随机场模型。能够理解推导过程,但还是比较抽象。因此想研究下模型实现的具体过程,比如:1)状态特征和转移特征具体是什么以及如何构造2)前向后向算法具体怎么实现等等。那么,... 查看详情

条件随机场crf介绍

...3QmxvQiqs8P4-w softmaxCRF主要用于序列标注问题,可以简单理解为是给序列中的每一帧,既然是分类,很自然想到将这个序列用CNN或者RNN进行编码后,接一个全连接层用softmax激活,如下图所示 逐帧softmax并没有直接考虑输出的... 查看详情

crf-1概述和简介(翻译)

...所示:虽然,没必要知道BILSTM层的细节,但是为了更好的理解CRF层,我们必须要知道BiLSTM层的输出的含义。上面的这个图片介绍了BiLSTM层输出的每个标签的分数。比如,对w_0,BILSTM节点的输出是1.5(B-Person),0.9(I-P 查看详情

用idcnn和crf做端到端的中文实体识别

...图谱等上层自然语言处理应用的基础。实体识别可以简单理解为一个序列标注问题:给定一个句子,为句子序列中的每一个字做标注。因为同是序列标注问题,除去实体识别之外,相同的技术也可以去解决诸如分词、词性标注等... 查看详情

CRF和全连接CRF的区别?

】CRF和全连接CRF的区别?【英文标题】:DifferencebetweenCRFandFullyConnectedCRF?【发布时间】:2020-10-2301:38:44【问题描述】:谁能解释一下条件随机场和完全连接的条件随机场在语义分割方面的区别?到目前为止,我只了解,对于CRF,... 查看详情

bilstm-crf命名实体识别模型中的crf层

虽然网上的文章对BiLSTM-CRF模型介绍的文章有很多,但是一般对CRF层的解读比较少。于是决定,写一系列专门用来解读BiLSTM-CRF模型中的CRF层的文章。我是用英文写的,发表在了githubpages上。如果文章中有描述不对,不准确或者引... 查看详情

CRF++ 或 CRFSuite

】CRF++或CRFSuite【英文标题】:CRF++orCRFSuite【发布时间】:2012-07-0122:50:03【问题描述】:我开始使用crf++和crfsuite(两者都使用非常相似的文件格式)。我想做与图像相关的事情(分割、活动识别等)。我的主要问题是如何构建培... 查看详情

条件随机场之crf++源码详解-预测(代码片段)

...测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易。预测  上一篇条件随机场训练的源码详解中,有一个地方并没有介绍。就是训练结束后,会把待优化权重alpha等变... 查看详情

crf++使用步骤(代码片段)

1.将CRF++文件的压缩包解压后添加到java的工程目录下2.使用前必须生成train.data和test.data文件并放到crf_learn.exe的同级目录下3.cmd进入目标位置,其中目标位置为:crf_learn.exe的文件目录绝对路径.4.输入命令crf_learn-c10.0templatetrain.datamod... 查看详情

crfpp/crf++编译安装与部署(代码片段)

CRFPP/CRF++编译安装与部署下载CRF++https://taku910.github.io/crfpp/#download说明:在上面网站中下载CRF++0.58解压tarzxfCRF++-0.58.tar.gz-C/usr/local/说明:将文件解压到/usr/local/目录下编译安装CRF++-0.58cd/usr/local/CRF++-0.58./configuremakem 查看详情

crf分割后处理

...于周围像素给每个像素贴上标签,这可能会导致粗分割。CRF接受两个输入,一个是原始图像,另一个是每个像素的预测概率。对于全连接的CRF模型,CRF使用了一种高效的推理算法,在任意特征空间中,两个边势由高斯核的线性组... 查看详情

条件随机场(crf)-基础

  条件随机场(conditionalrandomfields,简称CRF,或CRFs)下文简称CRF,是一种典型的判别模型,相比隐马尔可夫模型可以没有很强的假设存在,在分词、词性标注、命名实体识别等领域有较好的应用。CRF是在马尔可夫随机场的基础... 查看详情

一文搞定memm和crf最大熵马尔科夫和crf

最大熵马尔科夫和CRF最大熵马尔科夫和CRF条件随机场最大熵马尔科夫和CRF最大熵模型(MaxEnt):指的是多元逻辑回归由于等概率的分布具有最大熵,所以最大熵的模型通过词性标注问题来描述就是:在没有任... 查看详情

认识hmm与crf模型(代码片段)

学习目标:了解HMM与CRF模型的输入和输出.了解HMM与CRF模型的作用.了解HMM与CRF模型的使用过程.了解HMM与CRF模型之间的差异.了解HMM和CRF的发展现状.HMM模型的输入和输出HMM(HiddenMarkovModel),中文称作隐含马尔科夫模型,因俄国数学... 查看详情

nlp带你认识经典的序列模型-hmm与crf(代码片段)

认识经典的序列模型HMM与CRF1.HMM模型1.1HMM模型的输入和输出1.2HMM模型的作用1.3HMM模型使用过程简述2.CRF模型2.1CRF模型的输入和输出2.2CRF模型的作用2.3CRF模型使用过程简述3.HMM与CRF模型之间差异4.HMM和CRF的发展现状5.总结1.HMM模型1.1HMM... 查看详情

ml-13-6条件随机场的三个问题(crf-conditionalrandomfield)

目录条件随机场CRF——前向后向算法评估标记序列概率条件随机场CRF——模型参数学习条件随机场CRF——维特比算法解码一、条件随机场CRF——前向后向算法评估标记序列概率  linear-CRF第一个问题是评... 查看详情

crf条件随机场

CRF的进化https://flystarhe.github.io/2016/07/13/hmm-memm-crf/参考:http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/ 标记偏置问题:MEMM最大熵马尔可夫模型  路径1-1-1-1的概率:0.4*0.45*0.5=0 查看详情

bert加bilstm和crf做ner的意义

参考技术Abert为什么加不加crf都行,加crf好处在哪?加crf:相当于是显式地去捕捉标签之间的依赖关系。但是为什么很多人说bert和bert+crf效果差不多,我觉得bert能够表达的语义空间足够丰富,去捕捉到标签之间的依赖关系。也有... 查看详情