专栏首页深度学习自然语言处理CRF和LSTM 模型在序列标注上的优劣?

CRF和LSTM 模型在序列标注上的优劣?

点击上方,选择星标置顶,每天给你送干货

阅读大概需要7分钟

跟随小博主,每天进步一丢丢

编辑:忆臻

https://www.zhihu.com/question/46688107

本文仅作为学术分享,如果侵权,会删文处理

CRF和LSTM 模型在序列标注上的优劣?

作者:谢志宁 https://www.zhihu.com/question/46688107/answer/117448674

两者各有优缺点:

LSTM:像RNN、LSTM、BILSTM这些模型,它们在序列建模上很强大,它们能够capture长远的上下文信息,此外还具备神经网络拟合非线性的能力,这些都是crf无法超越的地方,对于t时刻来说,输出层y_t受到隐层h_t(包含上下文信息)和输入层x_t(当前的输入)的影响,但是y_t和其他时刻的y_t`是相互独立的,感觉像是一种point wise,对当前t时刻来说,我们希望找到一个概率最大的y_t,但其他时刻的y_t`对当前y_t没有影响,如果y_t之间存在较强的依赖关系的话(例如,形容词后面一般接名词,存在一定的约束),LSTM无法对这些约束进行建模,LSTM模型的性能将受到限制。

CRF:它不像LSTM等模型,能够考虑长远的上下文信息,它更多考虑的是整个句子的局部特征的线性加权组合(通过特征模版去扫描整个句子)。关键的一点是,CRF的模型为p(y | x, w),注意这里y和x都是序列,它有点像list wise,优化的是一个序列y = (y1, y2, …, yn),而不是某个时刻的y_t,即找到一个概率最高的序列y = (y1, y2, …, yn)使得p(y1, y2, …, yn| x, w)最高,它计算的是一种联合概率,优化的是整个序列(最终目标),而不是将每个时刻的最优拼接起来,在这一点上CRF要优于LSTM。

HMM:CRF不管是在实践还是理论上都要优于HMM,HMM模型的参数主要是“初始的状态分布”,“状态之间的概率转移矩阵”,“状态到观测的概率转移矩阵”,这些信息在CRF中都可以有,例如:在特征模版中考虑h(y1), f(y_i-1, y_i), g(y_i, x_i)等特征。

CRF与LSTM:从数据规模来说,在数据规模较小时,CRF的试验效果要略优于BILSTM,当数据规模较大时,BILSTM的效果应该会超过CRF。从场景来说,如果需要识别的任务不需要太依赖长久的信息,此时RNN等模型只会增加额外的复杂度,此时可以考虑类似科大讯飞FSMN(一种基于窗口考虑上下文信息的“前馈”网络)。

CNN+BILSTM+CRF:这是目前学术界比较流行的做法,BILSTM+CRF是为了结合以上两个模型的优点,CNN主要是处理英文的情况,英文单词是由更细粒度的字母组成,这些字母潜藏着一些特征(例如:前缀后缀特征),通过CNN的卷积操作提取这些特征,在中文中可能并不适用(中文单字无法分解,除非是基于分词后),这里简单举一个例子,例如词性标注场景,单词football与basketball被标为名词的概率较高, 这里后缀ball就是类似这种特征。

BILSTM+CRF的Tensorflow版本:https://github.com/chilynn/sequence-labeling,主要参考了GitHub - glample/tagger: Named Entity Recognition Tool的实现,tagger是基于theano实现的,每一轮的参数更新是基于一个样本的sgd,训练速度比较慢。sequence-labeling是基于tensorflow实现的,将sgd改成mini-batch sgd,由于batch中每个样本的长度不一,训练前需要padding,最后的loss是通过mask进行计算(根据每个样本的真实长度进行计算)。

作者:愚蠢队长 https://www.zhihu.com/question/46688107/answer/120114053

