当前主流的序列转导模型都基于包含编码器和解码器的复杂循环或卷积神经网络。表现最佳的模型还会通过注意力机制连接编码器与解码器。我们提出了一种全新的简单网络架构------Transformer,该架构完全基于注意力机制,彻底摒弃了循环结构和卷积运算。在两项机器翻译任务的实验中,这些模型不仅质量更优,还具有更高的并行化能力,且训练时间大幅缩短。我们的模型在 WMT 2014英德翻译任务中取得28.4 BLEU分数,较现有最佳结果(包括集成模型)提升了超过2 BLEU。在 WMT 2014英法翻译任务中,经过8个GPU连续训练3.5天后,我们的模型创下41.0的单模型最新BLEU分数,其训练成本仅为现有文献中最佳模型的零头。
一、介绍
循环神经网络(特别是长短期记忆LSTM和门控循环RNN神经网络)已被牢固确立为序列建模及转换问题的前沿方法。此后,大量研究持续推动循环语言模型与编码器-解码器架构的边界拓展。
循环模型通常通过计算输入和输出序列的符号位置来实现运算。通过将位置与计算时间步长对齐,它们会根据前一个隐藏状态ht−1和位置t的输入,生成隐藏状态序列ht。这种固有的顺序特性使得训练样本内部无法实现并行化处理,而当序列长度较长时,由于内存限制导致样本间批量处理受限,这种并行化就变得至关重要。近期研究通过分解技巧和条件计算显著提升了计算效率,同时在条件计算场景下也改善了模型性能。然而,顺序计算的基本限制依然存在。注意力机制已成为各类任务中引人注目的序列建模和转换模型的核心组成部分,它允许在不考虑输入或输出序列中距离的情况下建模依赖关系。不过除少数外,这类注意力机制通常与循环网络结合使用。本研究提出Transformer架构,该模型摒弃循环结构,完全依赖注意力机制来建立输入与输出之间的全局依赖关系。Transformer架构支持显著提升并行化能力,仅需在8个P100 GPU上训练12小时,即可达到翻译质量的新标杆。
二、背景
减少顺序计算的目标也是扩展神经GPU、字节网络和ConvS2S等模型的基础,这些模型均以卷积神经网络作为基础构建模块,通过并行计算所有输入和输出位置的隐藏表征。在这些模型中,连接任意两个输入或输出位置信号所需的操作数量会随着位置间距的增加而线性增长(ConvS2S)或对数增长(字节网络),这使得学习远距离位置间的依赖关系变得更加困难。在Transformer模型中,这种依赖关系被简化为固定数量的操作,但代价是由于注意力加权位置的平均化导致有效分辨率降低,我们通过第3.2节所述的多头注意力机制对此进行抵消。自注意力机制(有时称为内部注意力)是一种通过关联单个序列中不同位置来计算序列表征的注意力机制。该机制已成功应用于阅读理解、抽象摘要、文本蕴含以及学习任务无关的句子表征等任务。端到端记忆网络基于循环注意力机制而非序列对齐循环,已被证明在简单语言问答和语言建模任务中表现优异。据我们所知,Transformer是首个完全依赖自注意力机制来计算输入与输出表征的转换模型,无需使用序列对齐的循环神经网络(RNN)或卷积层。在后续章节中,我们将阐述Transformer的架构原理,论证自注意力机制的必要性与优势。
三、模型
大多数竞争性神经序列转导模型采用编码器-解码器结构。在此架构中,编码器将输入的符号表示序列(x1 ,...,xn)映射为连续表示序列z =(z1 ,...,zn)。给定z后,解码器会逐元素生成输出符号序列(y1 ,...,ym)。该模型在每一步都采用自回归机制[9],通过将先前生成的符号作为额外输入来生成下一个符号。Transformer模型沿用这一整体架构,其编码器和解码器分别采用堆叠自注意力机制和逐点全连接层,如图1左右两半所示。
3.1 编码器和译码器堆栈
编码器:该编码器由N=6个相同层级的堆栈构成。每个层级包含两个子层级:第一个是多头自注意力机制,第二个是简单的位置-采用双向全连接前馈网络结构。我们在两个子层周围各引入一个残差连接[10],随后进行层归一化[1]。具体而言,每个子层的输出为LayerNorm(x + Sublayer(x)),其中Sublayer(x)为子层自身实现的函数。为便于这些残差连接的实现,模型中所有子层及嵌入层均输出维度为dmodel = 512的输出。

