Attention Is All You Need :论文解读

2022-02-16  本文已影响0人  涓涓自然卷
image.png
论文地址:https://arxiv.org/pdf/1706.03762.pdf
论文名称:Attention Is All You Need
GitHub链接:https://github.com/tensorflow/tensor2tensor

0、摘要:

主要的序列转导模型基于复杂的递归或卷积神经网络,包括编码器和解码器。性能最好的模型还通过注意机制连接编码器和解码器。我们提出了一种新的简单网络结构,即Transformer,它完全基于注意力机制,完全不需要重复和卷积。

在两个机器翻译任务上的实验表明,这些模型在质量上更优越,同时更具并行性,需要的训练时间显著减少。我们的模型在WMT 2014英德翻译任务中达到28.4 BLEU,比现有的最佳结果提高了2 BLEU以上。

在WMT 2014英法翻译任务中,我们的模型在八个GPU上训练3.5天后,建立了一个新的单模型SOTA的BLEU分数41.8,这是文献中最佳模型训练成本的一小部分。通过将Transformer成功地应用于训练数据量大且有限的英语选区分析,证明Transformer可以很好地推广到其他任务中。

1、介绍:

RNN,特别是LSTM和门控递归神经网络,已被牢固地确立为序列建模和转换问题的SOTA方法。此后,许多努力继续推动循环语言模型和encoder-decoder架构的界限。

递归模型通常沿着输入和输出序列的位置表示进行计算。将位置与计算时间的步长对齐,它们生成一系列隐藏状态ht,作为之前隐藏状态ht−1和位置t的输入。这种固有的顺序性排除了训练样本中的并行化,这在较长的序列长度下变得至关重要,因为内存约束限制了跨样本的批处理。最近的工作通过因子分解技巧和条件计算显著提高了计算效率,同时也提高了后者的模型性能。

然而,顺序计算的基本限制仍然存在。注意力机制已经成为各种任务中强制性序列模型和转导模型的一个组成部分,允许对依赖性进行建模,而不考虑它们在输入或输出序列中的距离。然而,在除少数情况外的所有情况下,这种注意机制都与循环网络结合使用。

在这项工作中,我们提出了Transformer,这是一种避免重复出现的模型架构,而完全依赖于一种注意力机制来绘制输入和输出之间的全局依赖关系。Transformer允许显著更多的并行化,并可在未来达到新的技术水平在8个P100 GPU上训练12小时后的翻译质量。

2、背景:

减少顺序计算的目的也形成了扩展神经GPU、ByteNet 和ConvsS2S的基础,所有这些都使用卷积神经网络作为基本构建块,并行计算所有输入和输出位置的隐表示。在这些模型中,将两个任意输入或输出位置的信号关联起来所需的操作数随着位置之间的距离而增加,对于ConvS2S 是线性的,对于ByteNet是对数的。
这使得了解远距离位置之间的依赖关系变得更加困难

在Transformer中,这被减少到一个常数,尽管由于平均注意力加权位置而降低了有效分辨率,这一影响我们用多头注意力抵消。

3、模型架构:

大多数竞争性神经序列转导模型都是encoder-decoder结构。这里,编码器将符号表示(x1,…,xn)的输入序列映射到连续表示 z =(z1,…,zn)的序列。给定z,解码器然后一次生成一个元素的符号输出序列(y1,…,ym)。在每一步中,模型都是自回归的,在生成下一步时,使用先前生成的符号作为额外输入。

Transformer遵循这种整体架构,使用堆叠的自注意力机制和 point-wise、全连接层的编码器和解码器层,分别如图1的左半部分和右半部分所示。

image.png
3.1 Encoder and Decoder Stacks:

○ Encoder:

也就是说,每个子层的输出是LayerNorm(x+子层(x)),其中子层(x)是由子层本身实现的功能。为了促进残差连接res,模型中的所有子层以及嵌入层都会生成维度为:dmodel=512的输出

○ Decoder:

3.2 Attention:

注意力函数可以描述为将query和一组 key-value 对映射到输出,其中query, keys, values和输出都是向量。输出作为值的加权求和计算,其中分配给每个value的权重由使用相应的 key 进行 query。

image.png
3.2.1 Scaled Dot-Product Attention 缩放点积 Attention:

我们称特指的attention为“缩放点点积注意力”(图2)。输入包括dk维度的查询queries和键keys,以及dv维度的值values。我们用所有keys与querys进行点积,每个键除以根号dk,并应用softmax函数以获得这些值的权重

image.png

○ 两个最常用的注意力函数是加法注意力 和点积(乘法)注意力 。

虽然两者在理论复杂度上相似,但由于可以使用高度优化的矩阵乘法代码来实现,所以在实践中,点积注意力速度更快,空间效率更高

