普适注意力:用于机器翻译的2D卷积神经网络,显著优于编码器-解码器架构
现有的当前最佳机器翻译系统都是基于编码器-解码器架构的,二者都有注意力机制,但现有的注意力机制建模能力有限。本文提出了一种替代方法,这种方法依赖于跨越两个序列的单个 2D 卷积神经网络。该网络的每一层都会根据当前生成的输出序列重新编码源 token。因此类似注意力机制的属性适用于整个网络。该模型得到了非常出色的结果,比当前最佳的编码器-解码器系统还要出色,而且从概念上讲,该模型也更加简单、参数更少。
引言
深度神经网络对自然语言处理技术造成了深远的影响,尤其是机器翻译(Blunsom, 2013; Sutskever et al., 2014; Cho et al., 2014; Jean et al., 2015; LeCun et al., 2015)。可以将机器翻译视为序列到序列的预测问题,在这类问题中,源序列和目标序列的长度不同且可变。目前的最佳方法基于编码器-解码器架构(Blunsom, 2013; Sutskever et al., 2014; Cho et al., 2014; Bahdanau et al., 2015)。编码器「读取」长度可变的源序列,并将其映射到向量表征中去。解码器以该向量为输入,将其「写入」目标序列,并在每一步用生成的最新的单词更新其状态。基本的编码器-解码器模型一般都配有注意力模型(Bahdanau et al., 2015),这样就可以在解码过程中重复访问源序列。在给定解码器当前状态的情况下,可以计算出源序列中的元素的概率分布,然后使用计算得到的概率分布将这些元素的特征选择或聚合在解码器使用的单个「上下文」向量中。与依赖源序列的全局表征不同,注意力机制(attention mechanism)允许解码器「回顾」源序列,并专注于突出位置。除了归纳偏置外,注意力机制还绕过了现在大部分架构都有的梯度消失问题。
但现有的注意力机制建模能力有限,一般是对源表征的权重求和(Bahdanau et al., 2015; Luong et al., 2015),在这些模型中,这里的权重是源元素和目标元素的简单匹配。注意力模块将相同的源词编码重新组合,在解码时就无法重新编码或重新解释源序列。
为了克服这些局限,我们提出了一种基于深度 2D 卷积神经网络的可替代神经 MT 架构。源序列和目标序列中的位置的积空间定义了用于定义网络的 2D 网格。屏蔽卷积核,使其无法访问源自目标序列未来 token 的信息,从而获得与图像和音频波形中常用的生成模型(Oord et al., 2016a,b)类似的自回归模型(autoregressive model)。相关说明请参见图 1。
这种方法允许我们根据一堆 2D 卷积层学到深度特征的层次关系,并从训练过程中的并行运算受益。我们的网络的每一层都能根据目前生成的目标序列计算出源 token 的特征,并利用这些特征预测出下一个输出 token。因此,我们的模型通过构造类似注意力的能力,使这种能力适用于网络的所有层,而不是「添加」一个注意力模型。
我们在 IWSLT 2014 的德译英 (De-En) 和英译德 (En-De) 任务上通过实验验证了模型。我们改良了目前最佳的具备注意力机制的编码器-解码器模型,同时,从概念上讲我们的模型更加简单,参数更少。

图 1:我们的模型中的卷积层隐藏了 3*3 的卷积核,这样就可以只根据之前的输出计算特征。在一层(深蓝色)和两层(浅蓝色)之后的感受野的图示,还有正常的 3*3 卷积核视野的隐藏部分(灰色)。
论文:Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-Sequence Prediction

