Attention is All You Need

Transformer模型抛弃了传统的循环和卷积神经网络,完全基于注意力机制,提出了一种新的序列建模架构。在机器翻译任务中,Transformer在保持并行化的同时,训练速度显著提升,且在WMT2014英语到德语和法语的翻译任务上达到了新的性能水平,优于以往的集成模型。模型的多头自注意力机制允许处理长距离依赖关系,而位置编码则弥补了无序性的缺失。
摘要由CSDN通过智能技术生成

《Attention is All You Need》

概要

一句:主流的序列转录模型是基于循环神经网络或卷积神经网络,它们一般使用encoder和decoder架构。
二句:性能最好的模型在encoder和decoder间会使用注意力机制。
三句:本文提出了一个简单的网络结构Transformer,它完全基于注意力机制,而没有使用之前一直使用的循环和卷积。
四句:通过两个机器翻译任务的实验表明,我们提出的模型在质量上更优越,同时可并行化,并且需要的训练时间显着减少。
五句:我们的模型在 WMT 2014英语到德语翻译任务上实现了28.4 BLEU,比现有的最佳结果(包括集成)提高了2 BLEU以上。
六句:在WMT 2014英法翻译任务上,我们的模型在8个GPU上训练3.5天后,建立了一个新的单模型stateoftheart BLEU得分41.8,训练成本只是文献中当前最好的一小部分(即已取得最好的最好的训练效果)。
七句:我们表明,Transformer通过成功地将其应用于具有大量和有限训练数据的英语 解析,可以很好地推广到其他任务(可范化到一些别的任务上)。
(自然语言处理(NLP,Natural Language Processing) 是研究人与计算机交互的语言问题的一门学科。按照技术实现难度的不同,这类系统可以分成简单匹配式、模糊匹配式和段落理解式三种类型。
Transformer源于2017年谷歌的一篇论文Attention is all you need,这篇论文极具创新性,提出了新的Transformer结构。

1 导言

一段:在时序模型中,当前比较常用的是RNN,它包括了LSTM和GRN。当前主流模型是
语言模型和当输出结构化信息比较多的时候使用的encoder-decoder模型。
二段:RNN的缺点:1.只能顺序执行 2.当ht较大时,所需内存会很大
RNN通常沿输入和输出序列的符号位置顺序计算。将位置与时间计算的步骤对齐,它们生成一系列隐藏状态ht,它是由先前隐藏状态ht-1和位置t得到的。这种固有的顺序性(计算t处状态必须等待前t-1计算完毕)难以在训练示例中并行,当序列长度比较大(这是为了防止丢失在早期信息)时为了保存早期的时序信息,需要很大的内存。因为内存限制了示例之间的批处理。最近的工作通过分解技巧[21]和条件计算[32]显着提高了计算效率,同时在后者的情况下也提高了模型性能。然而,顺序计算的基本约束仍然存在。
三段:注意机制已成为各种序列建模和转录模型任务中不可缺少的一部分,它允许对依赖项进行建模,而无需考虑它们在输入或输出序列中的距离[2,19]。然而,除了少数情况[27],这种注意力机制与循环网络结合使用。
四段:在这项工作中,我们提出了Transformer,一种新的的模型架构,不在使用循环网络,而是完全基于注意力机制来绘制输入和输出之间的全局依赖关系。在八个P100 GPU上经过短短12小时的训练后,Transformer可以实现更多的并行化,并且可以在翻译质量方面达到新的水平。
宏观理解:
在这里插入图片描述

2 背景

一段:(当两个像素离得比较远的时候,可以使用一层层卷积去处理,但使用Transformer就不需要多层就可以达到此效果。同时卷积可以有多个输出通道,从而使别多个模式,Transformer使用了多头注意力机制实现了这个功能。)
减少顺序计算的目标是扩展神经GPU[16]、ByteNet[18]和ConvS2S[9]的基础,所有这些架构都使用卷积神经网络作为基本构建块,并行计算所有输入的隐藏表示和输出位置。在这些模型中,关联来自两个任意输入或输出位置的信号所需的操作数量随着位置之间的距离而增长,对于ConvS2S呈线性增长,而对于ByteNet则呈对数增长。这使得学习远距离位置之间的依赖关系变得更加困难[12]。在Transformer中,这被减少到恒定数量的操作,尽管由于平均注意力加权位置而降低了有效分辨率,我们使用多头注意力来抵消这种影响,如3.2节所述。
二段:自注意力,有时称为内部注意力,是一种将单个序列的不同位置关联起来以计算序列表示的注意力机制。自注意力已成功用于各种任务,包括阅读理解、抽象摘要、文本蕴涵和学习任务无关的句子表示[4,27,28,22]。
三段:端到端记忆网络基于循环注意力机制而不是序列对齐循环,并且已被证明在简单语言问答和语言建模任务中表现良好[34]。
四段:然而,据我们所知,Transformer是第一个完全依赖自注意力来计算其输入和输出表示而不使用序列对齐RNN或卷积转换模型。在接下来的部分中,我们将描述Transformer,激发自注意力并讨论其相对于[17、18]和[9]等模型的优势。

3 模型架构

一段:这里,编码器将符号表示的输入序列(x1, …, xn)映射到连续表示的序列z=(z1, …,zn)。给定z,解码器然后一次生成一个元素的符号输出序列(y1, …,ym)。在每个步骤中,模型都是自回归的[10],在生成下一个时将先前生成的符号用作附加输入(在生成yt时需要有到yt-1的数据)。
自回归:过去时刻的输出会作为当前时刻的输入。
二段:Transformer遵循这种整体架构,对编码器和解码器使用堆叠的自注意力和逐点全连接层,分别如图1的左半部分和右半部分所示。
在这里插入图片描述备注后的图示:
在这里插入图片描述

3.1 编码器和解码器

一段:编码器:编码器由N = 6个相同层的堆栈组成。每层有两个子层。第一个是多头自注意机制,第二个是简单的、位置明智的全连接前馈网络。我们在两个子层中的每一个周围使用残差连接[11] ,然后进行层归一化[1]。即每个子层的输出为LayerNorm(x + Sublayer(x)),其中Sublayer(x)是子层自己实现的函数。为了促进这些残差连接,模型中的所有子层以及嵌入层都会产生维度 dmodel = 512的输出。
借用网上大哥们的图理解一下这个过程:
在这里插入图片描述

二段:解码器:解码器也由N = 6个相同的层组成。除了每个编码器层中的两个子层之外,解码器还插入了第三个子层,该子层对编码器堆栈的输出执行多头注意力。与编码器类似,我们在每个子层周围使用残差连接,然 后进行层归一化。我们还修改了解码器堆栈中的自注意力子层(带掩码的自注意力机制),以防止位置关注后续位置。这种掩蔽与输出嵌入偏移一个位置的事实相结合,确保对位置i的预测只能依赖于位置小于i的已知输出。
在这里插入图片描述

BatchNorm与LayerNorm:
BatchNorm是对不同样本间的同一维特征做归一化,即标准化某一特征整体的分布
LayerNorm是对同一样本的不同维特征间做归一化,即标准化某一样本特征的分布

在这里插入图片描述

3.2 注意力机制

一段:注意力函数可以描述为将查询和一组键值对映射到输出,其中查询、键、值和输出都是向量。输出计算为值的加权和,其中分配给每个值的权重由Q与Value相应的Key的相似度函数计算。

在这里插入图片描述

3.2.1 缩放点积注意力机制

一段:我们将我们的特别注意力机制称为“Scaled DotProduct Attention”(图2)。输入由维度dk的Q和K以及维度dv的V组成。我们用所有键计算查询的点积(内积),将每个键值除以,并应用softmax函数来获得值的权重。
二段:在实践中,我们同时计算一组查询的注意力函数,并打包到矩阵Q中。键和值也打包到矩阵K和V中。我们将输出矩阵计算为:
在这里插入图片描述

图解析:
在这里插入图片描述在这里插入图片描述

三段:两个最常用的注意力函数是加型的注意力[2]和点积(乘性)注意力。点积注意力与我们的算法相同,只是比例因子为1/√dk。 加型注意力机制使用具有单个隐藏层的前馈网络计算兼容性函数。两种注意力机制函数在理论上的复杂性相似,但点积注意力在实践中更快且更节省空间,因为它可以使用高度优化的矩阵乘法代码来实现。
虽然对于较小的dk值,这两种机制的性能相似,但dk比较大时加型注意力机制要优于点积注意力,我们怀疑对于较大的dk值,点积的幅度会增大,从而将softmax函数推入具有极小梯度的区域。为了抵消这种影响,我们将点积缩放1/√dk。

3.2.2 多头注意力

一段:与使用dmodel维度的键、值和查询执行单个注意函数不同,我们发现将查询、键和值分别线性投影到dk、dk和dv维度上不同的学习线性投影是有益的。然后,在每个查询、键和值的投影版本上,我们并行执行注意功能,产生dv维输出值。这些被连接起来并再次投影,产生最终值,如图2所示。
二段:多头注意力允许模型共同关注来自不同位置的不同表示子空间的信息。对于单个注意力头,平均化会抑制这一点。
在这里插入图片描述

三段:其中参数矩阵WiQ ∈ Rdmodel x dk,WiK ∈ Rdmodel x dk,WiV ∈ Rdmodel x dv,WO ∈ R hdv x dmodel 。
四段:在这项工作中,我们使用h = 8个并行注意力层或头。对于其中的每一个,我们使用dk = dv = dmodel/h = 64。由于每个头的维度减少,总计算成本类似于具有全维度的单头注意力。
在这里插入图片描述

3.2.3 模型中注意力机制的应用

一段:在Transformer中以三种不同的方式使用多头注意力:
1)在“编码器‑解码器注意力”层中,query来自前一个解码器层,key和value来自编码器的输出。这允许解码器中的每个位置都能参与到输入序列中的所有位置。这模仿了序列到序列模型中典型的编码器‑解码器注意机制,例如[38,2,9]
2)编码器包含自注意力层。在自注意力层中,所有的key、value和query都来自同一个地方,在这种情况下,是编码器中前一层的输出。编码器中的每个位置都可以关注编码器上一层中的所有位置。多头注意力允许模型共同关注来自不同位置的不同表示子空间的信息。对于单个注意力头,平均化会抑制这一点。
3)‧类似地,解码器中的自注意力层允许解码器中的每个位置关注解码器中从起始处到该位置的所有位置。我们需要防止解码器中的信息向左流动(在处理i位置信息时用到i位置之后的信息),以保持自回归特性。我们通过屏蔽掉softmax入中与非法连接相对应的所有值(设置为‑∞)在缩放的点积注意力内部实现这一点。请参见图2。

