译文 Attention Is All You Need

摘要

主流的序列转换模型基于负责的递归或者卷积神经网络,包括编码器和解码器。性能最好的模型也是通过注意力机制链接编码器和解码器。我们提出来一种新的简单的网络结构——Transformer——仅仅基于注意力机制,完全不需要递归和卷积网络。在两个机器翻译任务上的实验表明,这些模型在质量上优于其他模型,且具有更高并发性和更少的训练时间。我们模型在WMT 2014英语翻德语的任务上取得了28.4 BLEU,提升了现有最好的结果,包括以2 BLEU由于集成方法。在WMT 2014英语翻法语的任务上,用8个GPU训练了3.5天——文献中最好模型的训练代价的一小部分,我们的模型达到了新的单模型效果最好的BLEU41.8得分.我们通过将Transformer应用到有大量或者小规模训练数据的英文句法分析上,论证Transformer对于其他任务又很好的泛化能力。

1 简介

递归神经网络,长短时记忆,尤其是有门的递归神经网络,在诸如语言模型和机器翻译的序列模型和转换问题上,已经是当时最佳的方法。从此,大量的研究来继续推动递归语言模型和编码-解码结构的边界
递归模型一般沿着输入输出序列中的符号位置进行因子计算。他们将位置和计算时的步骤对齐,生成一个隐藏层hth_t的序列,作为前一隐藏层ht1h_{t-1}和位置输入t的函数。内在的序列性质阻碍了训练数据并行化,在较长的序列长度会变得很严重,因为内存约束限制批处理数据。最近的研究通过因子分解技巧和条件计算,在计算效率上有显著提升,同时也提升了后者的模型效果。然而,序列计算的根本约束仍然没有解决
注意力机制在多种任务中,已经成为强序列模型和转换模型的一个组成部分,允许依赖建模且不用考虑输入输出的距离。然而,在大部分情况***意力机制和递归网络结合使用。
文本中我们提出Transformer,一个避开递归、完全依赖于注意力机制的模型结构,来构画出输入和输出全局依赖关系。Transformer允许更高并发,且在8个P100GPU上训练12小时,在翻译质量任务上取得了新的最佳的效果。

2 背景

减少序列计算也形成了扩展神经GPU、ByteNet和ConvS2S的基础,这些都使用了卷积神经网络作为基础构建模块,对所有输入输出位置并行计算隐藏表述。在这些模型中,任意两个输入或输出位置之间相关信号所需的操作数随着位置之间距离增长,ConvS2S是线性增长,ByteNet是对数增长。这就使得位置距离之间的依赖能难学习。Transformer中这杯减少到一个操作常数,尽管由于平均注意力权重位置减低有效分辨率,但是我们用如3.2节描述的多头注意力抵消这个问题。
自注意力,有时被称作内部注意力,是一个关联单个序列不同位置的注意力机制,以此来计算序列表述。自注意力已经被成功应用到各种任务中,包括阅读理解,摘要提取,文本蕴含以及学习与任务无关的句子表述。端到端的记忆网络基于递归注意力机制而非序列递归,并且已经被证实在单语种问答系统和语言模型任务中表现很好。
然而,据我们所知,Transformer是第一个不使用序列排列RNN或者卷积网络,完全依赖于自注意力来计算输入输出表述的转换模型。接下来的章节,我们将描述Transformer,激发自注意力以及和文献中的模型的对比并讨论其优势。

3 模型结构

大部分有竞争力的神经序列转换模型都有编码器-解码器结构。这里,编码器将输入符号表述(x1, …, xn)序列映射到连续表述序列z = (z1, …, zn)。给定z,解码器一次生成一个输出符号序列(y1, …, ym)。模型的每一步都是自回归,当生成下一个的时候会将上一步输出作为当前输入的一部分。Transformer遵循整体结构:使用堆叠自注意力和点对点(point-wise),编码器和解码器都有全连接层,分别如图1左半部分和右半部分所示。
译文 Attention Is All You Need

3.1 编码器和解码器堆叠(Encoder and Decoder Stacks)

编码器:编码器由N=6个完全相同的网络层堆叠组成,每层都有2个子层。第一层是一个多头自注意力,第二层是一个简单的、位置对位置的全连接前向网络。我们对每组两个子层做残差连接,之后做层归一化。也就是说,每个子层的输出为LayerNorm(x + Sublayer(x)),其中Sublayer(x)函数是每个子层内实现的。为了便于残差连接,模型中的左右子层和embedding层都生成512维输出。
解码器:解码器同样由N=6个完全相同的网络层组成。除了每个编码器层的两个子层,解码器又插入了第三个子层,该层对于编码器堆的输出执行多头注意力。和编码器相似,我们对每组子层做残差连接。我们还修正了解码器堆的自注意力子层,以防止位置关注下一位置。这样的遮挡(方法)结合输出embedding偏移一位的事实,确保位置i的预测结果只依赖于已知的小于i的位置输出。

