Attention Is All You Need
Abstract
序列到序列(sequence-to-sequence, seq2seq)的转导模型,如基于复杂递归或卷积神经网络的那些,包括编码器和解码器,通常通过注意力机制连接。这些模型在许多任务上取得了显著成果,但训练成本较高。我们提出了一种新的简单网络架构,Transformer,它完全基于注意力机制,摒弃了循环和卷积操作。通过两个机器翻译任务的实验,我们展示了Transformer模型在质量上的优势,同时它还具有更高的可并行性,从而显著减少了训练时间。在WMT 2014英语到德语的翻译任务上,我们的模型达到了28.4 BLEU,比现有最佳结果提高了2 BLEU。在WMT 2014英语到法语翻译任务中,我们的模型在八个GPU上仅用3.5天训练即达到了41.8 BLEU的新单模型最高分,相比之前的模型训练成本更低。此外,我们证明了Transformer通过将其应用于具有大量训练数据和有限训练数据的英语解析任务,可以很好地推广到其他NLP任务。
Introduction
在Transformer出现之前,RNN、LSTM、GRU等在序列模型和转导问题的方法中占据了稳固的地位,比如语言模型、机器翻译等,人们一直在努力扩大循环语言模型和编码器-解码器体系结构的界限。递归模型通常沿输入和输出序列的符号位置考虑计算。将位置与计算时间中的步骤对齐,它们根据先前的隐藏状态ht-1和位置t的输入生成一系列隐藏状态ht。这种固有的顺序性导致了没办法并行化进行训练,这在较长的序列长度上变得至关重要。最近的工作通过分解技巧和条件计算大大提高了计算效率,同时在后者的情况下还提高了模型性能,但是,顺序计算的基本约束仍然存在。注意力机制已成为各种任务中引人注目的序列建模和转导模型不可或缺的一部分,允许对依赖项进行建模,而无需考虑它们在输入或输出序列中的距离。在这项工作中,我们提出了一种Transformer,一种避免重复的模型体系结构,而是完全依赖于注意力机制来绘制输入和输出之间的全局依存关系。
循环神经网络(RNNs)、长短期记忆(LSTMs)和门控循环单元(GRUs)等序列模型在自然语言处理任务中取得了巨大成功。然而,这些模型通常难以并行化,因为它们在处理序列时是按顺序进行的。相比之下,卷积神经网络(CNNs)通过并行计算所有输入位置的隐藏表示,从而允许更高的并行性。然而,CNNs在处理长序列时仍然需要堆叠多个卷积层,这可能导致信息丢失和计算成本增加。
注意力机制已成为解决这些问题的有效方法,允许模型在处理序列时关注输入的不同部分。然而,大多数现有的seq2seq模型仍然基于RNNs、LSTMs或GRUs,这些模型在处理长序列时仍然面临挑战。
在本文中,我们提出了一个全新的网络架构,Transformer,它完全基于注意力机制,摒弃了循环和卷积操作。Transformer模型包括编码器和解码器两部分,都基于自注意力(self-attention)和前馈神经网络。自注意力允许模型在处理序列时关注其内部的不同位置,从而捕捉序列的依赖关系。
Background
减少顺序计算的目标一直是自然语言处理(NLP)模型设计的重要驱动力。这一目标也构成了扩展神经GPU、ByteNet和ConvS2S等模型的基础,这些模型都使用卷积神经网络(CNNs)作为基本构建块,以并行方式计算所有输入和输出的隐藏表示。然而,这些模型在关联来自两个任意输入或输出位置的信号时面临一个挑战:所需的操作数随着位置之间的距离增加而增加。对于ConvS2S,这种增加是线性的,而对于ByteNet则是对数增长。这种操作数的增加使得学习远距离位置之间的依赖关系变得更加困难。
Transformer模型通过引入自注意力(Self-attention)机制,有效地解决了这一问题。在Transformer中,关联任意两个输入位置的操作次数被减少为恒定次数,尽管这是以平均注意力加权位置为代价的,可能导致有效分辨率降低。然而,Transformer通过采用多头注意力(Multi-head attention)机制,有效地抵消了这种代价。
Self-attention(有时也称为intra-attention)是一种将单个序列的不同位置关联起来的注意力机制,其目标是计算序列的上下文相关表示。这种注意力机制已成功应用于各种NLP任务中,包括阅读理解、抽象摘要以及学习与任务无关的句子表示。Transformer是第一个完全基于Self-attention来计算其输入和输出表示的转导模型,无需依赖基于序列对齐的循环神经网络(RNNs)或卷积神经网络(CNNs)。这一创新使得Transformer在捕获长距离依赖关系时具有更高的效率,并且具有更高的可并行性,从而大大减少了训练时间。
Model Architecture
Model Architecture
Encoder and Decoder Stacks
Transformer模型由编码器(encoder)和解码器(decoder)两部分组成。编码器由N个相同的层堆叠而成,每层包括两个子层:一个自注意力机制和一个前馈神经网络。解码器也包含N个相同的层,但每个层除了自注意力机制和前馈神经网络外,还包含一个额外的编码器-解码器注意力机制。
Self-Attention
自注意力机制允许模型在处理序列时关注其内部的不同位置。在自注意力层中,输入序列首先通过三个不同的线性变换(查询Q、键K和值V)得到三个不同的表示。然后,通过计算Q和K的点积,得到输入序列中不同位置之间的注意力分数。这些分数通过softmax函数进行归一化,得到注意力权重,然后用于计算加权和,得到最终的输出表示。
Position-wise Feed-Forward Networks
除了自注意力机制外,每个编码器和解码器层还包含一个前馈神经网络。这个网络由两个线性变换和一个ReLU激活函数组成,应用于每个位置的表示。
Positional Encoding
由于Transformer模型不包含循环或卷积操作,它无法捕获序列中的位置信息。为了解决这个问题,我们为输入序列的每个位置添加了一个固定的位置编码。位置编码与输入嵌入具有相同的维度,并相加在一起作为输入到模型的表示。
Transformer依旧是遵循encoder-decoder结构,其模型的每一步都是自回归的,在生成下一个模型时,会将先前生成的符号用作附加输入。在此基础上,使用堆叠式Self-attention和point-wise,并在encoder和decoder中使用全连接层,结构图如下:

Encoder and Decoder Stacks
-
Encoder
- 编码器由 N = 6 N = 6 N=6个相同层的堆栈组成,每层有两个子层,分别是Self-attention机制和位置完全连接的前馈网络
- 每个子层周围都使用残差连接并进行归一化,也就是说每个子层的输出为 L a y e r N o r m ( x + S u b l a y e r ( x ) ) LayerNorm(x+Sublayer(x)) LayerNorm(x+Sublayer(x))
- 为了促进这些残差连连接,模型中的所有子层以及嵌入层均产生尺寸为dmodel = 512的输出
-
Decoder
- 解码器还由N = 6个相同层的堆栈组成
- 除了每个编码器层中的两个子层之外,解码器还插入一个第三子层,该子层对编码器堆栈的输出执行多头注意力
- 对编码器堆栈的输出执行多头注意力时,要注意使用mask,保证预测只能依赖于小于当前位置的已知输出。
- 每个子层周围都使用残差连接并进行归一化
Attention
注意力方法可以描述为将query和一组key-value映射到输出,其中query,key,value和输出都是向量。输出是计算value的加权总和,其中分配给每个value的权重是通过query与相应key的方法来计算的。

Scaled Dot-Product Attention
它的输入是 d k d_k dk维的queries和keys组成,使用所有key和query做点积,并除以 d k \sqrt{d_k} dk,然后应用softmax函数获得value的权重,公式如下:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_k}})V Attention(Q,

Transformer是一种基于注意力机制的序列转导模型,抛弃了传统的循环和卷积操作,提高了训练效率。在WMT 2014英德、英法翻译任务上达到最优性能,证明了其在NLP任务中的潜力,适用于文本摘要、问答系统和对话生成等领域。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



