原文:Attention Is All You Need

作者:Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin

发表于:NeurIPS 2017

摘要#

目前主流的序列转换模型(sequence transduction model)都基于包含编码器与解码器的复杂循环神经网络(RNN)或卷积神经网络(CNN),其中表现最好的模型还通过注意力机制(attention mechanism)在编码器与解码器之间建立连接。我们提出了一种全新的、完全基于注意力机制的网络架构——Transformer,它完全摒弃了循环与卷积。在两个机器翻译任务上的实验表明,该模型在质量上表现优异,同时具有更高的并行性,训练所需时间也大幅减少。我们的模型在 WMT 2014 英德翻译任务上达到了 28.4 的 BLEU 分值,优于包括集成模型在内的现有最佳结果,比之前的最佳模型高出 2 BLEU 分值以上。在 WMT 2014 英法翻译任务上,我们的模型在单模型的情况下以 41.8 的 BLEU 分值创下了新的最优成绩,训练仅耗时 3.5 天,仅为当时最先进模型训练成本的一小部分。此外,我们还通过将 Transformer 成功应用于大规模(以及中等规模)的英语成分句法分析(constituency parsing),证明了它在除机器翻译以外的任务上也具有良好的泛化能力。

1 引言#

循环神经网络(RNN)、长短期记忆网络(LSTM)[10] 以及门控循环单元(GRU)[7] 已被牢固确立为序列建模与序列转换问题(如语言建模和机器翻译)[5, 2, 35] 中的最先进方法,此后有大量研究在不断地推进循环语言模型与编码器-解码器架构的边界 [31, 21, 13]。

循环模型通常沿着输入与输出序列的符号位置逐位进行计算。这种固有的顺序特性阻碍了训练样本内部的并行化,这在序列长度较长时尤为关键,因为内存约束限制了样本间批处理的大小。近年来,已有许多工作致力于解决这一问题,包括使用分解技巧 [18] 与条件计算 [26],以及门控与卷积的混合设计等 [15],后者还在神经 GPU [27] 与 ByteNet [16] 中同时使用,以减少顺序计算的数量。

然而,使用注意力机制(attention mechanisms)来对依赖关系进行建模,而不考虑它们在输入或输出序列中的距离,这一做法是在所有相关方法中唯一的主要突破。在少数情况下,循环网络可以[带上注意力机制][37]。但在大多数情况下,例如 [25, 2, 1, 23, 16],注意力机制仍然被用于连接的、基于循环或卷积的模型,且其使用方式依赖于循环或卷积网络(对序列元素进行逐位处理)来保存输入与输出之间的位置信息。

在本文中,我们提出了 Transformer,这是一种架构,它完全摒弃了循环与卷积,并且完全依赖于注意力机制来在输入与输出之间绘制全局依赖关系。Transformer 支持更大程度的并行化,并且仅需 8 个 P100 GPU 上训练 12 小时,即可在翻译质量上达到领先水平。

2 背景#

减少顺序计算的目标也构成了 Extended Neural GPU [16]、ByteNet [18] 与 ConvS2S [9] 等模型的基础,它们都使用了卷积神经网络作为基础构建模块,对所有输入与输出位置并行计算隐藏表示。在这些模型中,任意两个输入或输出位置之间建立关联所需的操作次数会随位置间距离的增长而增加,对于 ConvS2S 是线性增长,对于 ByteNet 则是对数增长。这使得远距离位置之间依赖关系的学习变得更加困难。在 Transformer 中,这一操作次数被降低到了一个常数级别,尽管代价是由于平均注意力加权位置而降低了解析力,我们通过使用多头注意力(Multi-Head Attention)来抵消这一影响。

自注意力(self-attention)——有时也称为内部注意力(intra-attention)——是一种注意力机制,它通过关联单个序列内部的不同位置来计算该序列的表示。自注意力已被成功应用于各种各样的任务,包括阅读理解、摘要、文本蕴含以及学习任务无关的句子表示 [4, 27, 28, 22]。

端到端记忆网络基于循环注意力机制而不是序列对齐的循环网络,并且已被证明在简单语言问答与语言建模任务上表现良好 [34]。

