摘要:主要序列转导模型基于包括编码器(encoder)和解码器(decoder)的复杂递归或卷积神经网络。 性能最佳的模型还通过注意机制连接编码器和解码器。 我们提出了一种新的简单网络架构,Transformer,完全基于注意机制(based solely on attention mechanisms),完全免除(dispensing)递归(recurrence)和卷积。 两个机器翻译任务的实验表明,这些模型质量优越,同时可以更加并行化(parallelizable),并且需要(significantly)更少的时间进行训练。我们的模型在WMT 2014英语 - 德语翻译任务中达到28.4 BLEU,超过现有的最佳成绩,包括集成(ensembles),超过2 BLEU。 在WMT 2014英语到法语翻译任务中,我们的模型在8个GPU上训练3.5天后,建立了一个新的单模型最新BLEU分数41.8,这是最好的训练成本的一小部分文献中的模型(a small fraction of the training costs of the best models from the literature)。 我们通过将其成功应用于英语选区解析大型和有限的训练数据,表明Transformer可以很好地概括其他任务(generalizes well to other tasks)。
循环神经网络(Recurrent neural networks),长期短期记忆(long short-term memory)[13]和特别是gated recurrent[7]神经网络已经成为最先进的方法,用于序列建模和transduction问题,如语言建模和机器翻译[35,2] ,5]。 自那以后,许多努力继续推动循环语言模型和编码器 - 解码器架构的界限[38,24,15]。
递归模型(Recurrent models)通常考虑(typically factor)沿输入和输出序列的符号位置的计算。 将位置与计算时间(computation time)中的步骤对齐,它们产生一系列隐藏状态 h t h_t ht,作为先前隐藏状态 h t − 1 h_{t-1} ht−1和位置t的输入的函数。 这种固有的顺序性质(inherently sequential nature)排除了(precludes)训练样本中的并行化(parallelization),这在较长的序列长度中变得至关重要,因为内存约束限制了跨越示例的批处理(as memory constraints limit batching across examples)。 最近的工作通过分解技巧(factorization tricks)[21]和条件计算(conditional computation)[32]实现了计算效率的显着提高,同时在后者的情况下(in case of the latter)也提高了模型性能。 然而,顺序计算的基本约束仍然存在(The fundamental constraint of sequential computation)。
注意机制(Attention mechanisms)已成为各种任务中引人注目的序列建模(compelling sequence modeling)和转换模型(transduction models)的组成部分(an integral part),允许对依赖关系进行建模,而不考虑它们在输入或输出序列中的距离[2,19]。 然而,在少数情况下[27],这种注意机制与复发网络(recurrent network)一起使用(are used in conjunction with)。
在这项工作中,我们提出了Transformer,一种避免重现(eschewing recurrence)的模型架构,而是完全依赖于注意机制来绘制输入和输出之间的全局依赖关系。 Transformer允许显着更多的parallelization,并且在8个P100 GPU上经过长达12小时的训练后,可以达到翻译质量的最新技术水平(state of the art)。
减少顺序计算(reducing sequential computation)的目标也构成了扩展神经GPU [16],ByteNet [18]和ConvS2S [9]的基础,所有这些都使用卷积神经网络作为基本构建块(basic building block),并行计算所有输入的隐藏表示和输出位置(computing hidden representations in parallel for all input and output positions)。 在这些模型中,关联来自两个任意输入或输出位置的信号所需的操作数量在位置之间的距离上增长,对于ConvS2S呈线性(linearly)增长,对于ByteNet呈线对数(logarithmically)。 这使得学习远程位置之间的依赖性变得更加困难[12]。 在Transformer中,这被减少到恒定的操作次数,尽管(albeit)由于平均注意力加权位置而导致有效分辨率降低,这是我们在3.2节中描述的多头注意力的影响。
自我关注(Self-attention),有时称为内部关注是关联机制(intra-attention),其关联单个序列的不同位置以计算序列的表示(an attention mechanism relating different positions of a single sequence in order to compute a representation of the sequence)。 自我关注(Self-attention)已经成功地用于各种任务,包括阅读理解(reading comprehension),抽象概括(abstractive summarization),文本蕴涵(textual entailment)和学习任务独立的句子表示[4,27,28,22]。
端到端内存网络基于循环注意机制(recurrent attention mechanism)而不是序列对齐重复(sequence aligned
recurrence),并且已被证明在简单语言问答和语言建模任务中表现良好[34]。
然而,据我们所知(To the best of our knowledge),Transformer是第一个完全依靠自我关注(motivate self-attention)的转换模型来计算其输入和输出的表示,而不使用序列对齐的RNN或卷积。 在接下来的部分中,我们将描述Transformer,激发自我关注并讨论其优于[17,18]和[9]等模型的优势。
大多数竞争性神经序列转换模型(Most competitive neural sequence transduction models)具有编码器 - 解码器结构[5,2,35]。 这里,编码器将符号表示的输入序列 ( x 1 , . . . . , x n ) (x_1,....,x_n) (x1,....,xn)映射到连续表示序列 z = ( z 1 , . . . . , z n ) z=(z_1,...., z_n) z=(z1,....,zn)。 给定z,解码器然后一次一个元素地生成符号的输出序列 ( y 1 , . . . . , y m ) (y_1,....,y_m) (y1,....,ym)。 在每个步骤中,模型都是自回归的(auto-regressive)[10],在生成下一个时消耗先前生成的符号作为附加输入(consuming the previously generated symbols as additional input when generating the next)。
Transformer循这种整体架构(overall architecture),使用堆叠的自注意(stacked self-attention)和逐点(point-wise),完全连接的层用于编码器和解码器(fully connected layers for both the encoder and decoder),分别如图1的左半部分和右半部分所示。