3.3 位置前馈网络

一段:除了注意力子层之外,我们的编码器和解码器中的每一层都包含一个全连接的前馈网络,该网络分别且相同地应用于每个位置。这包括两个线性变换,中间有一个ReLU激活。
在这里插入图片描述

二段:虽然线性变换在不同位置上是相同的,但它们在层与层之间使用不同的参数。另一种描述方式是内核大小为 1 的两个卷积。输入输出的维数为dmodel = 512,内层的维数为df f = 2048。
在这里插入图片描述

3.4 嵌入层和 Softmax

一段:与其他序列转录模型类似,我们使用学习嵌入将输入标记和输出标记转换为维度dmodel 的向量(用dmodel 的向量去表示输入和输出)。我们还使用通常学习的线性变换和 softmax 函数将解码器输出转换为预测的下一个令牌概率。在我们的模型中,我们在两个嵌入层和 softmax前线性变换之间共享相同的权重矩阵,类似于[30](Embedding存在于编码器、解码器和softmax之前,而且使用相同的权重)。在嵌入层中,我们将这些权重乘以√ dmodel。

3.5 位置编码

(为什么有这个东西?Attention是没有时序信息的,例如给定一句话,当打乱顺序时,语义会发生变化,但attention不会解决这种情况。因此需要加入这步。)
在这里插入图片描述