就我们所知,Transformer 是第一个完全依赖自注意力来计算输入与输出表示、而不使用序列对齐的 RNN 或卷积的转换模型。在下面的章节中,我们将描述 Transformer 的整体架构,阐述其背后的自注意力动机,并讨论 [9] 提出、[17] 进一步完善并将我们的方法引向当前路径的一些优势。

3 模型架构#

大多数具有竞争力的神经序列转换模型都有编码器-解码器结构 [5, 2, 35]。在这里,编码器将符号表示形式的输入序列 $(x_1, \dots, x_n)$ 映射到连续表示序列 $\mathbf{z} = (z_1, \dots, z_n)$。给定 $\mathbf{z}$,解码器随后逐个元素地生成输出序列 $(y_1, \dots, y_m)$ 的符号表示。在每一步中,模型都是自回归的 [10],即生成下一个符号时会使用之前生成的符号作为额外的输入。

Transformer 的整体架构沿用了这一基本结构,编码器与解码器都采用堆叠的自注意力层与逐点(point-wise)全连接层,图 1 展示了 Transformer 的架构。

3.1 编码器与解码器堆叠#

编码器: 编码器由 $N = 6$ 个完全相同的层的堆叠构成。每一层包含两个子层。第一个子层是一个多头自注意力机制,第二个子层是一个简单的、按位置独立的全连接前馈网络。我们对两个子层均采用残差连接 [11],随后进行层归一化 [1]。也就是说,每个子层的输出是 $\mathrm{LayerNorm}(x + \mathrm{Sublayer}(x))$。为了方便这些残差连接,模型中的所有子层以及嵌入层都产生维度为 $d_{\text{model}} = 512$ 的输出。

解码器: 解码器同样由 $N = 6$ 个完全相同的层的堆叠构成。除了每个编码器层中的两个子层之外,解码器还插入了第三个子层,它对编码器堆叠的输出执行多头注意力。与编码器类似,我们为每个子层采用残差连接并进行层归一化。我们还修改了解码器堆叠中的自注意力子层,以防止位置关注到后续位置。这种掩码结合输出嵌入偏移一个位置的事实,保证了位置 $i$ 的预测只能依赖于小于 $i$ 位置的已知输出。

3.2 注意力#

注意力函数可以被描述为将查询(query)与一组键值对(key-value pairs)映射到输出的过程,其中查询、键、值和输出均为向量。输出被计算为值的加权和,其中分配给每个值的权重是由查询与相应键的兼容性(compatibility)函数计算得到的。

3.2.1 缩放点积注意力#

我们称我们特定的注意力为"缩放点积注意力"(Scaled Dot-Product Attention),如图 2 所示。输入由维度为 $d_k$ 的查询与键以及维度为 $d_v$ 的值组成。我们计算查询与所有键的点积,将其除以 $\sqrt{d_k}$,然后应用 softmax 函数以获得值上的权重。

在实践中,我们同时对一组查询计算注意力函数,打包成矩阵 $Q$。键和值也同时被打包成矩阵 $K$ 和 $V$。我们按如下方式计算输出矩阵:

$$\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$

最常用的两个注意力函数是加性注意力 [2] 和点积(乘法)注意力。点积注意力与我们的算法相同,只是缩放因子为 $\frac{1}{\sqrt{d_k}}$。加性注意力使用带有一个隐藏层的前馈网络来计算兼容性函数。虽然两者在理论上复杂度相近,但点积注意力在实践中更快、更节省空间,因为它可以使用高度优化的矩阵乘法代码实现。

虽然对于较小的 $d_k$ 值,两种机制的表现相似,但对于较大的 $d_k$ 值,不进行缩放的加性注意力优于点积注意力 [3]。我们推测,对于较大的 $d_k$ 值,点积的幅度会变大,从而将 softmax 函数推入梯度非常小的区域 [4]。为了抵消这一影响,我们将点积缩放 $\frac{1}{\sqrt{d_k}}$。

3.2.2 多头注意力#