而对于较小的dk值,这两种机制的表现类似,对于较大的dk值,加法注意优于点积注意力。我们怀疑,对于较大的dk值,点积在数量上增长较大,从而将softmax函数推到了它已经存在的区域非常小的梯度。为了抵消这种影响,我们进行点积缩放1/√dk根号。

3.2.2 Multi-Head Attention 多头注意力机制:

我们发现,使用不同的维度映射将queries、keys和values分别线性投影到dk、dk和dv维度,而不是使用dmodel维度的keys、values和queries执行单个注意力函数是有益的。

然后,我们在每个 queries, keys 和 values的投影版本上并行执行注意力机制,生成dv维输出值。这些数据被连接起来,并再次投影,从而得到最终值,如图2所示。

多头注意力使模型能够共同关注来自不同位置的不同表征子空间的信息。由于只有一个注意力头,平均值会抑制这一点。

image.png

在这项工作中,我们采用了 h=8 平行注意力层,即头。对于每一个,我们使用dk = dv = dmodel / h=64。由于每个头部的维数降低,总的计算量与全维单头注意的计算量相似。

3.2.3 注意力在模型中的应用:
○ Transformer以三种不同的方式使用多头注意:
3.3 Position-wise Feed-Forward Networks:位置前馈网络
image.png
3.4 Embeddings 和 Softmax:

与其他序列转换模型类似,使用学习到的嵌入将输入标记和输出标记转换为维度dmodel的向量。还使用通常学习的线性变换和softmax函数将解码器输出转换为预测的下一个token概率。模型中,两个嵌入层和pre-softmax之间共享相同的权重矩阵进行线性变换。在嵌入层中,我们将这些权重乘以根号下√Dmodel。

3.5 Positional Encoding:

由于模型不包含递归和卷积,为了让模型利用序列的顺序,我们必须注入一些关于token在序列中的相对或绝对位置的信息。

image.png
○ 在这项工作中,我们使用不同频率的正弦和余弦函数:
image.png

其中pos是位置,i是尺寸。也就是说,位置编码的每个维度对应于一个正弦波。波长形成从2π到10000·2π的几何级数。之所以选择这个函数,是因为我们假设它将允许模型通过相对位置轻松学习,因为对于任何固定偏移量k,P Epos+k可以表示为P Epos的线性函数。

○ 还尝试使用习得的位置嵌入:

发现这两个版本产生了几乎相同的结果。我们选择正弦版本是因为它可以让模型推断出比训练期间遇到的序列长度更长的序列长度

4 Why Self-Attention:

在这一节中,我们将自注意力层的各个方面与常用的用于映射符号长度表示(x1,…,xn)的可变长度序列映射到另一个等长序列(Z1,…,Zn)的递归和卷积层进行比较,其中有xi , zi ∈ Rd ,例如典型序列转换编码器或解码器中的隐藏层。

○ 激励我们使用self-attention 考虑有三点:

输入和输出序列中任何位置组合之间的路径越短,就越容易了解长期依赖关系。因此,我们还比较了由不同层类型组成的网络中任意两个输入和输出位置之间的最大路径长度。

如表1所示,self-attention layer通过常数量的顺序执行操作连接所有位置,而recurrent layers需要O(n)个顺序操作。就计算复杂度而言,当序列长度n小于表示维度d时,self-attention layers比recurrent layers快,这在机器翻译中SOTA模型使用的句子表示中最常见,例如词条和字节对表示。

为了提高涉及很长序列的任务的计算性能,self-attention 可以限制为仅考虑以各自输出位置为中心的输入序列中大小为r的邻域。这会将最大路径长度增加到O(n/r)。我们计划在未来的工作中进一步研究这种方法。

内核宽度k<n的单个卷积层不能连接所有的输入和输出位置对。在连续内核的情况下,这样做需要O(n/k) 个卷积层的堆叠,或者在扩展卷积的情况下需要O(logk(n))个卷积层,从而增加网络中任意两个位置之间的最长路径的长度。

卷积层通常比递归层的成本更高,是k的一个因数。然而,可分离卷积将复杂性大大降低到O(k · n · d + n · d 2 )。然而,即使在k=n的情况下,可分离卷积的复杂性也等于我们在模型中采用的self-attention layer和point-wise feed-forward layer前馈层的组合。

其它好处,self-attention可以产生更多可解释的模型。从模型中检查注意力分布,并在附录中展示和讨论示例。不仅个体的注意力头清楚地学会了执行不同的任务,许多头似乎表现出与句子的句法和语义结构有关的行为。

5、Training:

介绍了模型的训练机制。