一段:由于我们的模型不包含递归和卷积,为了让模型利用序列的顺序,我们必须注入一些关于序列的相对或绝对位置的信息。
表 1 :对于不同的图层类型最大路径长度、每层复杂度和最小顺序操作数。 n是序列长度, d是表示维度, k是内核卷积的大小和 r 是受限自我注意中邻域的大小。
在这里插入图片描述

二段:序列中的标记。为此,我们在编码器和解码器堆栈的底部的输入嵌入层中添加“位置编码”。位置编码具有相同的维度dmodel 作为嵌入,因此可以将两者相加。位置编码有多种选择,参照文件[9]。
三段:在这项工作中,我们使用了不同频率的正弦和余弦函数:
在这里插入图片描述

其中pos是位置, i 是维度。即位置编码的每个维度对应于正弦曲线。波长形成从2π到10000 · 2 π 的 几何级数。我们选择这个函数是因为我们假设它可以让模型学习到相对位置信息,因为对于任何固定的偏移量k, P Epos+k可以表示为PE pos的线性函数。
在这里插入图片描述

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

4 为什么要使用自注意力机制

表 1 :对于不同的图层类型最大路径长度、每层复杂度和最小顺序操作数。 n是序列长度, d是表示维度, k是内核卷积的大小和 r 是受限自我注意中邻域的大小。
在这里插入图片描述

