论文赏析[NAACL19]一个更好更快更强的序列标注成分句法分析器
原文链接:
Better, Faster, Stronger Sequence Tagging Constituent Parsersgodweiyang.com
为了看懂论文里的策略梯度,又去把强化学习看了一遍。。。
论文地址:
Better, Faster, Stronger Sequence Tagging Constituent Parsersarxiv.org
介绍
这篇论文主要是在之前的那篇论文
Constituent Parsing as Sequence Labelinggodweiyang.com
基础上解决了如下三个问题:
太长的短语预测错误率高。
输出空间太大导致label稀疏性。
贪心解码导致的错误传播。
本文提出的解决方法分别是:
采用融合了相对编码和绝对编码的动态编码。
将预测任务分解为多个子任务。
采用辅助任务和策略梯度。
三大问题以及解决方法
过长短语预测的高错误率
由下面这张图可以看出,当 太小时,准确率就会大幅下降。这个问题主要体现在过长短语的闭合上,右括号的预测尤其困难。其实这也跟数据稀疏性有很大关系,训练集中过长短语毕竟占少数。
解决方法就是采用动态编码,如下图所示:
第一行是相对值编码,第二行是绝对值编码,之前文章都已经解释过了。第三行是结合了上面两种编码的动态编码,具体取值情况是大多数时候都还采用相对值编码,因为毕竟相对值编码空间比较小,可以适当缓解数据稀疏性。但是当满足如下两种情况的时候,就采用绝对值编码:
绝对值 ,也就是说CA的个数不能超过3个,这样也是为了降低数据的稀疏性。
相对值 ,也就是说将上图中准确率比较低的那些负数值全部用绝对值替代了,在句法树中表现为 所在的子树比 低两层以上。
输出空间太大导致label稀疏性
这个问题主要是由于三元组 太稀疏了导致的。假设 ,那么这个三元组的状态空间是 ,可以通过将三元组分解为三个不同的子任务将复杂度降低为 。最后的损失函数定义为三个子任务的损失之和:
具体实现上,可以将任务 的输出给任务 和 作为输入。
贪心解码导致的错误传播
这个问题在基于贪心的方法中基本都存在,也就是所谓的一步错步步错,这里主要提出了两种解决方法。
辅助任务 辅助任务主要就是用来帮助主任务学习到一些不太容易学到的信息。这里才用了两个辅助任务,一个是在预测 的同时再预测一个 ,这样就能往后多预测一步,适当的减少了贪心的影响。另一个方法就是将之前博客写到的句法距离(syntactic distances)加入到模型中一起预测:
对于不同的辅助任务,最后将他们的损失求和加到最终的损失函数中去:
策略梯度 这个方法可以从全局的角度来对模型进行优化。假设模型在 时刻的状态为 ,输出标签为 ,那么模型选择 的概率定义为策略 ,模型最终可以获得的奖励为 ,定义为句法树的F1值。
定义句法树的概率为每一步决策的概率之积:
所以模型最终就是要最大化如下的奖励:
按照梯度上升的方向更新参数 ,求梯度可得:
将 代入可得:
其中 是根据分布 采样出来的 棵句法树的奖励。
具体实现的时候有好几个小Tips。
第一个就是要将奖励减去一个baseline,这里定义为模型直接根据贪心求得的句法树的F1值:
这么做的目的就是为了让奖励有正有负,不然全部都是正数的话,因为采样不可能全部采样到,可能会导致高概率的样本概率越来越高,而没有采样到的低概率样本可能奖励非常高,却因此概率越来越低。
第二个Tip就是加入熵作为正则项:
目的就是使概率尽量不要太小,不然的话采样数不够的话就有可能造成采样不到小概率的样本。
还有就是给策略加入噪声:
目的同样是加大概率,防止概率太接近于0,当然这个可加可不加。。。
实验结果
首先测试了不同设置的影响:
可以看出上面提到的几种方法对性能都有提升,其中采用动态编码、多任务(也就是减少输出空间)、辅助任务(主要是预测前一个 )还有策略梯度可以获得最好的结果。
最终模型在测试集上取得了90.6的F1值,虽然不是很高,但比之前的序列标注模型提升还是不少。
最后再来看一下模型在负数预测上的准确率,可以看出有了非常大的提升:
总结
这篇论文提出了不少的小Tips来提升序列模型的准确率,但是效果却还是远远低于syntactic distances那篇论文(F1值91.8),具体原因我也不得而知,我猜测跟树到序列映射编码关系可能不是特别大,可能还是跟序列建模有关,那篇论文的序列采用了两次LSTM,中间还夹杂了一次CNN卷积操作。所以编码器的好坏还是直接决定了最后性能的好坏,怪不得Elmo和Bert的效果那么的突出。
论文赏析[NAACL19]一个更好更快更强的序列标注成分句法分析器相关推荐
- [论文浅析]ICLR2017 跨语言,跨任务,跨领域序列标注
公众号关注 "忆语臻言" 设为 "星标",一起学习进步! 本文介绍ICLR2017的一篇文章,题目为"transfer learning for se ...
- 论文阅读04:使用序列标注的方式解决实体和关系的联合抽取
公众号:数据挖掘与机器学习笔记 Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme 1.摘要 实体和关 ...
- 56.4 AP!超越YOLOv4,更快更强的CenterNet2来了!
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 代码:https://github.com/xingyizhou/CenterNet2 论文:http ...
- IEEE ICIP 2019 | 更快更好的联邦学习:一种特征融合方法
目录 前言 Abstract 1.Introduction 2.Related Work 3.Methods 3.1 Feature Fusion Modules 3.1.1 Conv operato ...
- YOLOv5全面解析教程③:更快更好的边界框回归损失
作者|Fengwen.BBuf 边界框回归是目标检测的关键步骤,在现有方法中,虽然被广泛用于边界框回归,但它不是针对评估指标量身定制的,即 Intersection over Union (IoU). ...
- 极智Paper | YOLOv7 更高 更快 更强
欢迎关注我的公众号 [极智视界],获取我的更多笔记分享 大家好,我是极智视界,本文解读一下 更高.更快.更强的 YOLOv7:Trainable bag-of-freebies sets ne ...
- 清华大学丁霄汉:深度网络重参数化——让你的模型更快更强
不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并想方设法搞到一手的PPT和现场视频--足 ...
- 正则表达式匹配可以更快更简单 (but is slow in Java, Perl, PHP, Python, Ruby, ...)
source: https://swtch.com/~rsc/regexp/regexp1.html translated by trav, travmymail@gmail.com 引言 下图是两种 ...
- 围棋人机大战一周年:如何让AlphaGo更快更轻盈
感谢PaperWeekly公众号(paperweekly)授权CSDN发布. 原文:特邀 | 围棋人机大战一周年:如何让AlphaGo更快更轻盈 欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件 ...
- 使用现场总线更快更远
使用现场总线更快更远 Going faster and further with Fieldbus PROCENTEC等行业专家表示,基于RS-485的现场总线技术(PROFIBUS®)和工业以太网( ...
最新文章
- sublime运行错误
- 数据结构之顺序栈的一些基本操作
- 计算机老师任课教师寄语,任课老师寄语大全
- Realsense安装使用过程问题汇总
- 神经网络模型压缩优化方法
- windows无法完成安装 若要在此计算机上安装_Win10无法启动,主引导记录(MBR)损坏,用这个方法快速修复...
- 实现消息存档—微信聊天记录组件
- 世界各个国家及其国家代码
- php死循浏览器卡死,Win10 Edge浏览器假死解决方案
- Sqli-Lab | Less 21-23
- Kubernetes k8s理论篇
- ChatGPT指令大全(中文版)
- 全屏滚动,微场景,H5全屏切换滚动页面制作的方法介绍
- webaudio ajax,Web Audio 入门之读取左右声道数据
- 浅谈如何加强企业成本管理
- iOS上架App Store详解(图文)
- 在Python中,可以使用try-except语句来处理异常。
- android手机震动
- 非标资产与标准资产_资产商店行动新闻– 2011年10月!
- maven中的命令行命令