全连接条件随机场_CRF条件随机场
概念
条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用。
引入
假设我们有Bob一天从早到晚的一系列照片,Bob想考考我们,要我们猜这一系列的每张照片对应的活动,比如: 工作的照片,吃饭的照片,唱歌的照片等等。一个比较直观的办法就是,我们找到Bob之前的日常生活的一系列照片,然后找Bob问清楚这些照片代表的活动标记,这样我们就可以用监督学习的方法来训练一个分类模型,比如逻辑回归,接着用模型去预测这一天的每张照片最可能的活动标记。
这种办法虽然是可行的,但是却忽略了一个重要的问题,就是这些照片之间的顺序其实是有很大的时间顺序关系的,而用上面的方法则会忽略这种关系。比如我们现在看到了一张Bob闭着嘴的照片,那么这张照片我们怎么标记Bob的活动呢?比较难去打标记。但是如果我们有Bob在这一张照片前一点点时间的照片的话,那么这张照片就好标记了。如果在时间序列上前一张的照片里Bob在吃饭,那么这张闭嘴的照片很有可能是在吃饭咀嚼。而如果在时间序列上前一张的照片里Bob在唱歌,那么这张闭嘴的照片很有可能是在唱歌。
为了让我们的分类器表现的更好,可以在标记数据的时候,可以考虑相邻数据的标记信息。这一点,是普通的分类器难以做到的。而这一块,也是CRF比较擅长的地方。
HMM-隐马尔科夫模型
给定一个观测序列observations, HMM models joint probability . 以词性标注任务举例。 稍不同于linear CRF,HMM可以用有向图模型来表示,因为states与observations之间存在着明显的依赖关系。下图为有向图!! 在HMM的模型下,有两个假设:
- 齐次马尔科夫假设(S)
- 观测独立假设
公式:
公式表示的是在特定的句子下,序列集合中找到概率最大的词性序列! W and T 指输入单词序列,和输出词性序列。 公式首先应用了贝叶斯公式展开,随后 HMM 做了3个假设进行公式化简:由词之间 conditionally independent 得到∏i=1nPr(Wi∣T)prod_{i=1}^{n}Pr(Wi|T)i=1∏nPr(Wi∣T) 由probability of a word is only dependent on its own tag 得到发射概率 emission probability ∏i=1nPr(Wi∣ti)prod_{i=1}^{n}Pr(Wi|ti)i=1∏nPr(Wi∣ti) and Markov assumption: 使用bi-gram近似得到转移概率 Transition probabilityPr(ti∣ti−1)Pr(ti|ti-1)Pr(ti∣ti−1)
这些假设使得HMM能够计算出给定一个词和它可能的词性的联合概率分布。换句话说,HMM假设了两类特征,一是当前词词性与上一个词词性的关系,以及当前词语和当前词性的关系,所以存在局部归一化问题,分别对应着转移概率和发射概率。HMM的学习过程就是在训练集中学习这两个概率矩阵(大小为 (tt),(tw))。
稍不同于linear CRF,HMM可以用有向图模型来表示,因为states与observations之间存在着明显的依赖关系。
CRF条件随机场
和HMM不同的是,CRF并没有做出上述的假设,CRF使用feature function来更抽象地表达特征,使得他不再局限于HMM的两类特征。由节点v和连接节点的边e组成的集合。记作G=(V,E)。CRF是无向图,无向图指边没有方向的图。
条件随机域(场)(conditionalrandom fields,简称 CRF,或CRFs),是一种判别式概率模型,是随机场的一种。条件随机场(CRF)由Lafferty等人于2001年提出,结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型,近年来在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果。常用于标注或分析序列资料,如自然语言文字或是生物序列。如同马尔可夫随机场,条件随机场为具有无向的图模型,无向图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场中,随机变量 Y 的分布为条件概率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链结式的架构,链结式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在效率较高的算法可供演算。
CRF被用于中文分词和词性标注等词法分析工作,一般序列分类模型常常采用隐马尔可夫模型(HMM),像基于类的中文分词。但隐马尔可夫模型中存在两个假设:输出独立性假设和马尔可夫性假设。其中,输出独立性假设要求序列数据严格相互独立才能保证推导的正确性,而事实上大多数序列数据不能被表示成一系列独立事件。而条件随机场则使用一种概率图模型,具有表达长距离依赖性和交叠性特征的能力,能够较好地解决标注(分类)偏置等问题的优点,而且所有特征可以进行全局归一化,能够求得全局的最优解。
CRF缺点: 模型复杂,算法时间长。
从例子说起——词性标注问题
在实际应用中,自然语言处理中的词性标注(POS Tagging)就是非常适合CRF使用的地方。词性标注的目标是给出一个句子中每个词的词性(名词,动词,形容词等)。而这些词的词性往往和上下文的词的词性有关,因此,使用CRF来处理是很适合的,当然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中的一种简单情况。
从特征函数到概率
定义好一组特征函数后,我们要给每个特征函数f_j赋予一个权重λ_j。现在,只要有一个句子s,有一个标注序列l,我们就可以利用前面定义的特征函数集来对l评分。
上式中有两个求和,外面的求和用来求每一个特征函数f_j评分值的和,里面的求和用来求句子中每个位置的单词的的特征值的和。
对这个分数进行指数化和标准化,我们就可以得到标注序列l的概率值p(l|s),如下所示:
几个特征函数的例子
前面我们已经举过特征函数的例子,下面我们再看几个具体的例子,帮助增强大家的感性认识。
当l_i是“副词”并且第i个单词以“ly”结尾时,我们就让f1 = 1,其他情况f1为0。不难想到,f1特征函数的权重λ1应当是正的。而且λ1越大,表示我们越倾向于采用那些把以“ly”结尾的单词标注为“副词”的标注序列
如果i=1,l_i=动词,并且句子s是以“?”结尾时,f2=1,其他情况f2=0。同样,λ2应当是正的,并且λ2越大,表示我们越倾向于采用那些把问句的第一个单词标注为“动词”的标注序列。
当l_i-1是介词,l_i是名词时,f3 = 1,其他情况f3=0。λ3也应当是正的,并且λ3越大,说明我们越认为介词后面应当跟一个名词。
如果l_i和l_i-1都是介词,那么f4等于1,其他情况f4=0。这里,我们应当可以想到λ4是负的,并且λ4的绝对值越大,表示我们越不认可介词后面还是介词的标注序列。
好了,一个条件随机场就这样建立起来了,让我们总结一下: 为了建一个条件随机场,我们首先要定义一个特征函数集,每个特征函数都以整个句子s,当前位置i,位置i和i-1的标签为输入。然后为每一个特征函数赋予一个权重,然后针对每一个标注序列l,对所有的特征函数加权求和,必要的话,可以把求和的值转化为一个概率值.
参考: https://x-algo.cn/index.php/2016/02/27/crf-of-chinese-word-segmentation/ https://www.cnblogs.com/xingnie/p/12360714.html https://zhuanlan.zhihu.com/p/70067113
全连接条件随机场_CRF条件随机场相关推荐
- 【CV】DeepLab:使用DCNN、空洞卷积和全连接条件随机场的图像语义分割网络
论文名称:DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Full ...
- 全连接条件随机场_条件随机场CRF简介
作者:Ravish Chawla 编译:ronghuaiyang 导读 一个简单明了的对条件随机场的说明,给大家一个非常直观的印象,CRF到底是个什么东西,能干什么用. 条件随机场是一种用于序列预测的 ...
- 使用左 右 全 内连接及使用where条件语句的区别
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 使用左. ...
- MySQL数据库基础(多表关联查询、内外全连接、复合条件查询、子查询)
文章目录 一.笛卡尔积查询 二.内.外.全连接查询 三.复合条件查询 四.子查询 五.EXIST判断 本篇文章主要介绍MySQL里的多表关联查询,其中包括了笛卡尔积查询.内连接查询.外连接查询.全连接 ...
- 外连接有 OR 关联条件只能走 NL优化
原文链接(阅读原文提升阅读体验):https://www.modb.pro/db/23257?cyn 摘要:外连接有OR关联条件只能走NL,若驱动表的结果集较大,则会产生大量的关联,会产生性能问题,需 ...
- mysql连表查询on条件_mysql 外连接的时候,条件在on后面和条件在where后面的区别...
最近使用mysql的时候碰到一个问题:当一个表外联另一个表的时候,将一些查询条件放在on后面和放在where后面不太一样: 学生分数表stuscore: 当查询语句如下(查询语句1): SELECT ...
- 辞职在家全职炒股需要什么条件?
很多散户朋友都想过类似题主的问题"辞职在家全职炒股需要什么条件?"或者"自己能不能辞职在家全职炒股?",特别是在一波行情之后,自己在股市中有所盈利容易萌发这样的 ...
- 【深度学习】深度神经网络后处理之全连接CRFs(DenseCRF)
[深度学习]深度神经网络后处理之全连接CRFs(DenseCRF) 文章目录 1 概述 2 条件随机场2.1 什么样的问题需要CRF模型2.2 随机场到马尔科夫随机场2.3 从马尔科夫随机场到条件随机 ...
- PyTorch全连接ReLU网络
PyTorch全连接ReLU网络 1.PyTorch的核心是两个主要特征: • 一个n维张量,类似于numpy,但可以在GPU上运行 • 搭建和训练神经网络时的自动微分/求导机制 本文将使用全连接的R ...
最新文章
- 多行字符串,带有多余的空格(保留缩进)
- 【STM32】 keil软件介绍--工具栏
- 区块链开发公司谈区块链在商业上的应用
- 软件开发人员想找的工作,随便聊聊,娱乐大家,请补充补充
- Linux服务器Cache占用过多内存导致系统内存不足问题的排查解决(续)
- 苹果电脑获取Android Studio的发布版SHA1和开发版SHA1
- CentOS 6.9修改网卡名eth1为eth0
- Ridge regression
- 国外动态住宅ip怎么使用?
- word:清除格式(设置快捷键)
- QT 打开选择文件对话框
- 双目相机标定(MATLAB TOOLBOX_calib)
- 杀毒软件开发,原理、设计、编程实战
- UITextView - 2
- java开发深圳平均工资_深圳2017平均工资100173元!!这次你又又又拖后腿了吗!?...
- SAP 中的货币(Currencies)
- 学会这三款软件,可以轻松完成录音转文字操作
- Java中线程的状态。
- 《算法竞赛入门经典》第三章思考题
- 朴素贝叶斯-后验概率最大化的含义(公式最后的推导)
热门文章
- 实时音视频技术的演进与应用
- AWS Elemental推出新一代基于云的直播视频服务
- GIAC | 大数据分析系统在游戏领域的迭代与实践
- 超多干货!支撑起腾讯公司计费业务的TDSQL(附PPT)
- ElasticSearch查询 第四篇:匹配查询(Match)
- 关于ngx_trylock_accept_mutex的一些解释
- 解决gradle下载慢的问题
- javaSE各阶段练习题--数据类型运算符
- leetcode 149. Max Points on a Line |149. 直线上最多的点数(Java)
- leetcode 303. Range Sum Query - Immutable | 303. 区域和检索 - 数组不可变(一维前缀和问题)