论文链接:https://arxiv.org/pdf/1808.03867v1.pdf
现有的当前最佳机器翻译系统都是基于编码器-解码器架构的,首先要对输入序列进行编码,然后根据输入的编码生成输出序列。这两者都有注意力机制,注意力机制可以根据解码器的状态重新组合源 token 的固定编码。我们提出了一种可替代的方法,这种方法依赖于跨越两个序列的单个 2D 卷积神经网络。我们的网络的每一层都会根据当前生成的输出序列重新编码源 token。因此类似注意力机制的属性适用于整个网络。我们的模型得到了非常出色的结果,比当前最佳的编码器-解码器系统还要出色,而且从概念上讲我们的模型也更加简单、参数更少。
卷积网络最广为人知的应用是在视觉识别模型中(Oord et al., 2016a; Salimans et al., 2017; Reed et al., 2017; Oord et al., 2016c)。近期也有一些将卷积网络引入自然语言处理中的研究。第一个卷积方法是编码由堆叠的词向量组成的长度可变的序列,运用 1D 卷积,再用最大池化操作聚合(Collobert and Weston, 2008; Kalchbrenner et al., 2014; Kim, 2014)。就序列生成而言,Ranzato 等人(2016)、Bahdanau 等人(2017)以及 Gehring 等人(2017a)的研究将卷积编码器和 RNN 解码器融合。Kalchbrenner 等人(2016b)首次在编码器-解码器模型中引入了完整卷积过程,但他们没有对当前最佳的循环架构中加以改进。Gehring 等人(2017b)在编码器和解码器模块中用了带有线性门控单元的 1D CNN(Meng et al., 2015; Oord et al., 2016c; Dauphin et al., 2017)进行机器翻译,得到的结果比深度 LSTM 要好。
基于 CNN 和基于 RNN 的模型之间的区别在于,基于 CNN 的模型的时序连接被置于网络的层之间,而非层内。相关概念图请参见图 2。这种在连接上显而易见的微小差异可能造成两种重要的结果。第一,这种连接使可视域在卷积网络的层间线性增长,但在循环网络的层中则是无边界的。其次,RNN 中的激活值只能以序列方式计算,但在卷积网络中则可以在时序维度上并行计算。

图 2:有两个隐藏层的解码器网络拓扑结构图示,底部和上部的节点分别表示输入和输出。RNN 用的是水平方向的连接,卷积网络用的是对角方向的连接。这两种方法都用了垂直连接。参数可跨时间步(水平方向)共享,但不跨层(垂直方向)共享。
实验结果
我们将在本节中探索模型中的几个参数所造成的影响,这几个参数有:token 嵌入维度、深度、增长率和卷积核大小。我们也在源维度中对不同的聚合机制进行了评估,这些聚合机制有:最大池化、平均池化以及注意力机制。
我们在每个给定的设置下都训练了五个初始值不同的模型,并报告 BLEU 分数的平均值和标准差。我们还用了与 Vaswani 等人(2017)类似的方式,根据训练的系统时间和 GPU 的单精度规格估计了每个模型的参数数量以及训练过程中的计算成本。

表 1:通过不同池化操作以及使用门控卷积单元训练的模型(L=24,g=32,ds=dt=128)。
从表 1 可知,与用平均池化相比,在源维度上用最大池化时 BLEU 可以提高约 2 个点。用公式(3)中的

缩放平均表征有助于提高模型性能,但最大池化的性能还是要优于平均池化。在每个卷积层的上方添加线性门控单元无法改善 BLEU 分数,但由于添加了额外的参数而增加了变量。独立的自注意力(即加权平均池化)的表现比平均池化好一点,但是还是不如最大池化的表现好。将最大池化后得到的特征(公式(2))和通过自注意力获得的表征(式(9))串联在一起,可以轻微改善模型表现,但这一改善至关重要(从 33.70 到 33.81)。在我们余下的实验中,除非另行说明,否则我们都会用最大池化法简化模型。

图 4:token 嵌入大小、层数(L)及增长率(g)产生的影响。
图 4 所示是 token 嵌入大小、网络增长率及网络深度所产生的影响。token 嵌入大小和增长率 g 控制的是沿着源维度通过池化操作传递的特征数量,可用于 token 预测。在源序列和目标序列中用的 token 嵌入大小都相同,即 d=d_t=d_s,网络预测出的 token 的特征的总数量是 fL=2d+gL。我们可以从图 4 中了解到,token 嵌入大小在 128 到 256 之间时,BLEU 分数在 33.5 和 34 之间。嵌入较小会迅速降低模型性能,嵌入为 64 时会使模型性能降至 32.2。增长率(g)对模型表现有重要影响,将其从 8 提高到 32,BLEU 可以增长超过 2.5 个点。g=32 之后模型性能达到饱和,模型只有微乎其微的改善。在模型性能和计算损失中进行取舍,我们在剩余的实验中都将采用 g=32。网络的深度对其表现也有重要的影响,当网络深度从 8 增长到 24 时,BLEU 分数增长了约 2 个点。当越过这个点后,由于过拟合,模型表现下降,这意味着我们在构造更深的网络之前应该增加 dropout 值或添加另一级正则化。我们的模型的感受野是由其深度和卷积核的大小控制的。在表 2 中,我们注意到在复杂程度相同、层数较少的情况下,狭窄的感受野比大一点的感受野表现更好,例如,将(k=3,L=20)和(k=5,L=12)相比较,或将(k=5,L=16)和(k=7,L=12)相比较。

图 5:不同的句子长度得到的 BLEU 分数。



