Attention Is All You Need:注意力就是你所需要的一切
Attention Is All You Need
| 作者 | Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Łukasz Kaiser、Illia Polosukhin |
| 发表 | NIPS 2017 |
| PDF版本 | arXiv:1706.03762v7,标注2023年8月2日,共15页 |
| 核心话题 | Transformer、缩放点积注意力、多头注意力、位置编码、机器翻译、成分句法分析 |
| 原始链接 | https://arxiv.org/abs/1706.03762 |
小苔花注:2017年,这篇论文提出 Transformer,用注意力取代循环与卷积,在机器翻译中展示了并行计算、短依赖路径和较低训练成本的优势。论文依次说明编码器与解码器、缩放点积注意力、多头注意力、前馈网络和位置编码,再给出训练设置、翻译结果、模型变体与句法分析实验。作者还在附录中展示不同注意力头对长距离依赖、照应关系和句子结构的关注。阅读时,建议把架构图、公式、复杂度表与消融实验对照起来,理解哪些设计解决了顺序计算的瓶颈,以及实验证据支持到什么范围。
我们提出了一种简单的新网络架构 Transformer,它完全基于注意力机制,彻底舍弃了循环和卷积。
在正确标明出处的前提下,Google 特此允许复制本文中的表格和图示,但仅限于新闻报道或学术作品。
| 作者 | 机构 | 联系方式 |
|---|---|---|
| Ashish Vaswani∗ | Google Brain | avaswani@google.com |
| Noam Shazeer∗ | Google Brain | noam@google.com |
| Niki Parmar∗ | Google Research | nikip@google.com |
| Jakob Uszkoreit∗ | Google Research | usz@google.com |
| Llion Jones∗ | Google Research | llion@google.com |
| Aidan N. Gomez∗† | 多伦多大学 | aidan@cs.toronto.edu |
| Łukasz Kaiser∗ | Google Brain | lukaszkaiser@google.com |
| Illia Polosukhin∗‡ | illia.polosukhin@gmail.com |
摘要
当前占主导地位的序列转换模型,基于包含编码器和解码器的复杂循环神经网络或卷积神经网络。表现最好的模型还通过注意力机制连接编码器与解码器。我们提出了一种简单的新网络架构 Transformer,它完全基于注意力机制,彻底舍弃了循环和卷积。在两项机器翻译任务上的实验表明,这些模型不仅质量更高,而且更容易并行化,训练所需时间显著减少。我们的模型在 WMT 2014 英语到德语翻译任务上达到28.4 BLEU,比包括集成模型在内的既有最佳结果提高超过2 BLEU。在 WMT 2014 英语到法语翻译任务上,我们的模型在8块 GPU 上训练3.5天后,取得41.8 BLEU,建立了新的单模型最佳成绩,其训练成本仅为文献中最佳模型的一小部分。我们还将 Transformer 成功应用于英语成分句法分析,在训练数据充足和有限的情况下都取得良好结果,表明它能很好地泛化到其他任务。
作者说明:∗ 各位作者贡献相同,署名顺序随机排列。Jakob 提议以自注意力替代 RNN,并启动了对这一想法的评估。Ashish 与 Illia 设计并实现了最早的 Transformer 模型,而且在这项工作的各个方面都发挥了关键作用。Noam 提出了缩放点积注意力、多头注意力以及不含可学习参数的位置表示,并成为另一位参与几乎所有细节的人。Niki 在最初代码库和 tensor2tensor 中设计、实现、调优并评估了大量模型变体。Llion 也试验了新的模型变体,负责最初的代码库、高效推理以及可视化。Łukasz 和 Aidan 花费了无数个漫长工作日,设计并实现 tensor2tensor 的不同部分,用它替换早期代码库,显著改善了结果,并大幅加快了我们的研究。
† 相关工作在 Google Brain 期间完成。‡ 相关工作在 Google Research 期间完成。
第31届神经信息处理系统大会(NIPS 2017),美国加利福尼亚州长滩。
1 引言
循环神经网络,尤其是长短期记忆网络[13]和门控循环神经网络[7],已经确立了其在语言建模、机器翻译等序列建模和序列转换问题中的领先地位[35, 2, 5]。此后,大量研究持续推动循环语言模型和编码器—解码器架构的能力边界[38, 24, 15]。
循环模型通常沿输入和输出序列中符号的位置分解计算。它们将位置与计算时间步对齐,根据前一隐藏状态 hₜ₋₁ 和位置 t 的输入,生成隐藏状态序列 hₜ。这种固有的顺序性阻碍了单个训练样本内部的并行化。在序列较长时,这一问题尤其关键,因为内存限制了跨样本的批处理规模。近期工作通过分解技巧[21]和条件计算[32]显著提高了计算效率,后者还改善了模型表现。然而,顺序计算这一根本约束仍然存在。
注意力机制已经成为各类任务中高效序列建模和序列转换模型的重要组成部分,使模型能够不受输入或输出序列中距离的限制,对依赖关系进行建模[2, 19]。不过,除了少数情况[27],这些注意力机制都与循环网络结合使用。
在这项工作中,我们提出 Transformer。这种模型架构舍弃了循环,完全依靠注意力机制建立输入和输出之间的全局依赖。Transformer 支持显著更高的并行程度,在8块 P100 GPU 上训练仅12小时,就能达到新的翻译质量最佳水平。
2 背景
减少顺序计算也是 Extended Neural GPU[16]、ByteNet[18]和 ConvS2S[9]的基础目标。这些模型都以卷积神经网络为基本构件,并行计算所有输入、输出位置的隐藏表示。在这些模型中,将任意两个输入或输出位置的信号关联起来所需的操作数,会随位置间距离增加:ConvS2S 呈线性增长,ByteNet 呈对数增长。这使远距离位置间的依赖关系更难学习[12]。在 Transformer 中,这一操作数降为常数,不过,对多个注意力加权位置求平均,会降低有效分辨率。我们通过第3.2节介绍的多头注意力抵消这一影响。
自注意力有时也称为序列内部注意力,是一种通过关联同一序列的不同位置来计算序列表示的注意力机制。自注意力已经成功用于阅读理解、生成式摘要、文本蕴含,以及学习与任务无关的句子表示等任务[4, 27, 28, 22]。
端到端记忆网络以循环注意力机制为基础,而不是与序列位置对齐的循环结构,已经在简单语言问答和语言建模任务上表现良好[34]。
不过,据我们所知,Transformer 是第一个完全依靠自注意力计算输入和输出表示,而不使用与序列对齐的 RNN 或卷积的序列转换模型。接下来的章节中,我们会描述 Transformer,解释使用自注意力的动机,并讨论它相对于[17, 18]和[9]等模型的优势。
3 模型架构
大多数有竞争力的神经序列转换模型,都具有编码器—解码器结构[5, 2, 35]。编码器将符号表示构成的输入序列 (x₁, …, xₙ) 映射为连续表示序列 z = (z₁, …, zₙ)。给定 z,解码器逐个生成输出符号序列 (y₁, …, yₘ)。模型在每一步都是自回归的[10]:生成下一个符号时,将此前生成的符号作为额外输入。
图内标注:Inputs=输入;Outputs (shifted right)=输出(向右移位);Input/Output Embedding=输入/输出嵌入;Positional Encoding=位置编码;Masked Multi-Head Attention=带掩码的多头注意力;Multi-Head Attention=多头注意力;Add & Norm=相加并归一化;Feed Forward=前馈网络;Linear=线性变换;Output Probabilities=输出概率;N×=重复N层。Softmax 保留函数名。
Transformer 遵循这一总体架构,在编码器和解码器中都使用堆叠的自注意力层与逐位置全连接层,分别如图1的左半部分和右半部分所示。
3.1 编码器与解码器堆叠
编码器:编码器由 N = 6 个相同的层堆叠而成。每层包含两个子层,第一个是多头自注意力机制,第二个是简单的逐位置全连接前馈网络。我们在两个子层的外部都使用残差连接[11],随后进行层归一化[1]。也就是说,每个子层的输出为 LayerNorm(x + Sublayer(x)),其中 Sublayer(x) 是该子层实现的函数。为方便使用这些残差连接,模型中的所有子层,以及嵌入层,都产生维度为 d_model = 512 的输出。
解码器:解码器同样由 N = 6 个相同的层堆叠而成。除编码器每层的两个子层外,解码器还插入第三个子层,对编码器堆叠的输出执行多头注意力。与编码器类似,我们在每个子层外部使用残差连接,随后进行层归一化。我们还修改了解码器堆叠中的自注意力子层,防止某个位置关注后续位置。这种掩码,加上输出嵌入向右偏移一个位置的设置,保证位置 i 的预测只能依赖于位置小于 i 的已知输出。
3.2 注意力
注意力函数可以描述为:将一个查询和一组键—值对映射为一个输出,其中查询、键、值和输出都是向量。输出通过对值求加权和得到,每个值的权重由查询与对应键之间的兼容性函数计算。
图内标注:MatMul=矩阵乘法;Scale=缩放;Mask (opt.)=掩码(可选);Concat=拼接;Linear=线性变换;Scaled Dot-Product Attention=缩放点积注意力;Multi-Head Attention=多头注意力。Q、K、V分别表示查询、键和值。
3.2.1 缩放点积注意力
我们将所使用的注意力称为“缩放点积注意力”(图2)。输入由维度为 dₖ 的查询和键,以及维度为 dᵥ 的值组成。我们计算查询与所有键的点积,将每个点积除以 √dₖ,再应用 softmax 函数,得到各个值的权重。
实际计算时,我们同时对一组查询执行注意力函数,将它们打包为矩阵 Q。键和值也分别打包为矩阵 K 和 V。输出矩阵的计算方式如下:
最常用的两种注意力函数是加性注意力[2]和点积注意力(乘性注意力)。点积注意力与我们的算法相同,只是不包含 1/√dₖ 这个缩放因子。加性注意力使用只有一个隐藏层的前馈网络计算兼容性函数。两者的理论复杂度相近,但点积注意力在实际计算中速度更快、空间效率更高,因为它可以利用高度优化的矩阵乘法代码。
当 dₖ 较小时,两种机制的表现相近;当 dₖ 较大时,加性注意力优于未缩放的点积注意力[3]。我们推测,在 dₖ 较大时,点积的数值会变大,把 softmax 函数推到梯度极小的区域⁴。为抵消这种影响,我们用 1/√dₖ 缩放点积。
⁴ 为说明点积为什么会变大,假设 q 和 k 的分量是相互独立、均值为0、方差为1的随机变量。那么它们的点积 q·k = ∑ᵢ₌₁ᵈₖ qᵢkᵢ 的均值为0,方差为 dₖ。
3.2.2 多头注意力
我们发现,与其对 d_model 维的键、值和查询只执行一次注意力函数,不如用不同的可学习线性投影,将查询、键、值分别投影到 dₖ、dₖ、dᵥ 维,并重复 h 次。我们对每组投影后的查询、键和值并行执行注意力函数,得到 dᵥ 维的输出。这些输出先拼接,再做一次投影,得到最终结果,如图2所示。
多头注意力允许模型同时关注不同位置、不同表示子空间中的信息。只有一个注意力头时,求平均会抑制这种能力。
这里的投影是参数矩阵:Wᵢ^Q ∈ ℝ^(d_model×dₖ),Wᵢ^K ∈ ℝ^(d_model×dₖ),Wᵢ^V ∈ ℝ^(d_model×dᵥ),以及 W^O ∈ ℝ^(hdᵥ×d_model)。
在这项工作中,我们使用 h = 8 个并行注意力层,也就是8个头。每个头使用 dₖ = dᵥ = d_model/h = 64。由于每个头的维度降低,总计算成本与使用完整维度的单头注意力相近。
3.2.3 注意力在我们模型中的应用
Transformer 以三种不同方式使用多头注意力:
• 在“编码器—解码器注意力”层中,查询来自前一个解码器层,而记忆中的键和值来自编码器的输出。这使解码器中的每个位置都能关注输入序列的所有位置。它模拟了[38, 2, 9]等序列到序列模型中常用的编码器—解码器注意力机制。
• 编码器包含自注意力层。在自注意力层中,所有键、值和查询都来自同一处,这里就是编码器前一层的输出。编码器的每个位置都可以关注前一层的所有位置。
• 类似地,解码器中的自注意力层允许每个位置关注解码器中截至该位置的所有位置,包括该位置本身。为保留自回归性质,我们需要防止解码器中的信息向左流动。我们在缩放点积注意力内部,将 softmax 输入中对应非法连接的所有值屏蔽掉,也就是设为 −∞,以此实现这一约束。见图2。
3.3 逐位置前馈网络
除注意力子层之外,编码器和解码器的每一层都包含一个全连接前馈网络,分别以相同方式应用于每个位置。它由两次线性变换组成,中间使用 ReLU 激活函数。
虽然不同位置使用相同的线性变换,但不同层使用的参数不同。也可以把它描述为两次卷积核大小为1的卷积。输入和输出的维度都是 d_model = 512,内部层的维度为 d_ff = 2048。
3.4 嵌入与 Softmax
与其他序列转换模型类似,我们使用可学习嵌入,将输入 Token 和输出 Token 转换为 d_model 维向量。我们也使用常规的可学习线性变换和 softmax 函数,将解码器输出转换为预测下一个 Token 的概率。在我们的模型中,两层嵌入以及 softmax 之前的线性变换共享同一个权重矩阵,这与[30]类似。在嵌入层中,我们把这些权重乘以 √d_model。
表1:不同层类型的最大路径长度、每层复杂度,以及最少顺序操作数。n 为序列长度,d 为表示维度,k 为卷积核大小,r 为受限自注意力中的邻域大小。
| 层类型 | 每层复杂度 | 顺序操作数 | 最大路径长度 |
|---|---|---|---|
| 自注意力 | O(n²·d) | O(1) | O(1) |
| 循环层 | O(n·d²) | O(n) | O(n) |
| 卷积层 | O(k·n·d²) | O(1) | O(logₖ(n)) |
| 受限自注意力 | O(r·n·d) | O(1) | O(n/r) |
3.5 位置编码
由于我们的模型既没有循环,也没有卷积,为使模型利用序列顺序,我们必须注入一些关于序列中 Token 的相对或绝对位置的信息。为此,我们在编码器和解码器堆叠的底部,将“位置编码”加到输入嵌入上。位置编码和嵌入具有相同维度 d_model,因此可以相加。位置编码有许多选择,可以是可学习的,也可以是固定的[9]。
在这项工作中,我们使用不同频率的正弦和余弦函数:
其中 pos 表示位置,i 表示维度。也就是说,位置编码的每个维度都对应一条正弦曲线。波长从2π到10000·2π构成等比数列。我们选择这一函数,是因为我们假设它能让模型容易地学习按相对位置分配注意力:对于任何固定偏移 k,PE_(pos+k) 都可以表示为 PE_pos 的线性函数。
我们也试验过使用可学习的位置嵌入[9],发现两个版本的结果几乎相同,见表3的(E)行。我们选择正弦版本,是因为它可能使模型外推到比训练时遇到的序列更长的序列。
4 为什么使用自注意力
本节从多个方面,将自注意力层与常用的循环层、卷积层进行比较。这些层通常用于将符号表示构成的变长序列 (x₁, …, xₙ) 映射为同长度的另一序列 (z₁, …, zₙ),其中 xᵢ、zᵢ ∈ ℝᵈ,例如常规序列转换编码器或解码器中的隐藏层。我们使用自注意力的动机,包含三个期望性质。
第一是每层的总计算复杂度。第二是能够并行化的计算量,以所需的最少顺序操作数衡量。
第三是网络中长距离依赖之间的路径长度。学习长距离依赖是许多序列转换任务中的关键挑战。影响这类依赖学习能力的重要因素之一,是前向、反向信号在网络中必须经过的路径长度。输入和输出序列中任意位置组合之间的路径越短,就越容易学习长距离依赖[12]。因此,我们还比较了由不同层类型组成的网络中,任意两个输入、输出位置之间的最大路径长度。
如表1所示,自注意力层只需常数次顺序执行的操作,就能连接所有位置,而循环层需要 O(n) 次顺序操作。在计算复杂度上,当序列长度 n 小于表示维度 d 时,自注意力层比循环层更快。对于机器翻译最先进模型所采用的句子表示,例如 word-piece[38]和字节对[31]表示,这种情况很常见。为改善超长序列任务的计算性能,可以把自注意力限制在输入序列中,以对应输出位置为中心、大小为 r 的邻域内。不过,这会把最大路径长度增加到 O(n/r)。我们计划在未来进一步研究这种方法。
卷积核宽度 k < n 的单个卷积层,无法连接所有输入、输出位置对。若使用连续卷积核,需要堆叠 O(n/k) 个卷积层;若使用膨胀卷积,需要 O(logₖ(n)) 层[18]。这会增加网络中任意两个位置之间的最长路径。卷积层通常比循环层更昂贵,差一个 k 倍因子。不过,可分离卷积[6]能将复杂度显著降低为 O(k·n·d + n·d²)。即便 k = n,可分离卷积的复杂度也等于一个自注意力层和一个逐位置前馈层的组合,而这正是我们模型采用的方法。
作为额外益处,自注意力可能带来更具可解释性的模型。我们检查了模型的注意力分布,并在附录中展示和讨论一些例子。不仅各个注意力头明显学会了执行不同任务,其中许多还表现出与句法、语义结构有关的行为。
5 训练
本节描述我们模型的训练方案。
5.1 训练数据与批处理
我们使用标准的 WMT 2014 英语—德语数据集训练,其中包含约450万个句子对。句子采用字节对编码[3],源语言和目标语言共享约37000个 Token 的词表。对于英语—法语,我们使用规模大得多的 WMT 2014 英语—法语数据集,其中有3600万个句子,并将 Token 划分为32000个 word-piece 的词表[38]。句子对按近似序列长度组织为批次。每个训练批次包含一组句子对,总计约25000个源语言 Token 和25000个目标语言 Token。
5.2 硬件与训练安排
我们在一台配有8块英伟达 P100 GPU 的机器上训练模型。对于采用本文所述超参数的基础模型,每个训练步大约需要0.4秒。基础模型总共训练100000步,也就是12小时。对于大型模型,配置见表3最下面一行,每步需要1.0秒。大型模型训练300000步,也就是3.5天。
5.3 优化器
我们使用 Adam 优化器[20],设置 β₁ = 0.9、β₂ = 0.98、ε = 10⁻⁹。训练过程中,我们按以下公式调整学习率:
这相当于在最初 warmup_steps 个训练步内线性增加学习率,随后使其按训练步数的平方根倒数下降。我们使用 warmup_steps = 4000。
5.4 正则化
训练过程中,我们采用三种正则化:
表2:Transformer 在英语—德语和英语—法语的 newstest2014 测试集上,以一小部分训练成本,取得了比此前最佳模型更高的 BLEU 分数。
表内标注:Model=模型;EN-DE=英语到德语;EN-FR=英语到法语;Training Cost (FLOPs)=训练计算成本(浮点运算次数);Ensemble=集成模型;base model=基础模型;big=大型模型。空白处保持原表未报告状态;Transformer 两行的训练成本按原表跨两列显示的形式保留。
残差 Dropout:我们对子层输出应用 Dropout[33],然后将其加到子层输入上,并进行归一化。此外,在编码器和解码器堆叠中,我们还对嵌入与位置编码之和应用 Dropout。基础模型使用 P_drop = 0.1。
标签平滑:训练过程中,我们使用 ε_ls = 0.1 的标签平滑[36]。这会使困惑度变差,因为模型学会了对预测不那么确定,但它能提高准确率和 BLEU 分数。
6 结果
6.1 机器翻译
在 WMT 2014 英语到德语翻译任务上,大型 Transformer 模型,也就是表2的 Transformer (big),比此前报告的最佳模型,包括集成模型,提高超过2.0 BLEU,建立了28.4 BLEU的新最佳成绩。该模型配置列在表3最下面一行,在8块 P100 GPU 上训练用了3.5天。即使我们的基础模型,也超过了所有此前发表的模型和集成模型,而训练成本仅为其他有竞争力模型的一小部分。
在 WMT 2014 英语到法语翻译任务上,我们的大型模型达到41.0 BLEU,超过了此前所有发表的单模型,训练成本却不到此前最佳模型的四分之一。英语—法语任务的 Transformer (big) 使用 P_drop = 0.1,而不是0.3。
对于基础模型,我们将最后5个检查点平均,得到一个单模型;检查点每10分钟保存一次。对于大型模型,我们平均最后20个检查点。我们使用束搜索,束宽为4,长度惩罚 α = 0.6[38]。这些超参数是在开发集上试验后确定的。推理时最大输出长度设为输入长度加50,但在可以结束时提前终止[38]。
表2汇总我们的结果,并将翻译质量与训练成本同文献中其他模型架构比较。我们用训练时间、GPU数量,以及每块 GPU 持续单精度浮点运算能力的估计值相乘,估算训练模型所用的浮点运算总次数⁵。
⁵ 对 K80、K40、M40 和 P100,我们分别使用2.8、3.7、6.0和9.5 TFLOPS。
6.2 模型变体
为评估 Transformer 不同组件的重要性,我们以不同方式改变基础模型,测量在英语—德语翻译开发集 newstest2013 上的性能变化。我们使用上一节描述的束搜索,但不做检查点平均。这些结果见表3。
表3:Transformer 架构的不同变体。未列出的值与基础模型相同。所有指标都来自英语—德语翻译开发集 newstest2013。这里的困惑度根据我们的字节对编码,按每个 word-piece 计算,不应与按每个词计算的困惑度比较。
表内标注:N=堆叠层数;d_model=模型维度;d_ff=前馈网络内部维度;h=注意力头数;dₖ、dᵥ=键和值的维度;P_drop=Dropout概率;ε_ls=标签平滑系数;train steps=训练步数;PPL (dev)=开发集困惑度;BLEU (dev)=开发集BLEU;params ×10⁶=参数量(百万)。base=基础模型;big=大型模型;(E)的说明为“用位置嵌入替代正弦函数”。
在表3的(A)组中,我们按第3.2.2节所述,在保持计算量不变的条件下,改变注意力头数量,以及键和值的维度。单头注意力比最佳配置低0.9 BLEU,而注意力头过多时,质量也会下降。
在表3的(B)组中,我们观察到,减小注意力键的维度 dₖ 会损害模型质量。这表明判断兼容性并不容易,比点积更复杂的兼容性函数可能会有益。我们还在(C)组和(D)组观察到,正如预期,更大的模型更好,Dropout 对防止过拟合很有帮助。在(E)组中,我们用可学习的位置嵌入[9]替换正弦位置编码,结果与基础模型几乎相同。
6.3 英语成分句法分析
为评估 Transformer 能否泛化到其他任务,我们进行了英语成分句法分析实验。这项任务具有特定挑战:输出受到很强的结构约束,而且明显长于输入。此外,在小数据条件下,RNN 序列到序列模型一直未能达到最佳结果[37]。
我们在 Penn Treebank[25]的《华尔街日报》(WSJ)部分训练了一个4层 Transformer,d_model = 1024,训练句子约40000个。我们还在半监督条件下训练,使用规模更大的高置信度与 BerkeleyParser 语料,总计约1700万个句子[37]。仅使用 WSJ 时,词表包含16000个 Token;半监督条件下,词表包含32000个 Token。
我们只做了少量实验,在第22部分的开发集上选择注意力 Dropout、残差 Dropout(第5.4节)、学习率和束宽。所有其他参数都与英语—德语基础翻译模型保持一致。推理时,我们将最大输出长度增加为输入长度加300。在仅使用 WSJ 和半监督两种条件下,都使用束宽21、α = 0.3。
表4:Transformer 能很好地泛化到英语成分句法分析;结果来自 WSJ 第23部分。
| 句法分析器 | 训练方式 | WSJ 23 F1 |
|---|---|---|
| Vinyals 与 Kaiser 等(2014)[37] | 仅WSJ,判别式 | 88.3 |
| Petrov 等(2006)[29] | 仅WSJ,判别式 | 90.4 |
| Zhu 等(2013)[40] | 仅WSJ,判别式 | 90.4 |
| Dyer 等(2016)[8] | 仅WSJ,判别式 | 91.7 |
| Transformer(4层) | 仅WSJ,判别式 | 91.3 |
| Zhu 等(2013)[40] | 半监督 | 91.3 |
| Huang 与 Harper(2009)[14] | 半监督 | 91.3 |
| McClosky 等(2006)[26] | 半监督 | 92.1 |
| Vinyals 与 Kaiser 等(2014)[37] | 半监督 | 92.1 |
| Transformer(4层) | 半监督 | 92.7 |
| Luong 等(2015)[23] | 多任务 | 93.0 |
| Dyer 等(2016)[8] | 生成式 | 93.3 |
表4中的结果显示,尽管没有针对任务专门调优,我们的模型仍表现得出乎意料地好,超过了此前报告的所有模型,唯一例外是循环神经网络语法模型[8]。
与 RNN 序列到序列模型[37]不同,Transformer 即使只在包含40000个句子的 WSJ 训练集上训练,也能超过 BerkeleyParser[29]。
7 结论
在这项工作中,我们提出了 Transformer,这是第一个完全基于注意力的序列转换模型,用多头自注意力替换了编码器—解码器架构中最常用的循环层。
对于翻译任务,Transformer 的训练速度明显快于基于循环层或卷积层的架构。在 WMT 2014 英语到德语和英语到法语翻译任务上,我们都达到新的最佳水平。在前一项任务中,我们的最佳模型甚至超过此前报告的所有集成模型。
我们对基于注意力的模型的未来感到兴奋,并计划将它们应用于其他任务。我们计划把 Transformer 扩展到输入和输出模态不限于文本的问题,并研究局部、受限注意力机制,以高效处理图像、音频和视频等大型输入与输出。让生成过程更少依赖顺序执行,也是我们的另一个研究目标。
我们用于训练和评估模型的代码,公开在 https://github.com/tensorflow/tensor2tensor。
致谢
感谢 Nal Kalchbrenner 和 Stephan Gouws,他们提供了富有成效的意见、修正和启发。
参考文献
[1] Jimmy Lei Ba、Jamie Ryan Kiros、Geoffrey E Hinton。《层归一化》(Layer Normalization)。arXiv 预印本,arXiv:1607.06450,2016。
[2] Dzmitry Bahdanau、Kyunghyun Cho、Yoshua Bengio。《通过联合学习对齐与翻译的神经机器翻译》(Neural Machine Translation by Jointly Learning to Align and Translate)。CoRR,abs/1409.0473,2014。
[3] Denny Britz、Anna Goldie、Minh-Thang Luong、Quoc V. Le。《对神经机器翻译架构的大规模探索》(Massive Exploration of Neural Machine Translation Architectures)。CoRR,abs/1703.03906,2017。
[4] Jianpeng Cheng、Li Dong、Mirella Lapata。《用于机器阅读的长短期记忆网络》(Long Short-Term Memory-Networks for Machine Reading)。arXiv 预印本,arXiv:1601.06733,2016。
[5] Kyunghyun Cho、Bart van Merrienboer、Caglar Gulcehre、Fethi Bougares、Holger Schwenk、Yoshua Bengio。《使用 RNN 编码器—解码器学习短语表示,用于统计机器翻译》(Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation)。CoRR,abs/1406.1078,2014。
[6] Francois Chollet。《Xception:基于深度可分离卷积的深度学习》(Xception: Deep Learning with Depthwise Separable Convolutions)。arXiv 预印本,arXiv:1610.02357,2016。
[7] Junyoung Chung、Çaglar Gülçehre、Kyunghyun Cho、Yoshua Bengio。《门控循环神经网络在序列建模中的实证评估》(Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling)。CoRR,abs/1412.3555,2014。
[8] Chris Dyer、Adhiguna Kuncoro、Miguel Ballesteros、Noah A. Smith。《循环神经网络语法》(Recurrent Neural Network Grammars)。NAACL 会议论文集,2016。
[9] Jonas Gehring、Michael Auli、David Grangier、Denis Yarats、Yann N. Dauphin。《卷积序列到序列学习》(Convolutional Sequence to Sequence Learning)。arXiv 预印本,arXiv:1705.03122v2,2017。
[10] Alex Graves。《使用循环神经网络生成序列》(Generating Sequences with Recurrent Neural Networks)。arXiv 预印本,arXiv:1308.0850,2013。
[11] Kaiming He、Xiangyu Zhang、Shaoqing Ren、Jian Sun。《用于图像识别的深度残差学习》(Deep Residual Learning for Image Recognition)。IEEE 计算机视觉与模式识别会议论文集,第770–778页,2016。
[12] Sepp Hochreiter、Yoshua Bengio、Paolo Frasconi、Jürgen Schmidhuber。《循环网络中的梯度流:学习长期依赖的困难》(Gradient Flow in Recurrent Nets: The Difficulty of Learning Long-Term Dependencies),2001。
[13] Sepp Hochreiter、Jürgen Schmidhuber。《长短期记忆》(Long Short-Term Memory)。Neural Computation,9(8):1735–1780,1997。
[14] Zhongqiang Huang、Mary Harper。《跨语言对具有隐式标注的 PCFG 语法进行自训练》(Self-Training PCFG Grammars with Latent Annotations across Languages)。2009年自然语言处理经验方法会议论文集,第832–841页,ACL,2009年8月。
[15] Rafal Jozefowicz、Oriol Vinyals、Mike Schuster、Noam Shazeer、吴永辉。《探索语言建模的极限》(Exploring the Limits of Language Modeling)。arXiv 预印本,arXiv:1602.02410,2016。
[16] Łukasz Kaiser、Samy Bengio。《主动记忆能替代注意力吗?》(Can Active Memory Replace Attention?)。Advances in Neural Information Processing Systems(NIPS),2016。
[17] Łukasz Kaiser、Ilya Sutskever。《神经 GPU 学习算法》(Neural GPUs Learn Algorithms)。国际学习表征会议(ICLR),2016。
[18] Nal Kalchbrenner、Lasse Espeholt、Karen Simonyan、Aaron van den Oord、Alex Graves、Koray Kavukcuoglu。《线性时间的神经机器翻译》(Neural Machine Translation in Linear Time)。arXiv 预印本,arXiv:1610.10099v2,2017。
[19] Yoon Kim、Carl Denton、Luong Hoang、Alexander M. Rush。《结构化注意力网络》(Structured Attention Networks)。国际学习表征会议,2017。
[20] Diederik Kingma、Jimmy Ba。《Adam:一种随机优化方法》(Adam: A Method for Stochastic Optimization)。ICLR,2015。
[21] Oleksii Kuchaiev、Boris Ginsburg。《LSTM 网络的分解技巧》(Factorization Tricks for LSTM Networks)。arXiv 预印本,arXiv:1703.10722,2017。
[22] Zhouhan Lin、Minwei Feng、Cicero Nogueira dos Santos、Mo Yu、Bing Xiang、Bowen Zhou、Yoshua Bengio。《结构化自注意力句子嵌入》(A Structured Self-Attentive Sentence Embedding)。arXiv 预印本,arXiv:1703.03130,2017。
[23] Minh-Thang Luong、Quoc V. Le、Ilya Sutskever、Oriol Vinyals、Lukasz Kaiser。《多任务序列到序列学习》(Multi-Task Sequence to Sequence Learning)。arXiv 预印本,arXiv:1511.06114,2015。
[24] Minh-Thang Luong、Hieu Pham、Christopher D Manning。《基于注意力的神经机器翻译的有效方法》(Effective Approaches to Attention-Based Neural Machine Translation)。arXiv 预印本,arXiv:1508.04025,2015。
[25] Mitchell P Marcus、Mary Ann Marcinkiewicz、Beatrice Santorini。《构建大型英语标注语料:Penn Treebank》(Building a Large Annotated Corpus of English: The Penn Treebank)。Computational Linguistics,19(2):313–330,1993。
[26] David McClosky、Eugene Charniak、Mark Johnson。《有效的句法分析自训练》(Effective Self-Training for Parsing)。NAACL 人类语言技术会议主会议论文集,第152–159页,ACL,2006年6月。
[27] Ankur Parikh、Oscar Täckström、Dipanjan Das、Jakob Uszkoreit。《可分解注意力模型》(A Decomposable Attention Model)。自然语言处理经验方法会议,2016。
[28] Romain Paulus、Caiming Xiong、Richard Socher。《用于生成式摘要的深度强化模型》(A Deep Reinforced Model for Abstractive Summarization)。arXiv 预印本,arXiv:1705.04304,2017。
[29] Slav Petrov、Leon Barrett、Romain Thibaux、Dan Klein。《学习准确、紧凑且可解释的树标注》(Learning Accurate, Compact, and Interpretable Tree Annotation)。第21届国际计算语言学会议暨第44届 ACL 年会论文集,第433–440页,ACL,2006年7月。
[30] Ofir Press、Lior Wolf。《利用输出嵌入改善语言模型》(Using the Output Embedding to Improve Language Models)。arXiv 预印本,arXiv:1608.05859,2016。
[31] Rico Sennrich、Barry Haddow、Alexandra Birch。《使用子词单元进行稀有词神经机器翻译》(Neural Machine Translation of Rare Words with Subword Units)。arXiv 预印本,arXiv:1508.07909,2015。
[32] Noam Shazeer、Azalia Mirhoseini、Krzysztof Maziarz、Andy Davis、Quoc Le、Geoffrey Hinton、Jeff Dean。《超大规模神经网络:稀疏门控专家混合层》(Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer)。arXiv 预印本,arXiv:1701.06538,2017。
[33] Nitish Srivastava、Geoffrey E Hinton、Alex Krizhevsky、Ilya Sutskever、Ruslan Salakhutdinov。《Dropout:一种防止神经网络过拟合的简单方法》(Dropout: A Simple Way to Prevent Neural Networks from Overfitting)。Journal of Machine Learning Research,15(1):1929–1958,2014。
[34] Sainbayar Sukhbaatar、Arthur Szlam、Jason Weston、Rob Fergus。《端到端记忆网络》(End-to-End Memory Networks)。C. Cortes、N. D. Lawrence、D. D. Lee、M. Sugiyama、R. Garnett 编,Advances in Neural Information Processing Systems 28,第2440–2448页,Curran Associates, Inc.,2015。
[35] Ilya Sutskever、Oriol Vinyals、Quoc VV Le。《使用神经网络进行序列到序列学习》(Sequence to Sequence Learning with Neural Networks)。Advances in Neural Information Processing Systems,第3104–3112页,2014。
[36] Christian Szegedy、Vincent Vanhoucke、Sergey Ioffe、Jonathon Shlens、Zbigniew Wojna。《重新思考用于计算机视觉的 Inception 架构》(Rethinking the Inception Architecture for Computer Vision)。CoRR,abs/1512.00567,2015。
[37] Vinyals 与 Kaiser、Koo、Petrov、Sutskever、Hinton。《把语法视作一门外语》(Grammar as a Foreign Language)。Advances in Neural Information Processing Systems,2015。
[38] 吴永辉、Mike Schuster、Zhifeng Chen、Quoc V Le、Mohammad Norouzi、Wolfgang Macherey、Maxim Krikun、Yuan Cao、Qin Gao、Klaus Macherey 等。《Google 的神经机器翻译系统:弥合人类与机器翻译之间的差距》(Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation)。arXiv 预印本,arXiv:1609.08144,2016。
[39] Jie Zhou、Ying Cao、Xuguang Wang、Peng Li、Wei Xu。《用于神经机器翻译的带快进连接的深度循环模型》(Deep Recurrent Models with Fast-Forward Connections for Neural Machine Translation)。CoRR,abs/1606.04199,2016。
[40] Muhua Zhu、Yue Zhang、Wenliang Chen、Min Zhang、Jingbo Zhu。《快速且准确的移进—归约成分句法分析》(Fast and Accurate Shift-Reduce Constituent Parsing)。第51届 ACL 年会论文集,第1卷:长篇论文,第434–443页,ACL,2013年8月。
注意力可视化
图中“Input-Input Layer5”表示输入序列内部的注意力,位置为第5层。
图3中的句子:“正是在这种精神的指引下,美国多数政府自2009年以来通过了新法律,让登记或投票程序更加困难。”图中的 <EOS> 表示序列结束标记,<pad> 表示填充标记。
making…more difficult 意为“使……更加困难”。
图4与图5中的句子:“法律永远不可能完美,但它的实施应当公正;在我看来,这正是我们所欠缺的。”其中 its(它的)是图4重点展示的照应词。