【论文阅读】-《Attention Is All You Need》(Transformer)
Attention Is All You Need
原文链接:https://arxiv.org/pdf/1706.03762
摘要
主流的序列转导模型基于包含编码器和解码器的复杂循环或卷积神经网络。性能最佳的模型还通过注意力机制连接编码器和解码器。我们提出了一种新的简单网络架构——Transformer,它完全基于注意力机制,完全摒弃了循环和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上更优,同时更具可并行性,并且需要的训练时间显著减少。我们的模型在 WMT 2014 英德翻译任务上达到了 28.4 的 BLEU 分数,比现有最佳结果(包括集成模型)提高了超过 2 BLEU。在 WMT 2014 英法翻译任务上,我们的模型在 8 个 GPU 上训练 3.5 天后,建立了一个新的单模型最先进的 BLEU 分数 41.8,这只是文献中最佳模型训练成本的一小部分。我们通过将 Transformer 成功应用于英语成分句法分析(无论训练数据量大或有限)表明,Transformer 能够很好地泛化到其他任务。
1 引言
循环神经网络,尤其是长短期记忆网络 [13] 和门控循环神经网络 [7],已被牢固确立为序列建模和转导问题(如语言建模和机器翻译 [35, 2, 5])中的最先进方法。此后,许多努力不断推动循环语言模型和编码器-解码器架构的边界 [38, 24, 15]。
循环模型通常沿着输入和输出序列的符号位置进行因子分解计算。将位置与计算时间步对齐,它们生成一个隐藏状态序列 hth_{t}ht,作为前一个隐藏状态 ht−1h_{t-1}ht−1 和位置 ttt 的输入的函数。这种固有的顺序性质阻止了在训练样本内的并行化,这在序列较长时变得至关重要,因为内存限制限制了样本间的批处理。最近的工作通过因子分解技巧 [21] 和条件计算 [32] 在计算效率方面取得了显著改进,同时在后者的情况下也提高了模型性能。然而,顺序计算的基本约束仍然存在。
注意力机制已成为各种任务中引人注目的序列建模和转导模型的一个组成部分,允许建模依赖关系而无视它们在输入或输出序列中的距离 [2, 19]。然而,在除少数情况外 [27],这种注意力机制都与循环网络结合使用。
在这项工作中,我们提出了 Transformer,这是一种摒弃循环、完全依赖注意力机制来绘制输入和输出之间全局依赖关系的模型架构。Transformer 允许显著更多的并行化,并且在 8 个 P100 GPU 上训练仅十二小时后即可达到翻译质量的新水平。
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]。这里,编码器将符号表示 (x1,...,xn)(x_{1},...,x_{n})(x1,...,xn) 的输入序列映射到连续表示 z=(z1,...,zn)\mathbf{z}=(z_{1},...,z_{n})z=(z1,...,zn) 的序列。给定 z\mathbf{z}z,解码器随后逐个元素地生成符号的输出序列 (y1,...,ym)(y_{1},...,y_{m})(y1,...,ym)。在每个步骤,模型是自回归的 [10],在生成下一个符号时消耗先前生成的符号作为附加输入。
Transformer 遵循这种整体架构,对编码器和解码器都使用堆叠的自注意力和逐点全连接层,分别如图 1 的左半部分和右半部分所示。
编码器和解码器堆栈
编码器: 编码器由 N=6N=6N=6 个相同层的堆栈组成。每层有两个子层。第一个是多头自注意力机制,第二个是简单的、位置级全连接前馈网络。我们在每个子层周围采用残差连接 [11],然后是层归一化 [1]。即,每个子层的输出是 LayerNorm(x+Sublayer(x)x+\text{Sublayer}(x)x+Sublayer(x)),其中 Sublayer(x)\text{Sublayer}(x)Sublayer(x) 是子层本身实现的函数。为了促进这些残差连接,模型中的所有子层以及嵌入层都产生维度 dmodel=512d_{\text{model}}=512dmodel=512 的输出。
解码器: 解码器也由 N=6N=6N=6 个相同层的堆栈组成。除了每个编码器层中的两个子层之外,解码器插入第三个子层,该子层对编码器堆栈的输出执行多头注意力。与编码器类似,我们在每个子层周围采用残差连接,然后是层归一化。我们还修改了解码器堆栈中的自注意力子层,以防止位置关注后续位置。这种掩码结合输出嵌入偏移一个位置的事实,确保对位置 iii 的预测只能依赖于位置小于 iii 的已知输出。
注意力
注意力函数可以描述为将查询和一组键-值对映射到输出,其中查询、键、值和输出都是向量。输出计算为值的加权和,其中分配给每个值的权重由查询与相应键的兼容性函数计算。
图 1: Transformer - 模型架构。
3.2.1 缩放点积注意力
我们将我们的特定注意力称为"缩放点积注意力"(图 2)。输入包括维度为 dkd_{k}dk 的查询和键,以及维度为 dvd_{v}dv 的值。我们计算查询与所有键的点积,每个点积除以 dk\sqrt{d_{k}}dk,然后应用 softmax 函数来获得值的权重。
在实践中,我们同时计算一组查询的注意力函数,将它们打包成矩阵 QQQ。键和值也打包成矩阵 KKK 和 VVV。我们计算输出矩阵为:
Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q,K,V)=\text{softmax}(\frac{QK^{T}}{\sqrt{d_{k}}})VAttention(Q,K,V)=softmax(dkQKT)V (1)
两种最常用的注意力函数是加性注意力 [2] 和点积(乘法)注意力。点积注意力与我们的算法相同,除了缩放因子 1dk\frac{1}{\sqrt{d_{k}}}dk1。加性注意力使用具有单个隐藏层的前馈网络计算兼容性函数。虽然两者在理论复杂度上相似,但点积注意力在实践中更快且空间效率更高,因为它可以使用高度优化的矩阵乘法代码实现。
虽然对于较小的 dkd_{k}dk 值,两种机制性能相似,但对于较大的 dkd_{k}dk 值,加性注意力在不缩放的情况下优于点积注意力 [3]。我们推测对于较大的 dkd_{k}dk 值,点积的幅度会变大,将 softmax 函数推入梯度极小的区域4^44。为了抵消这种影响,我们用 1dk\frac{1}{\sqrt{d_{k}}}dk1 缩放点积。
3.2.2 多头注意力
我们不使用 dmodeld_{\text{model}}dmodel 维的键、值和查询执行单一的注意力函数,而是发现将查询、键和值用不同的、习得的线性投影线性投影 hhh 次到 dkd_{k}dk、dkd_{k}dk 和 dvd_{v}dv 维是有益的。然后,我们在这些投影后的查询、键和值的每个版本上并行执行注意力函数,产生 dvd_{v}dv 维的输出值。这些输出被连接起来并再次投影,得到最终值,如图 2 所示。
图 2: (左)缩放点积注意力。(右)多头注意力由几个并行运行的注意力层组成。
多头注意力允许模型共同关注来自不同位置的不同表示子空间的信息。使用单一的注意力头,平均会抑制这一点。
MultiHead(Q,K,V)=Concat(head1,...,headn)WO\text{MultiHead}(Q,K,V)=\text{Concat}(\text{head}_{1},...,\text{ head}_{n})W^{O}MultiHead(Q,K,V)=Concat(head1,..., headn)WO
其中 headi=Attention(QWiQ,KWiK,VWiV)\text{其中 head}_{i}=\text{Attention}(QW_{i}^{Q},KW_{i}^{K},VW_{i}^{V})其中 headi=Attention(QWiQ,KWiK,VWiV)
其中投影是参数矩阵 WiQ∈Rdmodel×dkW_{i}^{Q}\in\mathbb{R}^{d_{\text{model}}\times d_{k}}WiQ∈Rdmodel×dk,WiK∈Rdmodel×dkW_{i}^{K}\in\mathbb{R}^{d_{\text{model}}\times d_{k}}WiK∈Rdmodel×dk,WiV∈Rdmodel×dvW_{i}^{V}\in\mathbb{R}^{d_{\text{model}}\times d_{v}}WiV∈Rdmodel×dv 和 WO∈Rhdv×dmodelW^{O}\in\mathbb{R}^{hd_{v}\times d_{\text{model}}}WO∈Rhdv×dmodel。
在这项工作中,我们采用 h=8h=8h=8 个并行注意力层或头。对于每个头,我们使用 dk=dv=dmodel/h=64d_{k}=d_{v}=d_{\text{model}}/h=64dk=dv=dmodel/h=64。由于每个头的维度减少,总计算成本与全维度的单头注意力相似。
3.2.3 注意力在我们模型中的应用
Transformer 在三种不同的方式中使用多头注意力:
- 在"编码器-解码器注意力"层中,查询来自前一个解码器层,而记忆键和值来自编码器的输出。这允许解码器中的每个位置关注输入序列中的所有位置。这模仿了序列到序列模型(如 [38, 2, 9])中典型的编码器-解码器注意力机制。
- 编码器包含自注意力层。在自注意力层中,所有键、值和查询都来自同一个地方,即编码器中前一层的输出。编码器中的每个位置可以关注编码器前一层中的所有位置。
- 类似地,解码器中的自注意力层允许解码器中的每个位置关注解码器中包括该位置在内的所有位置。我们需要阻止解码器中的向左信息流以保持自回归特性。我们通过在 softmax 的输入中屏蔽(设置为 −∞-\infty−∞)所有对应非法连接的值,在缩放点积注意力内部实现这一点。参见图 2。
位置级前馈网络
除了注意力子层之外,我们的编码器和解码器中的每个层都包含一个全连接的前馈网络,该网络分别且相同地应用于每个位置。这包括两个线性变换,中间有一个 ReLU 激活。
FFN(x)=max(0,xW1+b1)W2+b2\text{FFN}(x)=\max(0,xW_{1}+b_{1})W_{2}+b_{2}FFN(x)=max(0,xW1+b1)W2+b2 (2)
虽然线性变换在不同位置上是相同的,但它们在层与层之间使用不同的参数。另一种描述方式是将其视为两个核大小为 1 的卷积。输入和输出的维度是 dmodel=512d_{\text{model}}=512dmodel=512,内层的维度是 dff=2048d_{ff}=2048dff=2048。
嵌入和 Softmax
与其他序列转导模型类似,我们使用习得的嵌入将输入词符和输出词符转换为维度 dmodeld_{\text{model}}dmodel 的向量。我们还使用通常的习得线性变换和 softmax 函数将解码器输出转换为预测的下一个词符概率。在我们的模型中,我们在两个嵌入层和 pre-softmax 线性变换之间共享相同的权重矩阵,类似于 [30]。在嵌入层中,我们将这些权重乘以 dmodel\sqrt{d_{\text{model}}}dmodel。
位置编码
由于我们的模型不包含循环和卷积,为了让模型利用序列的顺序,我们必须注入一些关于序列中词符的相对或绝对位置的信息。为此,我们在编码器和解码器堆栈的底部向输入嵌入添加"位置编码"。位置编码与嵌入具有相同的维度 dmodeld_{\text{model}}dmodel,因此两者可以相加。位置编码有很多选择,习得的和固定的 [9]。
在这项工作中,我们使用不同频率的正弦和余弦函数:
PE(pos,2i)=sin(pos/100002i/dmodel)PE_{(pos,2i)}=sin(pos/10000^{2i/d_{\text{model}}})PE(pos,2i)=sin(pos/100002i/dmodel)
PE(pos,2i+1)=cos(pos/100002i/dmodel)PE_{(pos,2i+1)}=cos(pos/10000^{2i/d_{\text{model}}})PE(pos,2i+1)=cos(pos/100002i/dmodel)
其中 pospospos 是位置,iii 是维度。也就是说,位置编码的每个维度对应一个正弦曲线。波长从 2π2\pi2π 到 10000⋅2π10000\cdot 2\pi10000⋅2π 形成几何级数。我们选择这个函数是因为我们假设它允许模型很容易地通过相对位置来学习关注,因为对于任何固定的偏移 kkk,PEpos+kPE_{pos+k}PEpos+k 可以表示为 PEposPE_{pos}PEpos 的线性函数。
我们还尝试使用习得的位置嵌入 [9] 代替,发现两个版本产生了几乎相同的结果(见表 3 行 (E))。我们选择正弦版本是因为它可能允许模型外推到比训练中遇到的序列长度更长的序列。
4 为什么使用自注意力
在本节中,我们将自注意力层的各个方面与常用于将一个可变长度的符号表示序列 (x1,...,xn)(x_{1},...,x_{n})(x1,...,xn) 映射到另一个等长序列 (z1,...,zn)(z_{1},...,z_{n})(z1,...,zn)(其中 xi,zi∈Rdx_{i},z_{i}\in\mathbb{R}^{d}xi,zi∈Rd)的循环层和卷积层进行比较,例如典型序列转导编码器或解码器中的隐藏层。为阐述我们使用自注意力的动机,我们考虑了三个需求。
一个是每层的总计算复杂度。另一个是可以并行化的计算量,以所需顺序操作的最小数量来衡量。
第三个是网络中长程依赖之间的路径长度。学习长程依赖是许多序列转导任务中的一个关键挑战。影响学习这种依赖能力的一个关键因素是前向和反向信号必须在网络中遍历的路径长度。输入和输出序列中任何位置组合之间的这些路径越短,学习长程依赖就越容易 [12]。因此,我们还比较了由不同层类型组成的网络中任何两个输入和输出位置之间的最大路径长度。
如表 1 所示,自注意力层以恒定数量的顺序执行操作连接所有位置,而循环层需要 O(n)O(n)O(n) 个顺序操作。在计算复杂度方面,当序列长度 nnn 小于表示维度 ddd 时,自注意力层比循环层更快,这在机器翻译中最先进模型使用的句子表示(如 word-piece [38] 和 byte-pair [31] 表示)中是最常见的情况。为了提高涉及非常长序列的任务的计算性能,自注意力可以限制为仅考虑输入序列中围绕相应输出位置的大小为 rrr 的邻域。这将使最大路径长度增加到 O(n/r)O(n/r)O(n/r)。我们计划在未来的工作中进一步研究这种方法。
表 1: 不同层类型的最大路径长度、每层复杂度和最小顺序操作数。nnn 是序列长度,ddd 是表示维度,kkk 是卷积的核大小,rrr 是受限自注意力中邻域的大小。
核宽度 k<nk<nk<n 的单个卷积层并不连接所有输入和输出位置对。在连续核的情况下,这需要堆叠 O(n/k)O(n/k)O(n/k) 个卷积层,或者在膨胀卷积 [18] 的情况下需要 O(logk(n))O(log_{k}(n))O(logk(n)) 层,从而增加了网络中任何两个位置之间最长路径的长度。卷积层通常比循环层更昂贵,高出 kkk 倍。然而,可分离卷积 [6] 将复杂度显著降低到 O(k⋅n⋅d+n⋅d2)O(k\cdot n\cdot d+n\cdot d^{2})O(k⋅n⋅d+n⋅d2)。但即使 k=nk=nk=n,可分离卷积的复杂度也等于自注意力层和逐点前馈层的组合,这正是我们模型中采用的方法。
作为附带好处,自注意力可以产生更可解释的模型。我们检查了来自我们模型的注意力分布,并在附录中展示和讨论了示例。不仅个体注意力头明显学会执行不同的任务,而且许多头似乎表现出与句子的句法和语义结构相关的行为。
5 训练
本节描述我们模型的训练方案。
训练数据和批处理
我们在标准的 WMT 2014 英德数据集上训练,该数据集包含约 450 万个句子对。句子使用字节对编码 [3] 进行编码,该编码具有约 37000 个词符的共享源-目标词汇表。对于英法翻译,我们使用了更大的 WMT 2014 英法数据集,包含 3600 万个句子,并将词符分割为 32000 个 word-piece 词汇表 [38]。句子对通过近似序列长度进行批处理。每个训练批包含一组句子对,包含大约 25000 个源词符和 25000 个目标词符。
硬件和时间表
我们在一台配有 8 个 NVIDIA P100 GPU 的机器上训练我们的模型。对于我们使用本文通篇描述的超参数的基准模型,每个训练步骤大约需要 0.4 秒。我们对基准模型总共训练了 100,000 步或 12 小时。对于我们的大模型(表 3 底行描述),步进时间为 1.0 秒。大模型训练了 300,000 步(3.5 天)。
优化器
我们使用 Adam 优化器 [20],其中 β1=0.9\beta_{1}=0.9β1=0.9,β2=0.98\beta_{2}=0.98β2=0.98 和 ϵ=10−9\epsilon=10^{-9}ϵ=10−9。我们根据以下公式在训练过程中改变学习率:
lrate=dmodel−0.5⋅min(step_num−0.5,step_num⋅warmup_steps−1.5)lrate=d_{\text{model}}^{-0.5}\cdot\min(step\_num^{-0.5},step\_num\cdot warmup_{\_steps}^{-1.5})lrate=dmodel−0.5⋅min(step_num−0.5,step_num⋅warmup_steps−1.5) (3)
这对应于在前 warmup_stepswarmup\_stepswarmup_steps 个训练步骤中线性增加学习率,之后按步骤数的逆平方根比例递减。我们使用 warmup_steps=4000warmup\_steps=4000warmup_steps=4000。
正则化
我们在训练期间采用三种类型的正则化:
残差 Dropout 我们将 dropout [33] 应用于每个子层的输出,然后将其添加到子层输入并进行归一化。此外,我们将 dropout 应用于编码器和解码器堆栈中的嵌入和位置编码之和。对于基准模型,我们使用比率 Pdrop=0.1P_{drop}=0.1Pdrop=0.1。
标签平滑 在训练期间,我们采用值 ϵls=0.1\epsilon_{ls}=0.1ϵls=0.1 的标签平滑 [36]。这损害了困惑度,因为模型学会更加不确定,但提高了准确性和 BLEU 分数。
6 结果
机器翻译
在 WMT 2014 英德翻译任务上,大型 transformer 模型(表 2 中的 Transformer (big))比之前报告的最佳模型(包括集成模型)高出超过 2.02.02.0 BLEU,建立了新的最先进的 BLEU 分数 28.4。该模型的配置列在表 3 的底行。训练在 888 个 P100 GPU 上耗时 3.53.53.5 天。即使我们的基准模型也超过了所有先前发布的模型和集成模型,而训练成本只是任何竞争模型的一小部分。
在 WMT 2014 英法翻译任务上,我们的大型模型获得了 41.0 的 BLEU 分数,优于所有先前发布的单模型,而训练成本不到先前最先进模型的 1/41/41/4。为英法翻译训练的 Transformer (big) 模型使用的 dropout 率是 Pdrop=0.1P_{drop}=0.1Pdrop=0.1,而不是 0.30.30.3。
对于基准模型,我们使用通过对最后 5 个检查点(每 10 分钟写入一次)进行平均得到的单个模型。对于大型模型,我们对最后 20 个检查点进行平均。我们使用集束搜索,集束大小为 444,长度惩罚 α=0.6\alpha=0.6α=0.6 [38]。这些超参数是在开发集上实验后选择的。我们在推理期间将最大输出长度设置为输入长度 + 505050,但尽可能提前终止 [38]。
表 2 总结了我们的结果,并将我们的翻译质量和训练成本与文献中的其他模型架构进行了比较。我们通过将训练时间、使用的 GPU 数量以及每个 GPU 的持续单精度浮点能力的估计值相乘来估计用于训练模型的浮点操作数5^55。
表 2: Transformer在英语到德语和英语到法语的newstest2014测试中,以极低的训练成本获得了比以往最先进模型更高的BLEU分数。
模型变体
为了评估 Transformer 不同组件的重要性,我们以不同方式改变我们的基准模型,测量在英德翻译开发集 newstest2013 上性能的变化。我们使用上一节描述的集束搜索,但不进行检查点平均。我们在表 3 中展示了这些结果。
在表 3 行 (A) 中,我们改变注意力头的数量以及注意力键和值的维度,保持计算量不变,如第 3.2.2 节所述。虽然单头注意力比最佳设置差 0.9 BLEU,但头数过多时质量也会下降。
在表 3 行 (B) 中,我们观察到减小注意力键大小 dkd_{k}dk 会损害模型质量。这表明确定兼容性并不容易,并且比点积更复杂的兼容性函数可能是有益的。我们在行 © 和 (D) 中进一步观察到,正如预期的那样,更大的模型更好,并且 dropout 对于避免过拟合非常有帮助。在行 (E) 中,我们用习得的位置嵌入 [9] 替换我们的正弦位置编码,并观察到与基准模型几乎相同的结果。
表3:Transformer架构的变体。未列出的数值与基线模型相同。所有指标均基于英语-德语翻译开发集newstest2013。列出的困惑度均按词片(根据我们的字节对编码)计算,不应与按词计算的困惑度直接比较。
英语成分句法分析
为了评估 Transformer 是否可以泛化到其他任务,我们进行了英语成分句法分析的实验。该任务提出了特定的挑战:输出受到强大的结构约束,并且明显长于输入。此外,RNN 序列到序列模型在少数据情况下未能获得最先进的结果 [37]。
我们在 Penn Treebank [25] 的华尔街日报 (WSJ) 部分上训练了一个 4 层 transformer,dmodel=1024d_{model}=1024dmodel=1024,大约有 40K 训练句子。我们还在半监督设置下对其进行了训练,使用来自大约 17M 个句子的更大高置信度和 BerkleyParser 语料库 [37]。我们对于仅 WSJ 设置使用了 16K 词符的词汇表,对于半监督设置使用了 32K 词符的词汇表。
我们只进行了少量实验来在 Section 22 开发集上选择 dropout(包括注意力和残差,第 5.4 节)、学习率和集束大小,所有其他参数与英德基准翻译模型保持不变。在推理期间,我们将最大输出长度增加到输入长度 + 300300300。对于仅 WSJ 和半监督设置,我们都使用了集束大小 212121 和 α=0.3\alpha=0.3α=0.3。
我们在表 4 中的结果表明,尽管缺乏针对特定任务的调整,我们的模型表现得出奇地好,产生的结果优于所有先前报告的模型,除了循环神经网络语法 [8]。
与 RNN 序列到序列模型 [37] 相比,即使仅在 40K 句子的 WSJ 训练集上训练,Transformer 也优于 Berkeley-Parser [29]。
表4:Transformer在英语成分句法分析中展现出出色的泛化能力(结果基于WSJ第23节数据)
7 结论
在这项工作中,我们提出了 Transformer,这是第一个完全基于注意力的序列转导模型,用多头自注意力取代了编码器-解码器架构中最常用的循环层。
对于翻译任务,Transformer 的训练速度明显快于基于循环或卷积层的架构。在 WMT 2014 英德和 WMT 2014 英法翻译任务上,我们都达到了新的技术水平。在前一个任务中,我们的最佳模型甚至优于所有先前报告的集成模型。
我们对基于注意力的模型的未来感到兴奋,并计划将其应用于其他任务。我们计划将 Transformer 扩展到涉及文本以外输入和输出模态的问题,并研究局部的、受限的注意力机制,以有效处理大型输入和输出,如图像、音频和视频。减少生成的顺序性是我们的另一个研究目标。
我们用于训练和评估模型的代码可在 https://github.com/tensorflow/tensor2tensor 获得。
致谢 我们感谢 Nal Kalchbrenner 和 Stephan Gouws 富有成果的评论、修正和启发。
参考文献
[1] Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E Hinton. Layer normalization. arXiv preprint arXiv:1607.06450, 2016.
[2] Dzmitry Bahdanau, Kyunghyun Cho, and 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, and Quoc V. Le. Massive exploration of neural machine translation architectures. CoRR, abs/1703.03906, 2017.
[4] Jianpeng Cheng, Li Dong, and Mirella Lapata. Long short-term memory-networks for machine reading. arXiv preprint arXiv:1601.06733, 2016.
[5] Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning phrase representations using rnn encoder-decoder for statistical machine translation. CoRR, abs/1406.1078, 2014.
[6] Francois Chollet. Xception: Deep learning with depthwise separable convolutions. arXiv preprint arXiv:1610.02357, 2016.
[7] Junyoung Chung, Caglar Gulcehre, Kyunghyun Cho, and Yoshua Bengio. Empirical evaluation of gated recurrent neural networks on sequence modeling. CoRR, abs/1412.3555, 2014.
[8] Chris Dyer, Adhiguna Kuncoro, Miguel Ballesteros, and Noah A. Smith. Recurrent neural network grammars. In Proc. of NAACL, 2016.
[9] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin. Convolutional sequence to sequence learning. arXiv preprint arXiv:1705.03122v2, 2017.
[10] Alex Graves. Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850, 2013.
[11] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 770-778, 2016.
[12] Sepp Hochreiter, Yoshua Bengio, Paolo Frasconi, and Jurgen Schmidhuber. Gradient flow in recurrent nets: the difficulty of learning long-term dependencies, 2001.
[13] Sepp Hochreiter and Jurgen Schmidhuber. Long short-term memory. Neural computation, 9(8):1735-1780, 1997.
[14] Zhongqiang Huang and Mary Harper. Self-training PCFG grammars with latent annotations across languages. In Proceedings of the 2009 Conference on Empirical Methods in Natural Language Processing, pages 832-841. ACL, August 2009.
[15] Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu. Exploring the limits of language modeling. arXiv preprint arXiv:1602.02410, 2016.
[16] Lukasz Kaiser and Samy Bengio. Can active memory replace attention? In Advances in Neural Information Processing Systems, (NIPS), 2016.
[17] Lukasz Kaiser and Ilya Sutskever. Neural GPUs learn algorithms. In International Conference on Learning Representations (ICLR), 2016.
[18] Nal Kalchbrenner, Lasse Espeholt, Karen Simonyan, Aaron van den Oord, Alex Graves, and Koray Kavukcuoglu. Neural machine translation in linear time. arXiv preprint arXiv:1610.10099v2, 2017.
[19] Yoon Kim, Carl Denton, Luong Hoang, and Alexander M. Rush. Structured attention networks. In International Conference on Learning Representations, 2017.
[20] Diederik Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In ICLR, 2015.
[21] Oleksii Kuchaiev and Boris Ginsburg. Factorization tricks for LSTM networks. arXiv preprint arXiv:1703.10722, 2017.
[22] Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, and Yoshua Bengio. A structured self-attentive sentence embedding. arXiv preprint arXiv:1703.03130, 2017.
[23] Minh-Thang Luong, Quoc V. Le, Ilya Sutskever, Oriol Vinyals, and Lukasz Kaiser. Multi-task sequence to sequence learning. arXiv preprint arXiv:1511.06114, 2015.
[24] Minh-Thang Luong, Hieu Pham, and Christopher D Manning. Effective approaches to attention-based neural machine translation. arXiv preprint arXiv:1508.04025, 2015.
[25] Mitchell P Marcus, Mary Ann Marcinkiewicz, and Beatrice Santorini. Building a large annotated corpus of english: The penn treebank. Computational linguistics, 19(2):313-330, 1993.
[26] David McClosky, Eugene Charniak, and Mark Johnson. Effective self-training for parsing. In Proceedings of the Human Language Technology Conference of the NAACL, Main Conference, pages 152-159. ACL, June 2006.
[27] Ankur Parikh, Oscar Tackstrom, Dipanjan Das, and Jakob Uszkoreit. A decomposable attention model. In Empirical Methods in Natural Language Processing, 2016.
[28] Romain Paulus, Caiming Xiong, and Richard Socher. A deep reinforced model for abstractive summarization. arXiv preprint arXiv:1705.04304, 2017.
[29] Slav Petrov, Leon Barrett, Romain Thibaux, and Dan Klein. Learning accurate, compact, and interpretable tree annotation. In Proceedings of the 21st International Conference on Computational Linguistics and 44th Annual Meeting of the ACL, pages 433-440. ACL, July 2006.
[30] Ofir Press and Lior Wolf. Using the output embedding to improve language models. arXiv preprint arXiv:1608.05859, 2016.
[31] Rico Sennrich, Barry Haddow, and Alexandra Birch. Neural machine translation of rare words with subword units. arXiv preprint arXiv:1508.07909, 2015.
[32] Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton, and Jeff Dean. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. arXiv preprint arXiv:1701.06538, 2017.
[33] Nitish Srivastava, Geoffrey E Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. 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, and Rob Fergus. End-to-end memory networks. In C. Cortes, N. D. Lawrence, D. D. Lee, M. Sugiyama, and R. Garnett, editors, Advances in Neural Information Processing Systems 28, pages 2440-2448. Curran Associates, Inc., 2015.
[35] Ilya Sutskever, Oriol Vinyals, and Quoc VV Le. Sequence to sequence learning with neural networks. In Advances in Neural Information Processing Systems, pages 3104-3112, 2014.
[36] Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, and Zbigniew Wojna. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567, 2015.
[37] Vinyals & Kaiser, Koo, Petrov, Sutskever, and Hinton. Grammar as a foreign language. In Advances in Neural Information Processing Systems, 2015.
[38] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv preprint arXiv:1609.08144, 2016.
[39] Jie Zhou, Ying Cao, Xuguang Wang, Peng Li, and 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, and Jingbo Zhu. Fast and accurate shift-reduce constituent parsing. In Proceedings of the 51st Annual Meeting of the ACL (Volume 1: Long Papers), pages 434-443. ACL, August 2013.
注意力可视化
图 3: 一个注意力机制在 6 层中的第 5 层编码器自注意力中遵循长距离依赖的示例。许多注意力头关注动词’making’的一个远距离依赖,完成短语’making…more difficult’。这里显示的注意力仅针对单词’making’。不同的颜色代表不同的头。最好彩色查看。
图 4: 同样在 6 层中的第 5 层的两个注意力头,显然参与了回指消解。顶部:头 5 的完整注意力。底部:仅来自单词’its’对于注意力头 5 和 6 的隔离注意力。注意,对于这个单词,注意力非常尖锐。
图 5: 许多注意力头表现出似乎与句子结构相关的行为。我们在上面给出了两个这样的例子,来自第 5 层编码器自注意力的两个不同头。这些头清楚地学会了执行不同的任务。