注意力机制是你需要的全部外文翻译资料

 2023-04-02 04:04

英语原文共 11 页,剩余内容已隐藏,支付完成后下载完整资料


注意力机制是你需要的全部

阿希什·瓦斯瓦尼* 诺姆·萨泽尔* 尼基·帕尔马* 雅各布·乌兹科雷特*

谷歌大脑 谷歌大脑 谷歌研究 谷歌研究

avaswani@google.com noam@google.com nikip@goole.com usz@google.com

约翰·琼斯* 艾丹·N·戈麦斯lowast; dagger; 乌卡斯·凯撒*

谷歌研究 多伦多大学 谷歌大脑

llion@google.com aidan@cs.toronto.edu lukaszkaiser@google.com

伊利亚·波洛苏钦lowast; Dagger;

illia.polosukhin@gmail.com

摘要

主流的序列转换模型都是基于复杂的循环或卷积神经网络,这个模型包含一个编码器和一个解码器。具有最好性能的模型在编码和解码之间通过一个注意力机制链接编解码器。我们提出了一个新的简单网络结构——Transformer,其仅仅是基于注意力机制,而不完全是循环和卷积。在两个机器翻译任务上的实验表明,该模型具有更好的性能,同时可以进行并行化,并且需要更少的时间进行训练。在WMT 2014英语到德语翻译任务上,我们的模型达到了28.4BLEU,获得了最好的结果。在WMT 2014英语到法语翻译任务上,我们的模型在8个GPU上训练3.5天后,所得到的单个模型获得了41.8BLEU分数,这是文献中最好模型的训练成本的一小部分。我们在大型和有限的训练数据中,通过将其成功应用于英语句法解析,表明了Transformer可以很好地适用于其他任务。

1 介绍

复杂的神经网络,特别是长短期记忆(LSTM) 和门控循环神经网络(GRU) 已经被确认为序列建模和转换问题(例如语言建模和机器翻译)中的最新方法。以后,许多研究都围绕循环语言模型和编码器-解码器体系结构进行。[1]

循环网络模型通常是考虑了输入和输出序列的中字符位置的计算。将序列中每位置数据与RNN计算时刻中的步骤对齐,它们将产生一系列隐藏状态ht,当前时刻隐藏态ht作为上一时刻隐藏状态htminus;1和时刻 t输入的函数。这种固有的顺序性质排除了训练样本的并行化计算,这在较长的序列长度中变得至关重要,因为内存约束限制了样本之间的批处理。最近的工作通过分解技巧( factorization tricks)和条件计算(conditional computation)实现了计算效率的显着提高,同时在后者的情况下也提高了模型性能。但是,顺序计算的基本约束仍然存在。

注意力机制已成为各种任务中引人注目的序列建模和转换模型的组成部分,允许对依赖关系进行建模,而不考虑它们在输入或输出序列中的距离。但是,在大多数情况下,这种注意机制与循环网络一起使用。

在这项工作中,我们提出了Transformer,一种避免循环的模型架构,它完全依赖于注意机制来构造输入和输出之间的全局依赖关系。Transformer允许进行更多的并行化,并且在8个P100 GPU上经过长达12小时的训练后,可以达到最好的翻译效果。

2 背景

减少顺序计算的目标也构成了扩展神经GPU,ByteNet和ConvS2S的基础,所有这些都使用卷积神经网络作为基本构建块,并行计算所有输入和输出位置的隐藏表示。在这些模型中,关联来自两个任意输入或输出位置的数据所需的操作数量在位置之间随着距离的增长,对于ConvS2S呈线性,对于ByteNet呈对数。这使得学习较远位置之间数据的依赖性变得更加困难。在Transformer中,这被减少到常数级的操作次数,尽管由于平均注意力加权位置而导致有效分辨率降低,这是我们在3.2节中描述的Multi-Head注意力的影响。

Self-attention,有时称为intra-attention,是一种关联单个序列的不同位置以计算序列表示的关联机制。Self-attention已经成功地用于各种任务,包括阅读理解、摘要概括、文本蕴涵和学习任务独立的句子表示。

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

然而,据我们所知,Transformer是第一个完全依靠self-attention的转换模型来计算其输入和输出的表示,而不使用序列对齐的RNN或卷积的模型。在接下来的部分中,我们将描述由self-attention驱动的Transformer,并且讨论与其他模型相比,其优势所在。

3 模型架构

大多数神经序列转换模型都具有编码器-解码器结构。这里,编码器将字符表示的输入序列(x1,hellip;,xn)映射到连续表示序列 z = (z1,hellip;,zn)。在给定 z 的条件下,解码器一次一个元素地生成字符的输出序列(y1,hellip;,ym)。在每个步骤中,模型都是自动回归的,在生成下一个字符时,将上一时刻生成的字符作为附加输入。

Transformer遵循这种整体架构,即在编码器和解码器部分使用栈的self-attention和各数据独立的全连接层,分别如图1的左半部分和右半部分所示。

3.1 编码器和解码器堆栈

编码器:编码器由N=6个相同层的堆栈组成。每层有两个子层。 第一个子层是multi-head self-attention,第二个子层是简单的、各位置独立的全连接层。我们在两个子层中的每一个周围使用残差连接(residual connection),然后进行层归一化(layer normalization)。也就是说,每个子层的输出是LayerNorm(x Sublayer(x)),其中Sublayer(x)是当前子层的输出。为了提高这些残差连接,模型中的所有子层以及嵌入层产生维度 dmodel=512的输出。

