在这项工作中我们提出Transformer,这种模型架构避免循环并完全依赖于attention机制来绘制输入和输
出之间的全局依赖关系。 Transformer允许进行更多的并行化,并且可以在八个P100 GPU上接受少至十二
小时的训练后达到翻译质量的新的最佳结果。
2 背景
减少顺序计算的目标也构成扩展的神经网络GPU [16]、ByteNet [18]和ConvS2S [9]的基础,它们都使用卷
积神经网络作为基本构建模块、并行计算所有输入和输出位置的隐藏表示。 在这些模型中,关联任意两个
输入和输出位置的信号所需的操作次数会随着位置之间的距离而增加,ConvS2S是线性增加,而ByteNet
是对数增加。 这使得学习远距离位置之间的依赖关系变得更加困难[12]。 在Transformer中,这中操作减
少到固定的次数,尽管由于对用attention权重化的位置取平均降低了效果,但是我使用Multi-Head
Attention进行抵消,具体描述见 3.2。
Self-attention,有时称为intra-attention,是一种attention机制,它关联单个序列的不同位置以计算序列
的表示。 Self-attention已成功用于各种任务,包括阅读理解、摘要概括、文本蕴涵和学习与任务无关的句
子表征[4, 27, 28, 22]。
端到端的内存网络基于循环attention机制,而不是序列对齐的循环,并且已被证明在简单语言的问题回答
和语言建模任务中表现良好[34]。
然而,就我们所知,Transformer是第一个完全依靠self-attention来计算输入和输出表示而不使用序列对
齐RNN或卷积的转导模型。 在下面的章节中,我们将描述Transformer、引出self-attention并讨论它相对
[17, 18]和[9]几个模型的优势。
3 模型架构
图1: Transformer — 模型架构。
大部分神经序列转导模型都有一个编码器-解码器结构[5, 2, 35]。 这里,编码器映射一个用符号表示的输入
序列(
1
) 到一个连续的表示z = (
1
)。 根据z,解码器生成符号的一个输出序列(
1
) ,一次一
个元素。 在每一步中,模型都是自回归的[10],当生成下一个时,消耗先前生成的符号作为附加输入。
Transformer遵循这种整体架构,编码器和解码器都使用self-attention堆叠和point-wise、完全连接的
层,分别显示在图1的左边和右边。
3.1 编码器和解码器堆栈
编码器: 编码器由 = 6 个完全相同的层堆叠而成。 每一层都有两个子层。 第一层是一个multi-head
self-attention机制,第二层是一个简单的、位置完全连接的前馈网络。 我们对每个子层再采用一个残差连
接[11] ,接着进行层标准化[1]。 也就是说,每个子层的输出是LayerNorm( + Sublayer( )), 其 中
Sublayer( ) 是由子层本身实现的函数。 为了方便这些残差连接,模型中的所有子层以及嵌入层产生的输出
维度都为 model = 512。
解码器: 解码器同样由 = 6 个完全相同的层堆叠而成。 除了每个编码器层中的两个子层之外,解码器还
插入第三个子层,该层对编码器堆栈的输出执行multi-head attention。 与编码器类似,我们在每个子层
再采用残差连接,然后进行层标准化。 我们还修改解码器堆栈中的self-attention子层,以防止位置关注到
后面的位置。 这种掩码结合将输出嵌入偏移一个位置,确保对位置的预测 只能依赖小于 的已知输出。
评论