【论文解读】EMNLP2019-多粒度自注意力机制
点击上方,选择星标或置顶,每天给你送干货!
阅读大概需要7分钟
跟随小博主,每天进步一丢丢
来自:算法码上来
论文地址
Multi-Granularity Self-Attention for Neural Machine Translation[1]
介绍
现在主流的机器翻译模型基本都是采用多头注意力机制来对句子进行编码解码,但是有一些研究表明,这么多 head 其实并不是都有用的,有些 head 的信息是冗余的,所以本文就想充分利用一下这些冗余的 head 。
此外,统计机器翻译的研究也表明了,对短语的翻译效果可能要好于对单个单词的翻译,所以本文将一些 head 用来建模短语(比如 2-gram 或者 3-gram)。
最后本文在两个翻译任务(WMT14 英译德和 NIST 中译英)上做了实验,效果都要好于普通的 Transformer ,但是运行速度上慢了许多。
多粒度自注意力机制(MG-SA)
整体框架
首先将单词级别的输入
映射为短语级别的表示 :
其中
是第 个 head 对应的映射函数,针对不同的短语粒度有不同的映射函数。而 是短语的个数,不同粒度个数也是不同的。
然后对于第
个 head 来说,将 分别做线性变换,得到自注意力机制的 query、key 和 value:
这样三种向量都被映射到了相同的维度: 。
接着做 self-attention 得到每个单词的输出:
最后将
个 head 输出拼接起来得到了最后的输出:
短语划分
短语划分有两种方式,一种是 n-gram ,一种是根据句法树划分。n-gram 划分方式就是将句子
等分为 个短语得到 。而句法树划分就是按照句法树的不同层次得到不同粒度的短语,如下图所示:
绿色框是第一层,有 2 个短语,粒度比较大。红色框是第二层,有 4 个短语,粒度小一点。
短语组合
每个短语
的表示可以用不同的网络来得到:
这里
函数可以用 CNN、LSTM 或者自注意力网络(SAN)。
最后所有短语的表示记为
。
短语交互
这些短语之间也像单词一样做一下上下文表示,效果可能会更好:
这里
可以选择 LSTM 或者编码结构能力好的 ON-LSTM[2] 。
最后如下图所示,通过短语划分、短语组合、短语交互,模型得到了不同粒度的各个短语表示:
损失函数
这里添加了一个辅助任务用来增强效果:短语标签预测。也就是对于
而言,在句法树中对应着 个短语标签 。然后用一个线性变换接 softmax 来预测标签的概率:
最后标签预测的损失函数就是:
最终的损失函数还得再加上机器翻译的损失:
这里的
就是机器翻译的输出单词, 在实验中设置为了 。
实验
模型是在 Transformer 基础上修改的,把四分之一的 head 还用来做单词级别的 self-attention 。对于 n-gram 划分来说,四分之三的 head 分别用来做 2-gram、3-gram 和 4-gram 短语的 self-attention 。对于句法树短语划分来说,四分之三的 head 正好对应了最高的三层短语的 self-attention 。
实验主要得出了三点结论,如果不想看细节的,可以只看结论了:
融入了 MG-SA 的 Transformer 的确提高了机器翻译的 BLUE 得分。
MG-SA 确实可以促进目标短语的生成。
MG-SA 确实可以捕捉到不同粒度的短语信息。
不同短语组合策略
可以看出三种策略效果都比普通的 Transformer 好,SAN 的效果最好,所以后面实验都用 SAN 。
不同 encoder 层
MG-SA 用的层数越低效果越好,只用在最低层上效果最好(可能是因为直接和单词表示接触,对短语建模更有利),所以后面实验都只用到最低层上。
短语划分、标签监督和短语交互策略影响
这个也不用过多解释,说明了句法树划分短语比 n-gram 划分短语效果好,短语标签预测辅助任务确实有用,用 ON-LSTM 融合短语确实要更好。
输出 n-gram 性能提升
通过对翻译结果的 n-gram 的 BLEU 得分进行分析,可以看出几种 MG-SA 的变体效果都是好于普通的 Transformer 的,说明了确实可以促进目标短语的生成。
主要结果
无论是 Transformer 的 base 还是 large 版本,加上 MG-SA 之后效果都有较大提升,base 版本加上去之后效果甚至逼近了 large 版本,同时参数量并没有多太多。
attention 可视化
可以看出,普通的 Transformer(左边)每个词主要聚焦于前后一个词和句子结束标记,而 MG-SA 则大多聚焦于句子的关键词“三峡工程”和“首要任务”。
多粒度标签预测任务
做了 5 个探测任务:Voice(主动被动)、Tense(时态)、TSS(根结点下层标签序列预测)、SPC(单词的最小包含短语标签)和 POS(词性标注)。
模型就是在 MG-SA 的 encoder 上面接了一个 MLP ,然后做分类。encoder 分为两种,一种是固定参数,用 NMT 训练好的 encoder ,一种是重新训练 encoder 。
主要得到以下几点结论:
重新训练 encoder 结果比直接用 NMT 的 encoder 效果提升大(除了 SPC 和 POS)。
用句法树划分短语效果比 n-gram 划分短语效果好。
用 NMT 的 encoder 时,只有 SPC 和 POS 效果提升大(主要这两个任务粒度小,都是单词级别的,任务很简单)。
重新训练 encoder 时前三个任务有提升(因为粒度比较大,而后两个仅靠 MLP 就能学的很好了)。
结论
本文提出了一种多粒度的自注意力机制,将其加入到了 Transformer 的 encoder 中。不仅仅是机器翻译任务,其他许多任务例如阅读理解、语言推理、情感分类等都可以用上这种方法,更好的融入短语结构信息。
其实这篇和 Tree Transformer: Integrating Tree Structures into Self-Attention[3] 挺类似的,都是在 Transformer 的 self-attention 上面做了手脚,加入了一些结构上的信息,增强 encoder 的编码能力。
参考资料
[1]
Multi-Granularity Self-Attention for Neural Machine Translation: http://arxiv.org/abs/1909.02222
[2]
Ordered Neurons: Integrating Tree Structures into Recurrent Neural Networks: http://arxiv.org/abs/1810.09536
[3]
Tree Transformer: Integrating Tree Structures into Self-Attention: http://arxiv.org/abs/1909.06639
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
让更多的人知道你“在看”
【论文解读】EMNLP2019-多粒度自注意力机制相关推荐
- 论文解读丨无参数的注意力模块SimAm
摘要:本文提出了一个概念简单但对卷积神经网络非常有效的注意力模块. 本文分享自华为云社区<论文解读系列三十:无参数的注意力模块SimAm论文解读>,作者:谷雨润一麦. 摘要 本文提出了一个 ...
- 论文笔记:BahdanauAttention和LuongAttention(注意力机制详解)
前言 近日,阅读了两篇与attention机制相关的论文,为了防止看了就忘,写此文记录论文中一些要点,方便日后回顾,也为需要了解attention机制的朋友们提供一些参考. 两篇论文提出的attent ...
- 一文看尽深度学习中的各种注意力机制(1998-2020年)
导读 视觉注意力机制是人类视觉所特有的一种大脑信号处理机制,而深度学习中的注意力机制正是借鉴了人类视觉的注意力思维方式.一般来说,人类在观察外界环境时会迅速的扫描全景,然后根据大脑信号的处理快速的锁定 ...
- 一文读懂CV中的注意力机制
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨AdamLau@知乎 来源丨https://zhuanlan ...
- 一文看懂CV中的注意力机制
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨AdamLau@知乎 来源丨https://zhuanlan.zhihu.com/p/28875 ...
- 《Effective Approaches to Attention-based Neural Machine Translation》—— 基于注意力机制的有效神经机器翻译方法
目录 <Effective Approaches to Attention-based Neural Machine Translation> 一.论文结构总览 二.论文背景知识 2.1 ...
- 【注意力机制】CBAM详解
论文题目:<CBAM: Convolutional Block Attention Module> 论文地址:https://arxiv.org/pdf/1807.06521.pdf 1. ...
- 聊一聊计算机视觉中常用的注意力机制 附Pytorch代码实现
聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现 注意力机制(Attention)是深度学习中常用的tricks,可以在模型原有的基础上直接插入,进一步增强你模型的性能.注意力机制起初是作 ...
- 小目标检测3_注意力机制_Self-Attention
主要参考: (强推)李宏毅2021/2022春机器学习课程 P38.39 李沐老师:64 注意力机制[动手学深度学习v2] 手把手带你Yolov5 (v6.1)添加注意力机制(一)(并附上30多种顶会 ...
- JUST技术:基于注意力机制恢复细粒度轨迹
随着基于位置服务的大量增长,越来越多的移动数据可以被分析挖掘,以更好地服务人们的生活.然而,与来自出租车等运输系统类的高采样率轨迹数据相比,用户地理服务数据具有严重稀疏性问题,是因为用户不会一直访问移 ...
最新文章
- 关于yum的/repodata/repomd.xml错误
- 实验一 linux命令使用,实验一XXXXX常用linux命令的使用(一)
- php获取页面a标签内容_AKCMS常用标签代码整理
- 在 SAP conversation AI 里消费 ABAP OData 服务
- discuz中又拍云在ie8,chrome22下不能上传的问题
- 20160504课堂作业
- 最长回文子串_5. 最长回文子串
- CSDN 个人博客域名设置
- 用python输出世界你好_Hello World! (你好,世界!)
- 水平居中和transform: translateY(-50%) 实现元素垂直居中
- BZOJ[3772]精神污染 二维数点
- 华为天才少年年薪201万,作息时间表曝光:所有的逆袭,都是蓄谋已久
- Windows-EFS加密文件
- android实现拍照及获取照片上传至接口
- python实现录屏录音小工具
- 人工蜂群算法python_人工蜂群算法简介与程序分析
- 个性化人工智能+区块链价值项目:PAI币Project PAI,威图Wetube Network
- 软件构建_认为独特的构建正确的软件而不是简单的软件
- 深圳大学超级计算机,Intel CMP活动之“超算习堂”走进深圳大学
- thinkphp5 ajax分页
热门文章
- C#制作、打包、签名、发布Activex全过程【转】
- Codeforces Round #243 (Div. 2) Problem B - Sereja and Mirroring 解读
- [导入]c# GDI+简单绘图(一)
- 女孩们,当你说没有好男人时请进来看看!
- C++中-运算符与.运算符的具体使用
- 20190827 On Java8 第十四章 流式编程
- @interface自定义注解
- wamp3.1.0下载地址
- Makeflie自动生成依赖,自动化编译
- [转]Servlet 3.0 新特性详解