论文地址

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】语言模型效果不好?也许你可以给它添加一点句法信息相关推荐

  1. 论文写作: 实验效果不好怎么办?

    摘要: 本贴讨论实验效果不好的应对措施. 讲道理, 论文写作本身只涉及包装, 即将已经做好实验的创新性成果写成一篇论文. 实验效果不好, 是方案设计的问题. 但多数研究者都会遇到这个问题, 所以还是在 ...

  2. DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析

    DMC-Net: Generating Discriminative Motion Cues for Fast Compressed Video Action Recognition 论文赏析 前言 ...

  3. 深度学习中模型训练效果不好的原因以及防止过拟合的方法

    深度学习中模型训练效果不好的原因 1. 是否选择合适的损失函数 2. 是否选择了合适的Mini-batch size 3. 是否选择了合适的激活函数 4. 是否选择了合适的学习率 5. 优化算法是否使 ...

  4. 灯亮怎么办_车辆隔音效果不好怎么办?

    会开车并不代表对车了如指掌 日常生活中还是有好多车主 被诸多问题困扰,比如 车辆隔音效果不好怎么办? 扳手形状的故障灯亮起是什么意思? 今天,就由利星大连为您答疑解惑 汽车隔音效果不好该怎么办? 有车 ...

  5. 训练效果不好的解决办法

    一.训练误差来源:bias.variance 李宏毅机器学习tips for deep learning 通过NN模型得到的f的均值和真实值之间的差值为bias f和均值之间的差值为variance ...

  6. 竞价推广效果不好,是哪些方面影响的呢?

    现在做百度竞价的人越来越多,在竞价推广中难免会遇到各种各样的问题,大多数问题是光花钱却没有带来效果,那竞价推广效果不好,原因有哪些呢? 一.恶意点击 很多企业在竞价推广中都免不了的是同行的恶意点击,为 ...

  7. 百度竞价效果不好的原因

    最近两年听到很中小企业的心声:"竞价效果越来越差,推广成本越来越高.前几年花很少的推广费就可以带来很多潜在客户有效咨询,并且能够成交一些.现在推广费高,很少有客户咨询,并且咨询了的客户很多都 ...

  8. 弘辽科技:淘宝推广效果不好?是由哪些原因造成的?该如何解决?

    原标题<弘辽科技:淘宝推广效果不好?是由哪些原因造成的?该如何解决?> 毋庸置疑,使用推广工具对整体提高店铺数据有很大的帮助,效果也会更好.但有些淘宝卖家担心自己没有使用过推广工具,没有相 ...

  9. (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果、安装视频+ppt模板(已降重)

    项目介绍: (精品)JAVA SSM框架黄淮学院食堂仓库管理系统的设计与实现源码+论文+查重报告+效果.安装视频+ppt模板(已降重) 高清视频演示: https://www.bilibili.com ...

  10. SSD针对小物体检测效果不好的现象的思考

    SSD针对小物体检测效果不好的现象的思考 最近在用ssd-caffe进行物体检测,但是在使用的过程中,发现ssd对小物体的检测效果很不好. 阅读了为什么SSD(Single Shot MultiBox ...

最新文章

  1. 普鲁克分析(Procrustes Analysis)评估物种-环境/功能关联度的一个示例
  2. Learun FrameWork 强大工作流引擎,让OA更智能
  3. narray删除列 python_Python数据分析入门教程(四):数值操作
  4. win32 masm32 汇编学习 及 远程线程实例
  5. Jenkins系列——使用Dashboard View分类展示作业
  6. mysql003操作表DDL
  7. 前端学习(549):node的 http模块
  8. 这个世界本来就是残酷的,所以你不能怪C++向你展示了世界的本质!
  9. 10个强大实用数据地图,不懂代码也能做!(附demo)
  10. C++字符串处理小结
  11. PIM DM技术原理与实验
  12. php文件锁不起作用,php文件锁产生的问题和解决方案(一个真实案例)
  13. Request 对象
  14. c语言除法保留1位小数,高精度除法小数点位数
  15. Linux环境安装之Ant
  16. winapi检测鼠标是否在任务栏
  17. ks检验 matlab,KS检验
  18. leet343整数拆分
  19. cordova 微信支付
  20. 微信发个原图,居然隐私曝光这么多…可怕

热门文章

  1. Struts2文件配置 登陆页面
  2. 怎样让jquery mobile 的footer/header 固定?
  3. ubuntu nginx 伪静态 设置
  4. WP7开发平台介绍及开发注意事项【WP7学习札记之二】
  5. UPC 2019年第二阶段我要变强个人训练赛第六场
  6. 网络操作系统第224页作业
  7. 生成Ipa安装包的plist文件后生成下载链接
  8. easyui textarea IE8中无法换行
  9. Spring 入门 Ioc-Annotation
  10. php数组的概述及分类与声明