5.1 Training Data and Batching:训练数据和批处理

我们在标准WMT 2014英语-德语数据集上进行训练,该数据集由大约450万个句子对组成。句子使用字节对byte-pair 编码进行编码,该编码拥有大约37000个tokens的共享source-target词汇表。对于英语和法语,使用了更大的WMT2014年英法数据集包含3600万个句子,并将代词拆分为32000个单字词汇。句子对按大致的序列长度分批排列在一起。每个训练批次包含一组句子对,包含大约25000个源token和25000个目标token。

5.2 Hardware and Schedule : 硬件和调度

我们在一台带有8个NVIDIA P100 GPU的机器上训练我们的模型。对于使用本文所述超参数的基础模型,每个训练步骤大约需要0.4秒。我们对基础模型进行了总共10万步或12小时的训练。对于我们的大模型,步进时间为1.0秒。大模型进行了30万步(3.5天)的训练。

5.3 Optimizer:优化

○ 使用Adam优化器,参数为:

image.png

这相当于线性增加第一个预热训练步骤的学习率,然后按步骤数的平方反比例降低学习率。我们使用warmup_steps = 4000。

5.4 Regularization:正则化
训练中采用了三种正规化方法:
image.png

在训练期间,采用了� ls=0.1的标签平滑。这损害了困惑,因为模型学会了更加不确定性,但提高了准确性和BLEU分数。

6、 结果:

6.1 Machine Translation : 机器翻译

在WMT 2014英语到德语的翻译任务中,大transformer模型比之前报道的最佳模型的BLEU分数高出2.0以上,建立了28.4的最新BLEU分数。表3的底线列出了该型号的配置。在8个P100 GPU上进行训练需要3.5天。即使是我们的基础模型也超过了之前发布的所有模型和集合,只是任何竞争模型的训练成本的一小部分。

在WMT 2014英法翻译任务中,我们的大模型的BLEU分数为41.0,优于之前发布的所有单一模型,训练成本不到之前SOTA模型的1/4。为英语到法语训练的Transformer(大)模型使用了dropout 率Pdrop=0.1,而不是Pdrop= 0.3。

对于基本模型,使用了一个单一模型,该模型通过平均最后5个检查点获得,每10分钟写入一次。对于大型模型,我们平均了最后20个检查点。使用beam search波束搜索,beam_size = 4,长度惩罚α=0.6。这些超参数是在开发集上进行实验后选择的。将推理过程中的最大输出长度设置为输入长度+50,但尽可能提前终止。

表2将我们的翻译质量和训练成本与文献中的其他模型架构进行了比较。通过乘以训练时间、使用的GPU数量和持续时间的估计来评估用于训练模型的浮点操作的数量、每个GPU的单精度浮点容量。

6.2 Model Variations : 模型变化

为了评估Transformer不同部件的重要性,我们以不同的方式改变了基础模型,在开发集newstest2013上测量了英语到德语翻译的性能变化。如前面所述,我们使用了波束搜索beam search,但没有检查点平均。在表3中给出了这些结果:

image.png
6.3 English Constituency Parsing

为了评估Transformer是否可以推广到其他任务,我们对English constituency parsing英语选区分析进行了实验。这项任务提出了具体的挑战:输出受到强大的结构约束,并且显著长于输入。此外,RNN seq2seq 模型无法在小数据环境中获得SOTA结果。

作者在Penn Treebank的《华尔街日报》部分训练了一个4层Transformer,其dmodel=1024,大约有40K个训练句子。我们还在半监督的环境中对其进行了训练,使用了来自更大的高置信度和Berkley Parser语料库,包含约1700万个句子。使用了16Ktoken的词汇表用于仅限《华尔街日报》的设置,32Ktoken的词汇表用于半监督设置。

作者只进行了少量实验,以选择第22节开发集上的dropout、attention 和残差、学习率和beam size ,所有其他参数在英语到德语基础翻译模型中保持不变。在推理过程中,我们将最大输出长度增加到输入长度+300。仅在《华尔街日报》和半监督设置中使用了beam_size = 21、α=0.3。

表4中的结果表明,尽管缺乏特定于任务的调整,但模型表现得出奇地好,产生的结果比以前报告的所有模型都好,递归神经网络语法除外。

与RNN序列到序列模型相比,Transformer的性能优于BerkeleyParser,即使只在《华尔街日报》40K句的训练集上进行训练。

7 结论:

致谢:

作者感谢纳尔·卡尔希布伦纳和斯蒂芬·古乌斯的富有成效的评论、更正和启发。

Attention Visualizations Input-Input Laye:注意力可视化输入层

image.png image.png image.png
上一篇 下一篇

猜你喜欢

热点阅读