解码器同样由N=6个相同层级的堆栈构成。除每个编码器层级的两个子层外,解码器还插入第三个子层,该子层对编码器堆栈的输出执行多头注意力机制。与编码器类似,我们在每个子层周围采用残差连接,并进行层归一化处理。我们还对解码器堆栈中的自注意力子层进行了修改,以防止位置信息对后续位置产生注意力。这种掩码机制结合输出嵌入向量偏移一个位置的特性,确保位置i的预测结果仅能依赖于小于i位置的已知输出。
3.2 注意力
注意力函数可描述为将查询和一组键值对映射为输出的过程,其中查询、键、值及输出均为向量。输出通过值的加权和计算得出,每个值的权重由查询与对应键的兼容性函数确定。
3.2.1缩放点积注意力
我们将这种特殊注意力机制称为"缩放点积注意力"(图2)。输入数据由维度为dk的查询向量和键向量,以及维度为dv的值向量组成。我们计算这些向量之间的点积。

对所有键执行查询操作,将每个键值除以√dk,并应用softmax函数以获得各值的权重。实际操作中,我们将一组查询同时计算注意力函数,这些查询被打包成矩阵Q。键值也被打包成矩阵K和V。输出矩阵的计算公式为:

目前最常用的两种注意力机制分别是加法注意力[2]和点积(乘法)注意力。点积注意力与我们的算法完全相同,只是将√1/dk作为缩放因子。加法注意力通过单隐藏层前馈网络计算兼容性函数。虽然两种机制在理论复杂度上相似,但点积注意力在实际应用中更快速且更节省空间,因为它能通过高度优化的矩阵乘法代码实现。当dk值较小时,两种机制表现相当;但当dk值较大时,加法注意力在不使用缩放因子的情况下表现更优。我们推测当dk值较大时,点积的数值会急剧增大,导致softmax函数进入梯度极小的区域。为消除这种效应,我们采用√1/dk对点积进行缩放处理。
3.2.2 多头注意力
我们发现,与其使用d模型维度的键、值和查询执行单一注意力函数,不如将查询、键和值分别通过不同的学习线性投影线性映射到dk、dk和dv维度,共进行h次映射。随后对这些投影后的查询、键和值并行执行注意力函数,生成dv维输出值。将这些输出值拼接后再次进行投影,最终得到如图2所示的输出结果。
多头注意力机制使模型能够同时关注不同位置上来自不同表征子空间的信息。而单头注意力机制则通过取平均值抑制了这种能力。

3.2.3 注意力在模型中的应用
Transformer采用多头注意力机制通过三种方式实现:
• 在"编码器-解码器注意力"层中,查询来自前一层解码器,记忆键和值则来自编码器的输出。这种设计使得解码器中的每个位置都能关注输入序列中的所有位置,这模拟了序列到序列模型中典型的编码器-解码器注意力机制。
• 编码器包含自注意力层。在自注意力层中,所有键、值和查询都来自同一位置------即编码器前一层的输出。编码器中的每个位置都能关注前一层的所有位置。
• 同样地,解码器中的自注意力层允许每个位置关注包括该位置在内的所有后续位置。为防止解码器中信息向左流动以保持自回归特性,我们通过在缩放点积注意力机制中屏蔽(将值设为-∞)softmax输入中对应非法连接的所有值来实现。
3.3 位置信息前馈网络
除注意力子层外,我们的编码器和解码器中每一层均包含一个全连接前馈网络,该网络以相同方式独立应用于每个位置。该网络由两个线性变换构成,中间采用ReLU激活函数

