论文赏析【EMNLP19】语言模型效果不好?也许你可以给它添加一点句法信息
论文地址
PaLM: A Hybrid Parser and Language Model[1]
介绍
本文介绍了如何将一个句法分析器融入到神经网络语言模型中,这样在利用了句法信息增强语言模型效果的同时,还可以去掉句法上的监督信号,用来无监督地生成句法树。
其实将句法信息加入到语言模型中地思想之前就有了,比如PRPN(Shen et al.[2])和ON-LSTM(Shen et al.[3])。而本文提出了一种新的融入句法信息的方法,相比于之前的两个模型,主要有如下优点:
- 更加符合直觉、更加轻巧,不需要很复杂的解码算法。
- 在LSTM中加入的attention信息可以用句法信息来监督,可解释性更强,可以和语言模型联合训练。
- 如果没有句法信息监督也不要紧,模型可以无监督预测出句法树。
模型
span attention
模型中的attention是怎么做的呢?在 时刻,模型关注以 结尾的所有 span 。但是为了减少运算量,这里只考虑最短的 个 span ,也就是 。
首先采用普通的 RNN 来获得 时刻的隐层表示 ,然后采用双向 WFSA-RRNN (Peng et al.[4])进一步得到表示, WFSA-RRNN 的单元更新公式如下:
然后 span 的表示 可以计算为:
这个式子其实是从下面这个式子推算而来的:
具体计算过程就不在这里看了,详见论文附录,其实就是用的 WSFA-RRNN 的单元更新公式化简得到的。
注意上面向量都省略了前向箭头!
下面就是计算所有 span 表示的算法伪代码:
可以看出复杂度还是挺高的,但是可以用 GPU 并行加速。
然后就是计算attention了。 首先令 为向量 前后向拼接得到,表示 span [i, j] 的最终向量表示。 那么在 时刻,上下文向量 可以表示为:
其中 定义为:
最后拼接 和 作为最后的隐层输出。
总结一下,计算步骤是这样的:
- 首先用一个标准的RNN计算得到隐层表示 。
- 然后将 输入到一层的双向 WSFA-RRNN 中,得到表示 ,并且用上述算法进一步得到 span 的表示。
- 最后对所有以 结尾的 span 表示加权求和,得到下一时刻的隐层表示,并预测下一个单词。
生成句法树
这就和以往自顶向下解码句法树的算法一样了,对于 span ,寻找使得右儿子得分最高的 split 即可:
而如果是有监督的话,对于每个位置 ,都会预测一个 attention ,并且有一个 gold 的左边界 。 注意这里的 不一定是 one-hot 的,因为在一棵句法树中,一个右端点可能对应着很多不同的左端点。 最终的损失函数为:
而这里的句法树监督其实可以用现成的 parser ,或者直接用左右二叉树之类的就行了,主要目的是为了提升语言模型性能。
下图就是一个简单的例子:
实验
这是一篇短文,所以实验就很简单了。
首先是PTB上的语言模型困惑度:
然后是WikiText2上的语言模型困惑度:
两个实验都可以看出加了句法树监督的语言模型效果更好,而无监督隐式的语言模型效果也还可以。注意这里的AWD-LSTM指的是之前提出的一种LSTM变体(Merity et al.[5])。看得出来这些模型参数量其实没多大差别,而如果句法信息乱加监督(比如用右二叉树),效果反而会变差。
接着是无监督句法分析的效果:
可以发现效果还是很差的,只比随机的二叉树好了那么一丢丢。比之前的 PRPN 差许多,和 DIROA 相比就更不用谈了(Drozdov et al.[6])。这也说明了对语言模型有用的句法信息可能并不符合 PTB 句法树结构。
最后还分析了左结合多还是右结合多:
可以看出,基本全部都是右结合,也就是attention基本都聚焦在了 span 的最左边的单词。具体原因作者也不知道,留着未来探索。
后记
其实这篇短文和我 ACL 的工作挺像的,着实让我惊了一身冷汗(希望 ACL 能中,加油!)。
不过这篇还是有些小瑕疵的,比如最大考虑长度 ,这个值在语言模型的训练时用到了,但是分析无监督句法树的时候就去掉限制了,其实会影响无监督句法分析性能的。不过也不要紧,毕竟本文任务不是做句法分析。
再比如算 attention 是要对所有分数做归一化的,但是句法分析又采用了没有归一化的得分来解码,原因是因为一个右边界对应着多个左边界,所以不能用 attention 解码。但其实这个 attention 在做有监督句法信息的时候, gold 的就不是归一化的,也就是非 one-hot 的。总之这里做的挺粗糙的,也没有设计的很优雅。
参考资料
[1]
PaLM: A Hybrid Parser and Language Model: http://arxiv.org/abs/1909.02134
[2]
Neural Language Modeling by Jointly Learning Syntax and Lexicon: http://arxiv.org/abs/1711.02013
[3]
Ordered Neurons: Integrating Tree Structures into Recurrent Neural Networks: http://arxiv.org/abs/1810.09536
[4]
Rational Recurrences: https://arxiv.org/abs/1808.09357
[5]
Regularizing and Optimizing LSTM Language Models: https://arxiv.org/abs/1708.02182
[6]
Unsupervised Latent Tree Induction with Deep Inside-Outside Recursive Autoencoders: http://arxiv.org/abs/1904.02142
论文赏析【EMNLP19】语言模型效果不好?也许你可以给它添加一点句法信息相关推荐
- 论文写作: 实验效果不好怎么办?
摘要: 本贴讨论实验效果不好的应对措施. 讲道理, 论文写作本身只涉及包装, 即将已经做好实验的创新性成果写成一篇论文. 实验效果不好, 是方案设计的问题. 但多数研究者都会遇到这个问题, 所以还是在 ...
- DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析
DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析 前言 ...
- 深度学习中模型训练效果不好的原因以及防止过拟合的方法
深度学习中模型训练效果不好的原因 1. 是否选择合适的损失函数 2. 是否选择了合适的Mini-batch size 3. 是否选择了合适的激活函数 4. 是否选择了合适的学习率 5. 优化算法是否使 ...
- 灯亮怎么办_车辆隔音效果不好怎么办?
会开车并不代表对车了如指掌 日常生活中还是有好多车主 被诸多问题困扰,比如 车辆隔音效果不好怎么办? 扳手形状的故障灯亮起是什么意思? 今天,就由利星大连为您答疑解惑 汽车隔音效果不好该怎么办? 有车 ...
- 训练效果不好的解决办法
一.训练误差来源:bias.variance 李宏毅机器学习tips for deep learning 通过NN模型得到的f的均值和真实值之间的差值为bias f和均值之间的差值为variance ...
- 竞价推广效果不好,是哪些方面影响的呢?
现在做百度竞价的人越来越多,在竞价推广中难免会遇到各种各样的问题,大多数问题是光花钱却没有带来效果,那竞价推广效果不好,原因有哪些呢? 一.恶意点击 很多企业在竞价推广中都免不了的是同行的恶意点击,为 ...
- 百度竞价效果不好的原因
最近两年听到很中小企业的心声:"竞价效果越来越差,推广成本越来越高.前几年花很少的推广费就可以带来很多潜在客户有效咨询,并且能够成交一些.现在推广费高,很少有客户咨询,并且咨询了的客户很多都 ...
- 弘辽科技:淘宝推广效果不好?是由哪些原因造成的?该如何解决?
原标题<弘辽科技:淘宝推广效果不好?是由哪些原因造成的?该如何解决?> 毋庸置疑,使用推广工具对整体提高店铺数据有很大的帮助,效果也会更好.但有些淘宝卖家担心自己没有使用过推广工具,没有相 ...
- (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果、安装视频+ppt模板(已降重)
项目介绍: (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果.安装视频+ppt模板(已降重) 高清视频演示: https://www.bilibili.com ...
- SSD针对小物体检测效果不好的现象的思考
SSD针对小物体检测效果不好的现象的思考 最近在用ssd-caffe进行物体检测,但是在使用的过程中,发现ssd对小物体的检测效果很不好. 阅读了为什么SSD(Single Shot MultiBox ...
最新文章
- 普鲁克分析(Procrustes Analysis)评估物种-环境/功能关联度的一个示例
- Learun FrameWork 强大工作流引擎,让OA更智能
- narray删除列 python_Python数据分析入门教程(四):数值操作
- win32 masm32 汇编学习 及 远程线程实例
- Jenkins系列——使用Dashboard View分类展示作业
- mysql003操作表DDL
- 前端学习(549):node的 http模块
- 这个世界本来就是残酷的,所以你不能怪C++向你展示了世界的本质!
- 10个强大实用数据地图,不懂代码也能做!(附demo)
- C++字符串处理小结
- PIM DM技术原理与实验
- php文件锁不起作用,php文件锁产生的问题和解决方案(一个真实案例)
- Request 对象
- c语言除法保留1位小数,高精度除法小数点位数
- Linux环境安装之Ant
- winapi检测鼠标是否在任务栏
- ks检验 matlab,KS检验
- leet343整数拆分
- cordova 微信支付
- 微信发个原图,居然隐私曝光这么多…可怕