一段:在本节中,我们将自注意力层的各个方面与循环层和卷积层进行比较,这些层通常用于将一个可变长度的符号表示序列的(x1, …, xn)映射到另一个等长序列(z1, …, zn),其中xi,zi ∈ Rd,比如一个隐藏的典型序列转录编码器或解码器中的层。为了激发我们使用自注意力机制,我们考虑了三个必要条件。
二段:一是每层的总计算复杂度。另一个是并行化的计算量,由所需的最小顺序操作数来衡量。
三段:第三个是网络中远程依赖关系之间的路径长度。远程学习依赖性是许多序列转录任务中的关键挑战。影响学习这种依赖关系的能力的关键因素之一是前向和后向信号路径的长度。输入和输出序列中任意位置组合之间的这些路径越短,就越容易学习长程依赖关系 [12]。 因此,我们还比较了由不同层类型组成的网络中任意两个输入和输出位置之间的最大路径长度。
四段:如表 1 所示,自注意力层将所有位置连接起来需要常数级操作,而RNN需要 O(n) 数量级操作。 在计算复杂度方面,当序列长度 n 小于表示维度 d 时,自注意机制比RNN更快,这通常是机器翻译中最先进模型使用的句子表示的情况 ,例如 word-piece[38] 和 byte-pair [31] 表示。为了提高涉及超长序列的任务的计算性能,可以将自注意力限制为仅考虑输入序列中以相应输出位置为中心的大小为 r 的邻域。 这会将最大路径长度增加到 O(n/r)。 我们计划在未来的工作中进一步研究这种方法。
五段:内核宽度为 k < n 的单个卷积层并不连接所有输入和输出位置对。 这样做需要在连续内核的情况下堆叠 O(n/k) 卷积层,或者在扩张卷积的情况下需要 O(logk(n)) [18],从而增加任意两个位置之间最长路径的长度,在网络中卷积层通常比循环层更昂贵,高出 k 倍。 然而,可分离卷积 [6] 将复杂度大大降低到 O(k · n · d + n · d2)。 然而,即使 k = n,可分离卷积的复杂度也等于自注意力层和逐点前馈层的组合,这是我们在模型中采用的方法。
六段:作为额外的好处,self-attention 可以产生更多可解释的模型。 我们从我们的模型中检查注意力分布,并在附录中展示和讨论示例。不仅单个注意力头清楚地学习执行不同的任务,而且许多似乎表现出与句子的句法和语义结构相关的行为。