解码器:解码器同样由 N=6个相同层的堆栈组成。除了每个编码器层中的两个子层之外,解码器还插入第三子层,其对编码器堆栈的输出执行 multi-head attention。与编码器类似,我们在每个子层周围使用残差连接,然后进行层归一化。我们还修改解码器堆栈中的self-attention子层以防止引入当前时刻的后续时刻输入。这种屏蔽与输出嵌入偏移一个位置的事实相结合,确保了位置 i的预测仅依赖于小于 i的位置处的已知输出。

3.2 注意力机制

attention函数可以被描述为将query和一组key-value对映射到输出,其中query、key、value和输出都是向量。输出被计算为value的加权求和,其中分配给每个value的权重由query与对应key的兼容性函数计算。

3.2.1 缩放点积注意力

我们将attention称为“缩放点积Attention”(图2)。输入由维度为 dk的query和key以及维度为dv的value组成。我们用所有key计算query的点积,然后将每个点积结果除以radic;dk ,并应用softmax函数来获得value的权重。

在实践中,我们同时在一组query上计算attention函数,将它们打包在一起形成矩阵Q。key和value也一起打包成矩阵K和V. 我们计算输出矩阵为:

两个最常用的attention函数是加法attention和点积(乘法)attention。除了缩放因子 1/radic;dk之外,点积attention与我们的算法相同。加法attention使用具有单个隐藏层的前馈网络来计算兼容性功能。虽然两者在理论上的复杂性相似,但在实践中,点积attention更快,更节省空间,因为它可以使用高度优化的矩阵乘法来实现。

当dk的值比较小的时候,这两个机制的性能相差相近,当dk比较大时,加法attention比不带缩放的点积attention性能好。我们怀疑,对于很大的dk值,点积大幅度增长,将softmax函数推向具有极小梯度的区域。为了抵消这种影响,我们缩小点积1/radic;dk倍。

3.2.2 多头注意力

我们发现将query、key和value分别用不同的、学到的线性映射h倍到dk、dk和dv维效果更好,而不是用dmodel维的query、key和value执行单个attention函数。 基于每个映射版本的query、key和value,我们并行执行attention函数,产生dv 维输出值。 将它们连接并再次映射,产生最终值,如图所示2。

Multi-head attention允许模型的不同表示子空间共同关注不同位置的信息。如果只有一个attention head,它的平均值会抑制这个信息。

其中,映射为参数矩阵

在这项工作中,我们采用h=8 个并行attention层或head。对每个head,我们使用dk=dv=dmodel / h=64。由于每个head的大小减小,总的计算成本与具有全部维度的单个head attention相似。

3.2.3 注意力在模型中的应用

Transformer中用3种不同的方式使用multi-head attention:

  • 在“编码器—解码器attention”层,query来自前一个解码器层,key和value来自编码器的输出。这允许解码器中的每个位置能注意到输入序列中的所有位置。这模仿Seq2Seq模型中典型的编器—解码器的attention机制。
  • 编码器包含self-attention层。 在self-attention层中,所有的key、value和query来自相同的位置,即是编码器中前一层的输出。 编码器中的每个位置都可以关注编码器上一层的所有位置。
  • 类似地,解码器中的self-attention层允许解码器中的每个位置都参与解码器中直到并包括该位置的所有位置。我们需要防止解码器中的向左信息流以保持自回归属性。我们通过屏蔽softmax的输入中所有非法连接的值(设置为-infin;),实现缩放点积attention。见图2。

3.3 位置前馈网络

除了attention子层之外,我们的编码器和解码器中的每个层都包含一个 完全连接的前馈网络,该前馈网络单独且相同地应用于每个位置。 它包括两个线性变换,之间有一个ReLU激活。

尽管线性变换在不同位置上是相同的,但它们在层与层之间使用不同的参数。它的另一种描述方式是两个内核大小为1的卷积。输入和输出的维度为dmodel = 512,内部层的维度为dff = 2048。

3.4 嵌入和Softmax

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

3.5 位置编码

由于我们的模型不包含循环和卷积,为了让模型利用序列的顺序,我们必须加入序列中关于词符相对或者绝对位置的一些信息。为此,我们将“位置编码”添加到编码器和解码器堆栈底部的输入嵌入中。位置编码和嵌入的维度dmodel相同,所以它们俩可以相加。有多种位置编码可以选择,例如通过学习得到的位置编码和固定的位置编码。

表格1:不同层类型的最大路径长度、每层复杂性和最小顺序操作数。n是序列长度,d是表示维,k是卷积的核大小,r是受限自我注意中邻域的大小。

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

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

其中pos 是位置,i 是维度。也就是说,位置编码的每个维度对应于一个正弦曲线。这些波长形成一个几何级数,从2pi; 到10000sdot;2pi;。我们选择这个函数是因为我们假设它允许模型很容易学习相对位置,因为对任意固定偏移k, PEpos k可以表示为PEpos的线性函数。

我们还使用学习到的位置嵌入进行了试验,发现这两个版本产生几乎相

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[591053],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。