一、 做为一种概率图模型,CRF在理论上更完美一些,一步一步都有比较坚实的理论基础。不过CRF的假设也比较明确,然而问题不总是能match其假设的。 LSTM理论上是能拟合任意函数的,对问题的假设明显放宽了很多。不过深度学习类模型的理论原理和可解释性一般。

二、 CRF比较难扩展,想在图模型上加边加圈,得重新推导公式和写代码。 LSTM想stack起来、改双向、换激活函数等,只不过左手右手一个慢动作的事儿。

三、 CRF针对大数据不好做。 LSTM有各种GPU加速,多机异步SGD等标准大数据训练套路。但同样的问题,训练数据不够的话过拟合会很严重,效果堪忧。

四、 LSTM可以当做对序列的一种『中间状态』的建模,建模结果还可以当做特征,扔给其他模型继续用。

作者:万广鲁 https://www.zhihu.com/question/46688107/answer/136928113

LSTM和crf是两个层面的东西。

crf的核心概念,是计算序列全局的似然概率,其更像一个loss的选择方式。与其相对应的应该是cross entropy。crf把一个序列当作一个整体来计算似然概率,而不是计算单点的似然概率。这样使得其在序列标注问题中效果比较好。

即使现在主流使用LSTM模型的,也会在loss层使用crf,基本验证是更好的。而与LSTM相对应的应该是原来crf模型中特征层面的东东。比如在传统的crf模型中,需要人工选择各种特征,但是目前主流的解决方案中倾向于,embedding层+bilstm层,直接机器学习到特征。也就是end-to-end的思路。

本文分享自微信公众号 - 深度学习自然语言处理(zenRRan)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 双向LSTM-CRF模型用于序列标注

    本文是2015年百度的三位作者提出的,主要研究了一系列基于LSTM模型上的序列标注任务的性能。模型包括LSTM,BI-LSTM,LSTM-CRF,BI-LSTM...

    zenRRan
  • 【论文解读】基于Transformer增强架构的中文语法纠错

    语法纠错(Grammatical Error Correction, GEC)任务,旨在利用自然语言处理技术,自动识别并纠正非中文母语学习者书写的文本中所包含的...

    zenRRan
  • 【基础】如何理解LSTM后接CRF?

    地址 | https://www.zhihu.com/question/62399257/answer/241969722

    zenRRan
  • 创业者参加创业大赛能获得哪些创业资源?最新创业大赛有哪些?

    随着国家“大众创新,万众创业”号召,社会上也涌现出了不少的创业大赛,参加这些创业大赛,除了能够获得奖金之外,创业者还能获得哪些创业资源呢?

    用户2158343
  • Python基础(15)——正则表达式

    re.match(正则表达式,要匹配的字符串),匹配出以字符串的起始位置开始匹配正则表达式,如果匹配,返回匹配对象(Match Object),否则返回None...

    羊羽shine
  • 【干货】zabbix报警信息提取 |从数据库入手

    zabbix报警信息提取 在日常的监控中,我们除了日常的zabbix操作外,我们有的时候还涉及到与其他公司 进行数据对接。由于别的公司的数据对接很多时候并不是按...

    小小科
  • Python file 方法

    file object = open(file_name [, access_mode][, buffering])

    py3study
  • linux之shell综合例子之定时任务

    绝命生
  • HanLP-最短路径分词

    今天介绍的内容是最短路径分词。最近换回了thinkpad x1,原因是mac的13.3寸的屏幕看代码实在是不方便,也可能是人老了吧,^_^。等把HanLP词法分...

    IT小白龙
  • 知乎质量平台的设计和实现

    其中的每一项工作都产生了大量质量数据,这些数据不仅可以用来衡量 QA 团队工作的效果,我们还可以通过质量数据的发布进一步增强其他团队质量意识,更好的建设全公司的...

    Spark学习技巧

扫码关注云+社区

领取腾讯云代金券