5 训练

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

5.1 训练数据和批处理

我们在由大约450万个句子对组成的标准WMT 2014英语-德语数据集上进行了训练。句子使用字节对编码[3]进行编码,该编码具有大约37000个标记的共享源目标词汇表。对于英语‑法语,我们使用了更大的WMT 2014英语-法语数据集,该数据集由3600万个句子组成,并将标记拆分为32000个单词词汇表[38]。句子对按近似的序列长度分批在一起。每个训练批次包含一组句子对,其中包含大约25000个源标记和25000个目标标记。

5.2 硬件和时间表

我们在一台配备8个NVIDIA P100 GPU的机器上训练我们的模型。对于我们使用整篇论文中描述的超参数的基础模型,每个训练步骤大约需要0.4秒。我们对基础模型进行了总共100,000步或12小时的训练。对于我们的大型 模型,(在表3的最后一行进行了描述),步进时间为1.0秒。大型模型训练了300,000步(3.5天)。

5.3 优化器

我们使用了β1=0.9、β2=0.98和=10−9的Adam优化器[20]。我们根据以下公式在训练过程中改变学习率:
在这里插入图片描述

这对应于在第一个warmup_steps训练步骤中线性增加学习率,然后根据步数的平方根倒数按比例减少学习率。我们使用了 warmup_steps = 4000。

5.4 正则化

我们在训练过程中采用了三种正则化:
Residual Dropout 我们将 dropout [33]应用于每个子层的输出,然后将其添加到子层输入并进行归一化。此外,我们将 dropout 应用于编码器和解码器堆栈中嵌入和位置编码的总和。对于基本模型,我们使用Pdrop = 0.1 的比率(使用了大量的dropout层进行正则化)。
表 2:Transformer 在英语到德语和英语到法语的 newstest2014 以培训成本的一小部分进行测试。
在这里插入图片描述

Label Smoothing(原本结果0表示错误,1表示正确,但由于太严苛一般会使置信区间降一点) 在训练过程中,我们采用了值els = 0.1 [36] 的Label Smoothing(对于正确的数据,softmax值为0.1就可以。即置信度0.1即可) 。这个损害你的perplexity(log loss做指数,可以理解为模型补缺行动,就是模型确信度降低),因为模型学会了更加不确定,但提高了准确性和 BLEU 分 数。

6 结果

6.1 机器翻译

一段:在 WMT 2014 英德翻译任务上,大Transformer模型(在表 2 中 的Transformer(big))比以前报告的最佳模型(包括集成)高出2.0BLEU以上,建立了一个新的最先进的 BLEU 分数28.4。这个模型的配置是在表 3 的最后一行。在8个P100 GPU上训练耗时3.5天。甚至我们的基本模型超过所有先前发布的模型和集成,其训练成本仅为任何一种竞争模型的一小部分。
二段:在 W MT 2014 英法翻译任务中,我们的大模型的 B LEU 得分为41.0,优于所有先前发布的单一模型,训练成本不到以前最先进的模型的1/4。英语到法语训练的 Transformer(大)模型dropout率Pdrop = 0 .1,而不是 0.3。
三段:对于基本模型,我们使用通过平均最后 5 个检查点获得的单个模型,这些检查点以 10 分钟的间隔写入。 对于大型模型,我们平均了最后 20 个检查点。 我们使用光束搜索,光束大小为 4,长度惩罚 α = 0.6 [38]。 这些超参数是在对开发集进行实验后选择的。 我们将推理期间的最大输出长度设置为输入长度 + 50,但在可能的情况下提前终止 [38]。
表 2 总结了我们的结果,并将我们的翻译质量和培训成本与其他文献中的模型架构进行了比较。我们通过将训练时间、使用的 GPU 数量以及每个 GPU 的持续单精度浮点容量的估计值相乘来估计用于训练模型的浮点运算次数。

