原文开头,不是搬运 dog。All attention is all you need
Abstract 摘要
这篇文章的内容源于基于编码器-解码器架构的RNN模型,在其他人的工作中,我们可以发现注意力机制对于提升编码器-解码器架构模型的性能很重要。这篇文章提出了一个比较简单的架构–Transformer。但是本文的模型完全没有使用RNN或CNN模型,并且在两个机器翻译任务上表现良好。本文模型在其他工作上表现也良好。
Introduction 导言
在2017年的循环神经网络,LSTM和GRU是机器翻译领域中效果很好的两个模型示例,此后很多工作都在尝试利用编码器-解码器架构。
RNN通常沿输入和输出序列的位置进行计算。用位置来体现时间的先后信息,由 t-1 时间的隐藏状态向量 h t − 1 h_{t-1} ht−1和 t 时的输入生成 t 时的隐藏状态向量 h t h_t ht。这将导致两个后果,第一点:导致RNN无法并行,计算性能较差。第二点:导致RNN在长文本信息中容易丢失前期信息(可以通过设置更长的隐藏状态向量 h t h_t ht来获得更好的效果,但是也会带来新的问题,会导致内存开销较大)。最近的工作通过分解技巧和条件计算实现了对上述两个问题的显着改进。然而,上述的两个问题仍然存在。
注意力机制被应用于翻译模型和序列模型,使得模型不考虑其中的文本距离问题。
本文提出了 Transformer,一种完全不使用循环神经层的模型架构,而是完全依赖于注意力机制来描述输入和输出之间的全局依赖关系。Transformer 并行化度更高。
Background 相关工作
基于之前同样致力于减少循环神经层的模型,如Extended Neural GPU, ByteNet and ConvS2S,它们都使用卷积神经网络作为基本构建模块,并行计算所有输入和输出位置的隐藏表示。但是卷积神经网络对于比较长的数据难以建模,这是因为对于两个距离较远的向量,需要很多层卷积才能把这两个向量联系起来。与之相比,Transformer的注意力机制能够一次性考虑到所有向量。为了获得与卷积神经网络多输出通道相似的效果,本文提出了多头注意力。
自注意机制是一种注意机制,它将单个序列的不同位置联系起来,以计算序列的特征。
端到端记忆网络基于递归注意机制,而非序列对齐递归,在简单语言问题解答和语言建模任务中表现出色。
据我们所知,Transformer是第一个完全使用自注意力机制的模型。
Model Architecture 模型架构
编码器-解码器架构目前是在序列模型中,表现较好的架构。编码器会把一个输入长度为 n n n的符号序列 X X X ( x 1 , . . . , x n ) (x_1,...,x_n) (x1,...,xn)映射到一个长度为 n n n的向量序列 Z Z Z ( z 1 , . . . . , z n ) (z_1,....,z_n) (z1,....,zn)上,若序列 X X X表示一个句子,则 x t x_t xt表示第 t 个词, z t z_t zt对应 x t x_t xt的向量表示。编码器会把输出向量 Z Z Z传递给解码器,解码器会生成一个长度为 m m m向量序列 Y Y Y ( y 1 , . . . , y m ) (y_1,...,y_m) (y1,...,ym)。解码器是一个自回归模型,会一步一步生成 y t y_t yt,这是因为上一步的输出 y t − 1 y_{t-1} yt−1是当前步的输入。Transformer 使用编码器-解码器架构,使用堆叠的自注意力层和全连接层,完全连接编码器和解码器层。结构如下图所示。