3.2 注意力

注意力函数可以描述为将询问和一组键-值对映射到一个输出,其中询问、键、值、输出都是向量。输出是通过值的加权求和计算得到,其中值给配的权重由带有键的询问的兼容函数计算得到。

3.2.1 规模点积注意力(Scaled Dot-Product Attention)

我们把特别的注意力叫做“规模点积注意力”(如图2)。输入由询问、dkd_k维度的键和dvd_v维度的值组成。我们用所有的键计算询问的点击,除以dk\sqrt{d_k},然后用softmax函数获取值的权重。
实践中,我们在一组询问上同时计算注意力,这组询问会打包成矩阵Q。键和值也被打包成矩阵K和V。我们计算输出矩阵:
译文 Attention Is All You Need
经常使用的两种注意力函数是累加注意力和点积注意力。点积注意力除了缩放因子dk\sqrt{d_k},和我们的算法一致。累加注意力使用带有简单地隐藏层的前馈网络来计算兼容函数。然而这两个在理论负责度上很相似,点积注意力更快更省空间,因为它可以用高度优化的矩阵乘法代码来实现。
dkd_k较小时,两种机制效果相似,当dkd_k较大时,累加注意力优于没有放缩因子的点积注意力。我们猜测,当dkd_k较大大时,点积量级会增长过大,将softmax函数推倒有极小值梯度的区域。为了消除这个影响,我们通过dk\sqrt{d_k}来缩放点积。
译文 Attention Is All You Need

3.2.2 多头注意力

取代使用dmodeld_{model}维的键、值和询问执行单一注意力函数,我们发现使用h次不同且学习过的线性映射将询问、键和值分别映射到dk,dk,dvd_k,d_k,d_v维度是有益的。在这些映射的询问、键和值的每一个版本上,我们都并行执行注意力函数,生成dvd_v维度的输出值。如图2描述,他们被串联起来并再次映射,生成最终的结果。
多头注意力允许模型同时注意来自在不同位置上的不同描述子空间的信息。单一注意力头,均值化组织这个(能力)。
译文 Attention Is All You Need
其中,映射是参数矩阵,WiQRdmodeldkW_i^Q\in R^{d_{model}*d_k}, WiKRdmodeldkW_i^K\in R^{d_{model}*d_k}, WiVRdmodeldvW_i^V\in R^{d_{model}*d_v}, WiORdmodelhdvW_i^O\in R^{d_{model}*hd_v}.
在本文中,我们使用h=8的并行注意力层(头),对于每一个注意力层我们使用dk=dv=dmodel/h=64d_k = d_v = d_{model}/h = 64。由于每个注意力层减少了维度,所以整体计算消耗和使用全部维度的单头注意力相似。

3.2.3 在我们模型中注意力的应用

Transformer使用三种不同方式的多头注意力:
• 在“编码器-解码器注意力”层,询问源于前一解码器层,存储的键和值源于编码器的输出。这就允许解码器的每一个位置都可以注意到输入序列的所有位置。
这模仿了典型的序列对序列模型中的编码器-解码器注意力机制,比如一些文献。
• 包含自注意力的编码器层。在自注意力层,所有的键、值和询问都源于同一个地方,这样就是编码器的前一层输出。编码器的每个位置能够注意到前层网络的所有位置。
• 类似地,解码器的自注意力层允许解码器的每个位置注意到解码器的所有位置,直到且包含该位置。我们需要防止解码器信息流左流以保持自回归特性。我们通过屏蔽softmax的输入与非法链接对应的所有值(设置为−∞)来实现放缩点积注意力内部(逻辑),如图2。

3.3 点对点前馈网络

除了注意力子层,在我们的编码器和,解码器都包含一个点对点的前馈网络,分别且相同的应用在每一个位置。由两个线性变换组成,且用ReLU**函数连接。
译文 Attention Is All You Need
虽然两个线性变换在不同位置是相同的,但是在层之间使用的参数是不同的。另一种描述,他们是使用核为1 的两个卷积。输入和输出的维度是dmodel=512d_{model}=512,内部层维度为dff=2048d_{ff} = 2048

3.4 词嵌入层和softmax

像其他序列转换模型一样,我们使用学习过的词嵌入方法将输入和输出的token转换从dmodeld_{model}维度向量。我们也使用常用的学习过的线性变换和softmax函数将解码器输出转换成预测下一个token的概率。在我们的模型中,我们在两个词嵌入层和pre-softmax线性变换层共享了相同的参数矩阵。在词嵌入层,我们乘以dmodel\sqrt{d_{model}}权重。

3.5 位置编码

