Attention Is All You Need :论文解读

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

  • 自注意力,有时被称为内部注意力,是一种注意力机制,将单个序列的不同位置联系起来,以计算序列的表示。自注意力已经成功地应用于各种任务,包括阅读理解、抽象总结、语篇蕴涵与学习任务无关的句子表征。

  • 端到端记忆网络基于重复注意力机制,而不是顺序一致的重复,并且在简单的语言问答和语言建模任务中表现良好。

  • Transformer是第一个完全依靠自注意力来计算其输入和输出表示的转导模型,而不使用序列对齐RNN或卷积。在下面的章节中,我们将描述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:

  • 编码器由N=6个相同层组成。每层有两个子层
    (1)第一个子层:是多头自注意力机制
    (2)第二个子层:前馈全连接神经网络
    (3)我们在两个子层的每个层周围使用残差连接,然后进行层规一化LN

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

○ Decoder:

  • 解码器也由N=6个相同层堆叠而成。除了每个编码器层中的两个子层之外,解码器还插入第三个子层,该子层对编码器的输出进行了multi-head attention。

  • 与编码器类似,我们在每个子层周围使用残差连接,然后进行层规一化。我们还改进了自注意力解码器中的子层,以防止位置涉及后续位置。这种mask,再加上输出嵌入偏移一个位置的事实,确保位置i的预测只能依赖于位置小于i的已知输出

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函数以获得这些值的权重

  • 在实践中,我们同时计算一组queries的注意力函数,将它们打包成矩阵Q。键keys和值values也打包成矩阵KV。我们将输出矩阵计算为:
image.png

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

  • (1)点积注意力 - Dot-product attention与我们的算法相同,除了1/√dk 根号。
  • (2)加法注意力 - Additive attention使用带有单个隐藏层的前馈神经网络计算兼容性函数。

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

而对于较小的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以三种不同的方式使用多头注意:
  • (1)在 encoder-decoder attention layers:queries来自前一个解码器层,内存keys和values来自编码器的输出。这使得解码器中的每个位置都可以覆盖输入序列中的所有位置。这在seq2seq模型中模仿了典型的encoder-decoder器注意力机制

  • (2) encoder contains self-attention layers:在自注意力层中,所有queries、keys、values 都来自同一个位置,在本例中,是编码器中前一层的输出。编码器中的每个位置都可以注意到编码器前一层中的所有位置

  • (3) self-attention layers in the decoder:类似地,解码器中的自注意力层允许解码器中的每个位置关注解码器中包括该位置的所有位置。我们需要防止解码器中的信息向左流动,以保持auto-regressive特性。通过mask(设置为−∞) 输入中的所有值对应于非线性连接的softmax。参见图2。

3.3 Position-wise Feed-Forward Networks:位置前馈网络
  • 除了注意力子层之外,编码器和解码器中的每一层都包含一个前馈全连接神经网络,它分别相同地应用于每个位置。这包括两个线性变换,中间有一个ReLU激活
image.png
  • 虽然线性变换在不同的位置上是相同的,但它们在不同的层之间使用不同的参数。另一种描述方法是将其描述为内核大小为1的两个卷积。输入和输出的维数为 dmodel=512,内层的维数为 d f f=2048。
3.4 Embeddings 和 Softmax:

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

3.5 Positional Encoding:

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

  • 为此,在输入嵌入中添加了“位置编码”在编码器和解码器的底部。位置编码与嵌入具有相同的维度dmodel,因此可以将两者相加
  • 位置编码有很多选择,既有学习的,也有固定的。
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) 每层的总计算复杂度。
  • (2)可以并行化的计算量,以所需的最小顺序操作数来衡量。
  • (3)网络中长期依赖关系之间的路径长度。在许多序列转换任务中,学习长期依赖关系是一个关键挑战。影响学习这种依赖关系能力的一个关键因素是在网络中遍历的前向和后向信号的路径长度。

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

如表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优化器,参数为:

  • β1=0.9
  • β2=0.98
  • image.png

    ○ 训练过程中,我们根据以下公式更新学习率:
image.png

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

5.4 Regularization:正则化
训练中采用了三种正规化方法:
  • (1)Residual Dropout :
    将dropout应用于每个子层的输出,然后再将其添加到子层输入并进行归一化。此外,对编码器和解码器堆栈中的嵌入和位置编码的总和应用了dropout。对于基础模型,这里使用Pdrop=0.1百分比。
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
  • (1)在Table 3 rows (A)观察到,改变了注意力头的数量以及注意力key 和 value维度,保持计算量不变。虽然单头注意力比最佳设置差0.9个BLEU,但如果头部过多,质量也会下降

  • (2)在表3(B)行中,我们观察到减少注意key大小dk会影响模型质量。这表明,确定兼容性并不容易,而且比dot product更复杂的兼容性功能可能是有益的。

  • (3)在第(C)行和第(D)行中进一步观察到,正如预期的那样,模型越大越好,dropout非常有助于防止过拟合。在第(E)行中,我们将正弦位置编码替换为学习的位置嵌入,并观察到与基本模型几乎相同的结果。

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 结论:

  • 在这项工作中,提出了Transformer,这是第一个完全基于注意力机制的序列转换模型,它用multi-headed self-attention取代了encoder-decoder架构中最常用的循环层

  • 对于翻译任务,Transformer的训练速度比基于循环层或卷积层的体系结构快得多。在WMT 2014英语到德语和WMT 2014英语到法语的翻译任务中,我们实现了新的SOTA。在前一个任务中,我们的最佳模型甚至比之前报道的所有集合都要好。

  • 对基于注意力的模型的未来感到兴奋,并计划将其应用于其他任务。计划将Transformer扩展到涉及输入和输出模式(而非文本)的问题,并研究局部的受限注意力机制,以有效处理图像、音频和视频等大型输入和输出。文中的另一个研究目标是Making generation less sequential

致谢:

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

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

image.png
image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354