图 6:我们的普适注意力模型(Pervasive Attention model)生成的隐式 BPE 的 token 级对齐。在最大池化聚合中我们将式(7)中的 α 可视化,而在自注意力聚合中我们可视化的是式(8)中的权重 ρ。

表 3:与目前最佳的 IWSLT 德译英的机器翻译结果进行比较。(*):用我们的方法得到的结果。(**):用 FairSeq(Gehring et al., 2017b)得到的结果。
普适注意力:用于机器翻译的2D卷积神经网络,显著优于编码器-解码器架构的更多相关文章
- 【DeepLearning】用于几何匹配的卷积神经网络体系结构
[论文标题]Convolutional neural network architecture for geometric matching (2017CVPR) [论文作者]Ignacio Rocc ...
- CNN卷积神经网络在自然语言处理的应用
摘要:CNN作为当今绝大多数计算机视觉系统的核心技术,在图像分类领域做出了巨大贡献.本文从计算机视觉的用例开始,介绍CNN及其在自然语言处理中的优势和发挥的作用. 当我们听到卷积神经网络(Convol ...
- 卷积神经网络CNN在自然语言处理的应用
摘要:CNN作为当今绝大多数计算机视觉系统的核心技术,在图像分类领域做出了巨大贡献.本文从计算机视觉的用例开始,介绍CNN及其在自然语言处理中的优势和发挥的作用. 当我们听到卷积神经网络(Convol ...
- 五大经典卷积神经网络介绍:LeNet / AlexNet / GoogLeNet / VGGNet/ ResNet
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! LeNet / AlexNet / GoogLeNet / VGG ...
- 卷积神经网络 CNN 学习笔记
激活函数Relu 最近几年卷积神经网络中,激活函数往往不选择sigmoid或tanh函数,而是选择relu函数.Relu函数的定义 $$f(x)= max(0,x)$$ Relu函数图像如下图所示: ...
- 用卷积神经网络和自注意力机制实现QANet(问答网络)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/ ,学习更多的机器学习.深度学习的知识! 在这篇文章中,我们将解决自然语言处理(具体是指问答)中最具挑战性 ...
- 卷积神经网络提取特征并用于SVM
模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取 ...
- 使用MXNet远程编写卷积神经网络用于多标签分类
最近试试深度学习能做点什么事情.MXNet是一个与Tensorflow类似的开源深度学习框架,在GPU显存利用率上效率高,比起Tensorflow显著节约显存,并且天生支持分布式深度学习,单机多卡.多 ...
- 完全基于卷积神经网络的seq2seq
本文参考文献: Gehring J, Auli M, Grangier D, et al. Convolutional Sequence to Sequence Learning[J]. arXiv ...
随机推荐
- RabbitMQ在windows下的安装
RabbitMQ 它依赖于Erlang,需要先安装Erlang.首先确定你的window电脑是32位还是64位,以下的安装以window 64位电脑举例. 运行行Erlang/OTP(otp_wi ...
- pip source
linux版本 sudo vim .pip/pip.conf[global]index-url = http://pypi.douban.com/simple[install]trusted-host ...
- jquery deferred promise
<script type="text/javascript">/* Deferredstate (then,done, fail, always,pipe, progr ...
- Lua基本语法-书写规范以及自带常用函数
Lua基本语法-书写规范和常用函数 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 String Ope ...
- java并发编程-Executor框架 + Callable + Future
from: https://www.cnblogs.com/shipengzhi/articles/2067154.html import java.util.concurrent.*; public ...
- Java Web HelloWorld!
距离上次做Java Web开发已经两年多了,我几乎忘得一干二净……都忘记咋搭建环境了……,然后Eclipse官网莫名其妙的挂掉.幸好电脑里还有份两年前的开发环境备份…… 重拾Java Web开发啊,说 ...
- metabase docker-compose 运行说明
metabase 是一款比较产品化的一个数据分析工具,支持的数据源也比较多 以下为简单的docker-compose 运行文件,同时集成了mongo 以及graphql 引擎,方便数据 的api查询 ...
- 使用EntityFramework6完成增删查改CRUD和事务
使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接MySQL数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库 ...
- ZedGraph控件的使用
http://blog.chinaunix.net/uid-20776117-id-1847015.html 在我们编写程序的时候,有时候是要做一些统计的,为了达到一目了然的效果,饼状图,曲线图,柱状 ...
- FineUI 3升级4.1.1时,SingleClickExpand属性改什么了? (树控件单击展开)
private Tree InitTreeMenu(List<Menu> menus) { Tree treeMenu = new Tree(); treeMenu.ID = " ...