由于我们的模型没包含递归和卷积,为了使模型可以使用序列的顺序,我们必须加入序列中token的相对或者绝对位置信息。最终在编码器和解码器堆叠的底部,我们在输入的词嵌入中增加了“位置编码”。位置编码有和词向量相同的维度dmodeld_{model},这样二者可以相加。位置编码有多种选择,学习的或者固定的。
本文中,我们使用不同频率的正弦和余弦函数:
译文 Attention Is All You Need
其中pos是位置,i是维度。也即,位置编码的每个维度对应正弦波。波长形成从2π到10000·2π的几何级数。我们之所以用该函数,是因为我们假设它可以是的模型很容易通过相对位置学习到注意力,因为对于任意固定偏移k,PEpos+kPE_{pos+k}都可以用一个PEposPE_{pos}的线性函数表示。
我们也使用学习类型的位置编码做实验,发现这两个版本产生的结果基本一致(如表3E行所示)。我们选择正弦波版本是因为它可以允许模型扩展比训练时的序列更长的序列长度。

4 为什么选用自注意力

在本小节,我们从多个方面比较自注意力层与递归和卷积层的区别,后两者常用于将一个可变长度的符号描述序列(x1,...,xn)(x_1, ..., x_n)映射到另外一个等长序列(z1,...,zn)(z_1, ..., z_n),其中xi,ziRdx_i,z_i\in R^d,比如典型的序列转换编码器和解码器中的隐藏层。促使我们使用自注意力,我们考虑三个目的。
一个是每层总计算复杂度,另一个是可并行的计算量,用所需的序列操作最小值来度量。
第三个是网络中长期依赖之间的路径长度。在许多序列转换任务中学习长期依赖是个重要的挑战。影响学习这种依赖能力的关键因素是网络中前向和后向信号必须经过的路径长度。输入和输出序列位置的任意连接之间的路径越短,学习长期依赖越简单。因此, 我们也比较任意两个由不同层类型组从的网络的输入和输出位置之间的最大路径长度。
译文 Attention Is All You Need
如表1所示,自注意力层连接所有位置需要常数级的顺序执行操作,而递归层则需要O(n)。从计算复杂度方面看,当序列长度n小于表述维度d时,自注意力要快于循环层,这在机器翻译中使用最佳模型生成据描述最常见的情况,比如word-piece和byte-pair。 为了提升包含较长序列任务的计算性能,自注意力可以仅考虑以各自输出位置为中心的输入序列的r近邻。这将最长路径增加到O(n/r)。我们计划在将来的工作中研究该方法。
核宽度k<n的单个卷积层不能连接所有的输入和输出对。这样做需要一堆卷积层,对于连续核需要O(n/k)量级的,对于扩展卷积需要O(logk(n))量级的,增加网络中任意两个位置的最长路径长度。卷积层一般比递归层消耗更大,其参数为k。然而,可分离卷积将负责度减低到O(knd+nd2)O(k·n·d+n·d^2)。然而,即使k=n,可分离卷积层的负责度都等于自注意力层和点对点前馈层的组合,该方法会在我们的模型中使用。
额外的好处是,自注意力可以生成更多可解释模型。我们会从模型中查看注意力分布,在附录中给出示例和讨论。单个注意力头不仅学会了在不同任务上完成任务,而且许多还展现出了和句子的句法、语义相关的行为。

5 实验

本小节介绍我们模型的学习模式。

5.1 训练数据和批处理

我们在标准WMT2014英语-德语数据集上训练,该数据集包含4500万句子对。句子通过byte-pair进行编码,其有一个包含37000个token的共享源目标词表。对于英语-法语,我们使用更大的WMT2015英法数据集,该数据集包含36M句子和切分token到32000词表。句子按照相近的句子长度被在一起批处理。每个训练组都包含一组句子对,句子对包含了将近25000源token和25000目标token。

5.2 硬件和计划

我们在8 NVIDIA P100 GPUs的机器上训练模型。对于使用本文描述超参的基础模型,每个训练步骤花费0.4秒。我们训练基础模型100000步或者12小时。对于我们的大模型(如表3最后一行描述),每一步花费1秒。我们训练300000步(大于3.5天)

5.3 优化器

我们使用Adam优化器,其中β1=0.9,β2=0.98,ε=109\beta_1=0.9, \beta_2=0.98, \varepsilon=10^{-9}。在训练过程中我们根据以下公式改变学习率:
译文 Attention Is All You Need
这相当于在第一个warmup_steps训练步骤线性的增加学习率,然后与步数的平方根倒数(the inverse square root of the step number)成比例减少。我们使用warmup_steps=4000.

5.4 正则化