我们不使用 $d_{\text{model}}$ 维度的键、值和查询执行单一的注意力函数,而是发现将查询、键和值分别线性投影到 $d_k$、$d_k$ 和 $d_v$ 维会有助于提升性能,其中投影次数为 $h$ 次,每次使用不同的、学习得到的线性投影。然后,我们在这 $h$ 个投影版本的查询、键和值上并行执行注意力函数,产生 $d_v$ 维的输出值。这些输出被拼接起来并再次投影,得到最终值,如图 2 所示。

多头注意力允许模型在不同位置共同关注来自不同表示子空间的信息。使用单一注意力头时,平均化会抑制这一点。

$$\mathrm{MultiHead}(Q, K, V) = \mathrm{Concat}(\mathrm{head}_1, \dots, \mathrm{head}_h)W^O$$

其中 $\mathrm{head}_i = \mathrm{Attention}(QW_i^Q, KW_i^K, VW_i^V)$

其中参数矩阵为 $W_i^Q \in \mathbb{R}^{d_{\text{model}} \times d_k}$,$W_i^K \in \mathbb{R}^{d_{\text{model}} \times d_k}$,$W_i^V \in \mathbb{R}^{d_{\text{model}} \times d_v}$ 以及 $W^O \in \mathbb{R}^{hd_v \times d_{\text{model}}}$。

在本文中,我们使用 $h = 8$ 个并行的注意力头。对于每个注意力头,我们使用 $d_k = d_v = d_{\text{model}}/h = 64$。由于每个头的维度降低,总计算成本与完整维度下的单头注意力相近。

3.2.3 注意力在我们模型中的应用#

Transformer 以三种不同的方式使用多头注意力:

  • 在"编码器-解码器注意力"层中,查询来自前一个解码器层,键与值来自编码器的输出。这使得解码器中的每个位置都能够关注输入序列中的所有位置。这模仿了序列到序列模型中经典的编码器-解码器注意力机制,例如 [38, 2, 9]。

  • 编码器包含自注意力层。在自注意力层中,所有键、值和查询均来自同一位置,在本例中即编码器前一层的输出。编码器中的每个位置都可以关注编码器前一层中的所有位置。

  • 类似地,解码器中的自注意力层允许解码器中的每个位置关注解码器中该位置之前的所有位置。我们需要在解码器中屏蔽左向信息流以保持自回归性质。我们通过在缩放点积注意力内部对所有非法连接的值输入(即设置为 $-\infty$)进行掩码来实现这一点。

3.3 基于位置的前馈网络#

除了注意力子层之外,我们的编码器与解码器中的每一层都包含一个全连接的前馈网络,该网络对每个位置分别且完全相同地应用。它由两个线性变换组成,中间有一个 ReLU 激活:

$$\mathrm{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2$$

虽然不同位置的线性变换是相同的,但它们在层与层之间使用不同的参数。另一种描述方式是将其视为两个卷积,卷积核大小为 1。输入与输出的维度为 $d_{\text{model}} = 512$,内部层的维度为 $d_{ff} = 2048$。

3.4 嵌入与 softmax#

与其他序列转换模型类似,我们使用学习得到的嵌入将输入 token 与输出 token 转换为维度为 $d_{\text{model}}$ 的向量。我们还使用学习得到的线性变换与 softmax 函数将解码器输出转换为预测的下一个 token 概率。在我们的模型中,两个嵌入层与 pre-softmax 线性变换共享相同的权重矩阵,类似于 [30]。在嵌入层中,我们将这些权重乘以 $\sqrt{d_{\text{model}}}$。

3.5 位置编码#

由于我们的模型不包含循环与卷积,为了让模型能够利用序列的顺序,我们必须注入一些关于序列中 token 相对或绝对位置的信息。为此,我们在编码器与解码器堆叠底部的输入嵌入中加入"位置编码"。位置编码的维度与嵌入相同,均为 $d_{\text{model}}$,因此二者可以相加。位置编码有多种选择,包括学习得到的位置编码与固定的位置编码 [9]。

在本文中,我们使用不同频率的正弦与余弦函数:

$$\begin{aligned} PE_{(pos, 2i)} &= \sin(pos / 10000^{2i/d_{\text{model}}}) \ PE_{(pos, 2i+1)} &= \cos(pos / 10000^{2i/d_{\text{model}}}) \end{aligned}$$

其中 $pos$ 是位置,$i$ 是维度。也就是说,位置编码的每个维度对应于一个正弦波。波长构成从 $2\pi$ 到 $10000 \cdot 2\pi$ 的几何级数。我们选择这个函数,是因为我们假设它可以让模型很容易学会通过相对位置进行关注,因为对于任意固定的偏移量 $k$,$PE_{pos+k}$ 可以表示为 $PE_{pos}$ 的线性函数。

我们还尝试使用学习得到的位置嵌入 [9],并发现这两个版本产生了几乎相同的结果(见表 3 中的行 (E))。我们选择了正弦版本,因为它可以让模型外推到比训练期间遇到的序列长度更长的序列。

4 为什么选择自注意力#

在本节中,我们将自注意力层的各个方面与常用于将一个符号位置(输入或输出)的表示映射到相同长度的另一个序列的循环层与卷积层进行比较。我们考虑这样做的动机有三个。

一个是每一层总的计算复杂度。另一个是可以并行化的计算量,其度量标准是所需的最少顺序操作次数。

第三个是网络中长距离依赖之间的路径长度。学习长距离依赖是许多序列转换任务中的关键挑战。影响此类依赖学习能力的一个关键因素是网络中前向与后向信号必须穿越的路径长度。输入与输出序列中任意位置组合之间的路径越短,就越容易学习长距离依赖 [12]。因此,我们还比较了不同层类型组成的网络中任意两个输入与输出位置之间的最大路径长度。

如表 1 所示,自注意力层将所有位置连接起来,操作次数为常数级别,而循环层则需要 $O(n)$ 次顺序操作。就计算复杂度而言,当序列长度 $n$ 小于表示维度 $d$ 时,自注意力层比循环层更快,而这在机器翻译中最先进的模型所使用的句子表示中通常如此(例如词片 [38] 与字节对表示 [31])。为了提高涉及超长序列任务的计算性能,可以将自注意力限制为仅考虑输入序列中一个以各自输出位置为中心、大小为 $r$ 的邻域。这将最大路径长度增加到 $O(n/r)$。我们计划在未来的工作中进一步研究这种方法。

维度为 $d$ 的 $k$ 个卷积核的单一卷积层(其中 $k < n$)不连接所有位置的输入与输出对。需要 $O(n/k)$ 个堆叠的卷积层(对于邻接核,即 $O(n/k)$),或者 $O(\log_k(n))$ 个膨胀卷积(对于扩张卷积)[18],才能将所有位置连接起来,这会增加网络中任意两个位置之间最长路径的长度。卷积层通常比循环层更昂贵,其代价比 $k$ 更高。然而,可分离卷积 [6] 将复杂度大幅降低到 $O(k \cdot n \cdot d + n \cdot d^2)$。即使使用 $k = n$,可分离卷积的复杂度也与自注意力层和逐点前馈层的组合相当,而这是我们模型中采用的方法。

作为副作用,自注意力可以产生更多可解释的模型。我们检查了模型中的注意力分布,并在附录中展示与讨论了一些示例。不仅单个注意力头明显学会执行不同的任务,许多注意力头似乎表现出与句子的语法结构相关的行为。

5 训练#

本节描述我们的模型训练机制。

5.1 训练数据与批处理#

我们在标准 WMT 2014 英德数据集上训练,该数据集包含大约 450 万对句子。句子使用字节对编码(byte-pair encoding)[3] 进行编码,其共享源-目标词汇表大小约为 37000 个 token。对于英法翻译,我们使用明显更大的 WMT 2014 英法数据集,该数据集包含 3600 万个句子,并使用词片(word-piece)[38] 对句子进行编码,词汇表大小为 32000 个 token。句子对按近似序列长度进行批处理。每个训练批次包含大约 25000 个源 token 与 25000 个目标 token 的句子对。

5.2 硬件与调度#

我们在 8 张 NVIDIA P100 GPU 的机器上训练模型。对于使用本文所述超参数的英德基础模型,每个训练步骤大约需要 0.4 秒。我们对基础模型总共训练了 100,000 步或 12 小时。对于大型模型(表 3 底部的行),步长为 1.0 秒。大型模型的训练步数为 300,000 步(3.5 天)。

5.3 优化器#

我们使用 Adam 优化器 [20],其参数为 $\beta_1 = 0.9$、$\beta_2 = 0.98$ 与 $\epsilon = 10^{-9}$。我们根据以下公式在训练期间调整学习率:

$$\text{lrate} = d_{\text{model}}^{-0.5} \cdot \min(\text{step}^{-0.5}, \text{step} \cdot \text{warmup_steps}^{-1.5})$$

这对应于在 $warmup_steps$ 步内将学习率线性增加到该值,之后随步数的平方根倒数按比例降低。我们使用 $warmup_steps = 4000$。

5.4 正则化#

我们在训练中采用三种形式的正则化,如下所述:

残差丢弃(Residual Dropout)。 我们将 dropout [33] 应用于每个子层的输出(即将其添加到每个子层的输入与子层输出进行归一化之前)。此外,我们将 dropout 应用于编码器与解码器堆叠中嵌入与位置编码之和。对于基础模型,我们使用 $P_{drop} = 0.1$ 的丢弃率。

标签平滑(Label Smoothing)。 在训练期间,我们使用标签平滑值 $\epsilon_{ls} = 0.1$ [36]。这会损害困惑度(perplexity),因为模型会学习到更不确定的模型,但它提高了准确率与 BLEU 分值。

6 结果#

6.1 机器翻译#

在表 2 中,我们将我们的 Transformer 与之前最佳的机器翻译模型进行比较,包括此前 SOTA 的集成模型。英德任务上,我们的最佳模型(Transformer 大模型)以 28.4 BLEU 的分数超越了之前最佳集成模型(28.0 BLEU)与最佳单模型(23.7 BLEU)的得分。在英法任务上,之前的最佳单模型取得了 41.0 BLEU。我们的模型取得了 41.8 BLEU,在训练成本仅为之前最佳单模型的一小部分的情况下获得了更高的分数。

训练 3.5 天的 Transformer 大模型(表 2 底部)所使用的训练成本明显低于最佳单模型。在英德与英法任务上,Transformer 大模型的训练成本约为卷积模型 [8] 的 $\frac{1}{4}$。

对于英德翻译,使用 $d_{\text{model}} = 1024$、$d_{ff} = 4096$、8 个注意力头以及 $P_{drop} = 0.3$ 的 Transformer 大模型取得了上述最佳结果。其较大的网络规模意味着它比基础模型需要更长的训练时间。

6.2 模型变体#

为了评估 Transformer 不同组件的重要性,我们以不同的方式变化了我们的基础模型,并测量了英德翻译任务上开发集 newstest2013 的 BLEU 分值变化。我们使用了上一节所述的全部超参数,并在训练的最后 10 个检查点上取平均。这些实验的结果如表 3 所示。

在表 3 的第 (A) 行中,我们改变了注意力头的数量与键和值的维度,保持计算量不变,如 3.2.2 节所述。虽然单头注意力在最佳设置下比基准高 0.9 BLEU,但使用过多注意力头也会损害质量。

在第 (B) 行中,我们观察到减小键的维度 $d_k$ 会损害模型质量。这表明确定兼容性并不容易,比点积更复杂的兼容性函数可能更有益。在第 (C) 行中,进一步表明,正如预期的那样,更大的模型会更好。在第 (D) 行中,我们观察到与正弦位置编码相比,学习得到的位置编码产生的结果与基准几乎相同。

在第 (E) 行中,我们尝试移除注意力丢弃(dropout),这导致了比基准更差的结果,表明它确实起到了正则化的作用。第 (F) 行中,我们用可学习的按层缩放因子(通过将缩放注意力替换为加法注意力来避免随序列长度变化而缩放的点积)替代了 3.2.1 节中描述的缩放因子,结果与基准相当。

6.3 英语成分句法分析#

为了评估 Transformer 是否能够泛化到其他任务,我们在英语成分句法分析(constituency parsing)上进行了实验。这项任务提出了具体的挑战:输出受到较强的结构约束,并且比输入明显更长。此外,RNN 序列到序列模型尚未在数据量较小的这一任务上达到最先进的水平 [37, 4, 9]。

我们使用大约 40,000 个句子的 WSJ 部分训练一个 4 层的 Transformer,d_model 为 1024,然后在额外的 1700 万个半监督句子上进行训练,使用的设置如 [4] 所述。我们使用的词汇表包含 16K 个词片。我们还在该任务上进行了少量超参数调优,包括使用多任务学习 [5] 与使用线性学习率。我们在第 6.2 节描述的配置上进行开发集调优。

我们的结果如表 4 所示。与以往的工作 [9] 不同,我们的模型的表现要好于循环网络,尽管我们的模型是在更少的数据上进行训练的。

7 结论#

在本文中,我们提出了 Transformer,这是第一个完全基于注意力的序列转换模型,它用多头自注意力替代了编码器-解码器架构中最常用的循环层。

对于翻译任务,Transformer 的训练速度明显快于基于循环或卷积层的架构。在 WMT 2014 英德与英法翻译任务中,我们都取得了新的最优成绩。在前者中,我们的最佳模型甚至超越了所有先前报告的集成模型。

我们对纯注意力架构的未来感到兴奋,并计划将其应用于除文本之外的其他任务。我们计划将 Transformer 扩展到涉及非序列化输入与输出的问题(如图像与音频),并让生成过程在更少的结构约束下对局部输入进行关注。让生成更具全局性目前是我们工作的一个挑战。

Transformer 架构的代码可以在 https://github.com/tensorflow/tensor2tensor 获取。

致谢#

我们感谢 Niki Parmar、Noam Shazeer、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Łukasz Kaiser 与 Illia Polosukhin,他们帮助完成了论文中描述的工作的构思与撰写。

参考文献#

  1. J. L. Ba, J. R. Kiros, and G. E. Hinton. Layer normalization. arXiv preprint arXiv:1607.06450, 2016.
  2. D. Bahdanau, K. Cho, and Y. Bengio. Neural machine translation by jointly learning to align and translate. CoRR, abs/1409.0473, 2014.
  3. D. Bahdanau, K. Cho, and Y. Bengio. Neural machine translation by jointly learning to align and translate. In ICLR, 2015.
  4. Y. Bengio, N. Léonard, and A. Courville. Estimating or propagating gradients through stochastic neurons for conditional computation. arXiv preprint arXiv:1308.3432, 2013.
  5. K. Cho, B. van Merriënboer, C. Gulcehre, D. Bahdanau, F. Bougares, H. Schwenk, and Y. Bengio. Learning phrase representations using RNN encoder-decoder for statistical machine translation. In EMNLP, 2014.
  6. F. Chollet. Xception: Deep learning with depthwise separable convolutions. arXiv preprint arXiv:1610.02357, 2017.
  7. J. Chung, C. Gulcehre, K. Cho, and Y. Bengio. Empirical evaluation of gated recurrent neural networks on sequence modeling. CoRR, abs/1412.3555, 2014.
  8. J. Devlin, M.-W. Chang, K. Lee, and K. Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In NAACL, 2019.
  9. J. Gehring, M. Auli, D. Grangier, D. Yarats, and Y. N. Dauphin. Convolutional sequence to sequence learning. In ICML, 2017.
  10. S. Hochreiter and J. Schmidhuber. Long short-term memory. Neural Computation, 1997.
  11. K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016.
  12. S. Hochreiter, Y. Bengio, P. Frasconi, and J. Schmidhuber. Gradient flow in recurrent nets: the difficulty of learning long-term dependencies, 2001.
  13. N. Kalchbrenner, L. Espeholt, K. Simonyan, A. Oord, A. Graves, and K. Kavukcuoglu. Neural machine translation in linear time. arXiv preprint arXiv:1610.10099, 2017.
  14. Ł. Kaiser and S. Bengio. Can active memory replace attention? In NIPS, 2016.
  15. A. Kumar, O. Irsoy, P. Ondruska, I. Iyyer, J. Bradbury, R. de Freitas, V. B. G. Kumar, and R. Socher. Ask me anything: Dynamic memory networks for natural language processing. In ICML, 2016.
  16. N. Kalchbrenner, L. Espeholt, K. Simonyan, A. van den Oord, A. Graves, and K. Kavukcuoglu. Neural machine translation in linear time. CoRR, abs/1610.10099, 2016.
  17. Ł. Kaiser and S. Bengio. Fast and efficient estimation of variational autoencoders. In NIPS, 2016.
  18. N. Kalchbrenner, L. Espeholt, K. Simonyan, A. van den Oord, A. Graves, and K. Kavukcuoglu. Neural machine translation in linear time. CoRR, abs/1610.10099, 2016.
  19. Y. N. Dauphin, A. Fan, M. Auli, and D. Grangier. Language modeling with gated convolutional networks. In ICML, 2017.
  20. D. P. Kingma and J. Ba. Adam: A method for stochastic optimization. In ICLR, 2015.
  21. G. Lample, M. Ballesteros, S. Subramanian, K. Kawakami, and C. Dyer. Neural architectures for named entity recognition. In NAACL, 2016.
  22. P. Jean, S. Wu, C. Chechik, K. He, and M. Tompa. Learning to map phrases to logical forms with a pre-trained attention model. In ICLR, 2016.
  23. T. Mikolov, K. Chen, G. Corrado, and J. Dean. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781, 2013.
  24. T. Mikolov, M. Karafiát, L. Burget, J. Cernocký, and S. Khudanpur. Recurrent neural network based language model. In Interspeech, 2010.
  25. D. Molchanov, A. Ashukha, and D. Vetrov. Variational dropout sparsifies deep neural networks. In ICML, 2017.
  26. A. van den Oord, N. Kalchbrenner, and K. Kavukcuoglu. Pixel recurrent neural networks. In ICML, 2016.
  27. A. van den Oord, N. Kalchbrenner, L. Espeholt, O. Vinyals, A. Graves, and K. Kavukcuoglu. Conditional image generation with PixelCNN decoders. In NIPS, 2016.
  28. A. Parikh, O. Täckström, D. Das, and J. Uszkoreit. A decomposable attention model for natural language inference. In EMNLP, 2016.
  29. R. Paulus, J. Xiong, and R. Socher. A deep reinforced model for abstractive summarization. In ICLR, 2017.
  30. O. Press and L. Wolf. Using the output embedding to improve language models. In EACL, 2017.
  31. R. Sennrich, B. Haddow, and A. Birch. Neural machine translation of rare words with subword units. In ACL, 2016.
  32. I. Sutskever, O. Vinyals, and Q. V. Le. Sequence to sequence learning with neural networks. In NIPS, 2014.
  33. N. Srivastava, G. Hinton, A. Krizhevsky, I. Sutskever, and R. Salakhutdinov. Dropout: A simple way to prevent neural networks from overfitting. JMLR, 2014.
  34. S. Sukhbaatar, J. Weston, R. Fergus. End-to-end memory networks. In NIPS, 2015.
  35. I. Sutskever, O. Vinyals, and Q. V. Le. Sequence to sequence learning with neural networks. In NIPS, 2014.
  36. C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, and Z. Wojna. Rethinking the inception architecture for computer vision. In CVPR, 2016.
  37. A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser, and I. Polosukhin. Attention is all you need. In NIPS, 2017.
  38. Y. Wu, M. Schuster, Z. Chen, Q. V. Le, M. Norouzi, W. Macherey, M. Krikun, Y. Cao, Q. Gao, K. Macherey, J. Klingner, A. Shah, M. Johnson, X. Liu, Ł. Kaiser, S. Gouws, Y. Kato, T. Kudo, H. Kazawa, K. Stevens, G. Kurian, N. Patil, W. Wang, C. Young, J. Smith, J. Riesa, A. Rudnick, O. Vinyals, G. Corrado, M. Hughes, and J. Dean. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv preprint arXiv:1609.08144, 2016.