6.2 模型变量

为了评估 Transformer 不同组件的重要性,我们以不同的方式改变了我们的基础模型,测量了开发集 newstest2013 上英语到德语翻译的性能变化。 我们使用了上一节中描述的波束搜索,但没有检查点平均。 我们在表 3 中展示了这些结果。
在表 3 行 (A) 中,我们改变了注意力头的数量以及注意力键和值维度,保持计算量不变,如第 3.2.2 节所述。 虽然单头注意力比最佳设置差 0.9 BLEU,但质量也会因人头过多而下降。
表 3:Transformer 架构的变化。 未列出的值与基本模型的值相同。 所有指标都在英语到德语的翻译开发集 newstest2013 上。 根据我们的字节对编码,列出的perplexities
是每个单词的,不应与每个单词的perplexities进行比较。
在这里插入图片描述

表 4:Transformer 很好地推广到英语解析选区(结果在《华尔街日报》第 23 节)
在这里插入图片描述

在表 3 行 (B) 中,我们观察到减小注意力键大小 dk 会损害模型质量。 这表明确定兼容性并不容易,比点积更复杂的兼容性功能可能是有益的。 我们在行 © 和 (D) 中进一步观察到,正如预期的那样,更大的模型更好,并且 dropout 非常有助于避免过度拟合。 在第 (E) 行中,我们用学习的位置嵌入 [9] 替换我们的正弦位置编码,并观察到与基本模型几乎相同的结果。

6.3 英语区域解析

为了评估 Transformer 是否可以泛化到其他任务,我们对英语选区解析进行了实验。这项任务提出了具体的挑战:输出受到强烈的结构约束,并且明显长于输入。此外,RNN 序列到序列模型无法在小数据机制中获得最先进的结果 [37]。
我们在 Penn Treebank [25] 的华尔街日报 (WSJ) 部分训练了一个 dmodel = 1024 的 4 层转换器,大约 40K 训练句子。我们还在半监督环境中对其进行了训练,
使用更大的a高置信度和 BerkleyParser 语料库,大约有 1700 万个句子 [37]。我们将 16K 令牌的词汇表用于 WSJ 唯一设置,将 32K 令牌词汇表用于半监督设置。
我们只进行了少量实验来选择第 22 节开发集上的 dropout、注意力和残差(第 5.4 节)、学习率和光束大小,所有其他参数与英德基础翻译模型保持不变。在推理过程中,我们将最大输出长度增加到输入长度 + 300。我们对 WSJ 和半监督设置都使用了 21 的光束大小和 α = 0.3。
我们在表 4 中的结果表明,尽管缺乏针对特定任务的调整,但我们的模型表现得非常好,比除递归神经网络语法 [8] 之外的所有先前报告的模型产生了更好的结果。
与 RNN 序列到序列模型 [37] 相比,即使仅在 WSJ 的 40K 句子训练集上进行训练,Transformer 的性能也优于 Berkeley Parser [29]。

7 结论

一段:在这项工作中,我们提出了Transformer,这是第一个完全基于注意力的序列转录模型,用多头自注意力取代了encoder-decoder架构中最常用的循环层。
二段:对于机器翻译任务中,Transformer的训练速度明显快于基于循环或卷积层的架构。在WMT 2014英语到德语和WMT 2014英语到法语的翻译任务上,我们都达到了新的水平。在前一项任务中,我们最好的模型甚至优于所有先前报道的集成。我们对基于注意力的模型的未来感到兴奋,并计划将它们应用于其他任务。我们计划将Transformer扩展到涉及文本以外的输入和输出模式的问题,并研究局部的受限注意力机制,以有效处理图像、音频和视频等大型输入和输出。使得生成不那么序列化是我们的另一个研究目标。
三段:源码地址:https://github.com/tensorflow/tensor2tensor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值