我们在训练过程中使用两种正则化方法。
残差Dropout 在子层输出添加到子层输入和归一化之前,我们见dropout应用到子层输出。另外,在编码器和解码器上,我们将dropout应用刚到embedding和位置编码之和上。对于基础模型,我们使用Pdrop=0.1P_{drop} = 0.1
标签平滑 在训练期间,我们使用了εls=0.1\varepsilon_{ls} = 0.1标签平滑。由于模型学到了不确定性,使得减少了困惑(hurts perplexity,不知道怎么翻译合适),反而提升了准确率和BLEU得分。

6 结果

6.1 机器翻译

在WMT2014英译德的翻译任务上,大规模Transformer模型以BLUE2.0分的优势优于之前的模型,创造了新的最佳效果28.4BLUE。模型配置在表3底部列出。在一个8P100GPU上训练了3.5天。即使我们的模型胜过之前所有发布的模型和集成方法,但训练消耗只是任意具有竞争性模型的一小部分。
在WMT2014英译法的翻译任务上,我们的大模型取得了BLEU41.0分,优于所有之前以发布单个模型,训练消耗比之前最佳模型的的1/4还要少。大规模Transformer模型在英译法任务上训练使用的dropout率为Pdrop=0.1P_{drop} = 0.1,而非0.3。
对于基础模型,我们使用简单模型,该模型由5个最新的checkpoint平均得到,每个checkpoint间隔10分钟,对于大规模模型,我们平均最近20个checkpoint。我们使用波束搜索,波束大小为4、长度惩罚系数α = 0.6。这超参都是在开发集上实验后选取的。我们在推理期间将最大数据长度设置为输入长度+50,但是可能的时候会提前终止。
译文 Attention Is All You Need
表2总结了我们的结果,将我们的翻译质量和训练消耗与文献中的模型和结构进行了比较。我们通过乘以训练次数、使用GPU个数、每个GPU可持续单精度容量的估值来评估浮点操作的个数,该浮点操作用于模型训练。

6.2 模型变形

为了评估Transformer各个部分的重要性,我们用不同过的方法改变的基础模型,然后在newstest2013英译德任务的开发集上,衡量各种改变的效果。如上一小节描述,我们使用光束搜索,但不使用checkpoint平均。结果如表3所示。
译文 Attention Is All You Need
在表3A行中,如3.2.2小节所述,我们改变了注意力都的个数,注意力键和值的维度,保持计算量不变。单头注意力比最好设置差了BLUE0.9分,质量也比多头下降很多。
在表3B行中,我们注意到:降低注意力键大小dkd_k会减低模型质量。这表明,确定兼容性并不容易,一个比点积更复杂的兼容性函数更有效。在C行和D行中,我们进一步发现,正如预期,模型越大越好,dropout对于避免过拟合很有帮助。在E行,我们用学习的位置embedding替代正弦位置编码,发现在基础模型的结果基本一致。

6.3 英语选区分析(English Constituency Parsing)

为了评估Transformer能否扩展到其他任务上,我们在英语选区分析任务上进行实验。该任务有特殊的挑战性:输出有很强的结构化约束且比输入长很多。并且,RNN序列到序列的模型已经不能在小规模数据上取的最好的效果。
我们在Penn Treebank的华尔街日报(WSJ)上训练一个4层的Transformer,其中dmodel=1024d_{model}=1024,大于40k的训练句子。我们使用源自约17M句子中的高可信度和BerkleyParser语料,在半监督环境下训练。对于WSJ设置,我们使用16K token词表,对于半监督环境,我们使用32k token词表。
我们近进行了一小部分实验,用于在Section 22开发集上选择dropout、注意力和残差(5.4小节)、学习率和波束大小,在英译德基础Transformer模型上其他参数保持不变。在推理过程中,我们将最大输出增加到输入长度+300。对于WSJ和半监督环境,我们使用波束大小为21、α = 0.3。
表4所示的结果显示:即使没有针对任务的调整,我们模型标签仍然表现惊人,除了递归神经网络语法之外,生成的结果比之前已发布的所有模型效果都好。
与RNN序列到序列模型相比,即使只在40k句子的WSJ训练集上训练,Transformer都优于BerkeleyParser。
译文 Attention Is All You Need

7 结论

在本文中,我们介绍了Transformer,第一个完全基于注意力的序列转换模型,用多头自注意力取代了解码器-编码器最常用的递归层。
对于翻译任务,Transformer比基于递归或者卷积层的结构训练的更快。在WMT2014英译德和WMT2014英译法的翻译任务中,Transformer取的了新的最佳成绩。在前一个任务上,我们最好的模型甚至由于之前所有已发布的集合。
我们对基于注意力模型的未来和激动,并将它们应用到其他任务上。我们计划将Transformer扩展到文本之外的输入输出模式的任务上,并且研究局部约束的注意力机制,以有效的解决大型输入输出,比如图片、音频和视频。使世代相继减少是我们的另一个研究目标。