前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CRF和LSTM 模型在序列标注上的优劣?

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

作者头像
zenRRan
发布2019-08-30 16:03:27
2.2K0
发布2019-08-30 16:03:27
举报
文章被收录于专栏:深度学习自然语言处理

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

阅读大概需要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的思路。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CRF和LSTM 模型在序列标注上的优劣?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档