虽然线性变换在不同位置保持一致,但各层使用的参数各不相同。另一种描述方式是将该过程视为两个核大小为1的卷积操作。输入与输出的维度均为dmodel=512,而内层的维度dff=2048。
3.4 Embeddings 和 Softmax
与其它序列转导模型类似,我们采用学习到的嵌入向量将输入标记和输出标记转换为维度为dmodel的向量。同时运用常规的线性变换和softmax函数,将解码器输出转化为预测的下一个标记概率。本模型中,两个嵌入层与预softmax线性变换共享相同的权重矩阵。在嵌入层中,我们将这些权重乘以√dmodel的平方根。
3.5 位置编码
由于我们的模型既不包含递归结构也不涉及卷积运算,因此若要使模型能够利用序列的顺序信息,就必须向输入嵌入中注入关于序列中标记相对或绝对位置的特定信息。为此,我们在输入嵌入中添加了"位置编码"。
编码器与解码器堆栈的底层结构。位置编码与嵌入具有相同的维度dmodel,因此两者可相加。位置编码的选择多样,包括可学习和固定两种[8]。本研究采用不同频率的正弦与余弦函数:

其中pos表示位置,i表示维度。具体来说,位置编码的每个维度对应一个正弦波。波长从 2π 到10000· 2π 呈几何级数增长。我们选择这个函数是因为假设它能让模型轻松通过相对位置学习注意力机制------对于任何固定偏移量k,P_Epos+k都可以表示为P_Epos的线性函数。我们还尝试使用已学的位置嵌入,发现两种版本的结果几乎完全一致(见表3第(E)行)。最终选择正弦波版本,是因为它可能让模型能够外推到比训练时遇到的更长的序列长度。
四、自注意力
在本节中,我们将自注意力层的多个方面与循环层和卷积层进行对比。这些层通常用于将一个变量长度的符号表示序列(x1 ,...,xn)映射到另一个等长序列(z1 ,...,zn),其中xi、zi∈R^d,例如典型序列转导编码器或解码器中的隐藏层。我们采用自注意力层的动机基于三个考量:首先是每层的总计算复杂度;其次是可并行化的计算量,以所需最小顺序操作数为衡量标准;第三是网络中长程依赖关系的路径长度。学习长程依赖关系是许多序列转导任务的关键挑战,而影响这种依赖学习能力的关键因素是信号在前向和后向传播时需要穿越的路径长度。输入和输出序列中任意位置组合之间的路径越短,学习长程依赖关系就越容易[11]。因此,我们还比较了由不同层类型组成的网络中任意两个输入和输出位置之间的最大路径长度。如表1所示,自注意力层通过固定数量的顺序操作连接所有位置,而循环层则需要O(n)次顺序操作。从计算复杂度来看,当序列长度n小于表征维度d时(这种情况在机器翻译领域最常见,例如最先进的词片[31]和字节对[25]表征),自注意力层的运算速度会快于循环层。对于需要处理超长序列的任务,可通过限制自注意力仅关注r大小的邻域来提升计算效率。
输入序列以对应输出位置为中心进行对齐。这将使最大路径长度增加至O(n/r)。我们计划在后续工作中进一步研究该方法。当卷积核宽度k < n时,单个卷积层无法连接所有输入与输出位置的配对。若采用连续卷积核,则需要堆叠O(n/k)个卷积层;若使用扩张卷积,则需O(logk(n))个卷积层,这会延长网络中任意两点之间的最长路径长度。总体而言,卷积层的计算成本比循环层高出k倍。然而,可分离卷积[6]能显著降低复杂度,降至O(k·n·d + n·d²)。即使当k = n时,可分离卷积的复杂度仍相当于自注意力层与逐点前馈层的组合------这正是我们模型所采用的方案。作为附带优势,自注意力机制可能生成更具可解释性的模型。我们在附录中通过分析模型的注意力分布并展示讨论示例。不仅单个注意力头能清晰地学习执行不同任务,许多注意力头还表现出与句子句法和语义结构相关的行为特征。
结论
在本研究中,我们提出了Transformer模型------首个完全基于注意力机制的序列转换模型。该模型通过采用多头自注意力机制替代编码器-解码器架构中常用的循环层,显著提升了翻译任务的训练效率。在 WMT 2014英语-德语和 WMT 2014英语-法语翻译任务中,我们均取得了行业领先水平。特别是在英语-德语任务中,我们的最优模型表现甚至超越了所有先前报道的集成模型。我们对基于注意力机制的模型未来充满期待,并计划将其应用于其他任务领域。我们计划将Transformer扩展到非文本输入输出的模态问题,并研究局部受限注意力机制以高效处理图像、音频和视频等大尺寸输入输出数据。使生成过程减少顺序性是我们的另一项研究目标。