论文阅读《Attention Is All You Need》,transformer架构

314 阅读2分钟

论文来源

NIPS 2017

摘要

显性序列显性转导模型是基于复杂的RNN或CNN,其中包括一个Encoder和一个Decoder。性能最好的模型通过一种Attention机制将Encoder和Decoder连接起来。我们提出了一种新的简单的网络架构,Transformer,完全基于Attention机制,完全不用RNN和CNN。在两个机器翻译任务上的实验表明,这些模型在质量上更优越,同时更并行,需要的训练时间明显更少。我们的模型在WMT 2014英德翻译任务上实现了28.4 BLEU,比现有的最佳结果,包括集成,提高了超过2 BLEU。在WMT 2014英法翻译任务中,我们的模型在8个gpu上进行了3.5天的训练,建立了一个新的最先进的单模型BLEU分数41.8,这只是文献中最佳模型训练成本的一小部分。我们成功地将变压器应用于具有大量和有限训练数据的英语选区解析,可以很好地推广到其他任务。

介绍

背景

模型架构

大多数竞争性神经网络转导模型都有一个Encoder-Decoder架构。对于一个输入序列(x1,x2,...,xn)(x_1,x_2,...,x_n)可以映射为一个连续的表示z=(z1,z2,...,zn)z=(z_1,z_2,...,z_n),对于给定的z,编码器会产生一个输出序列(y1,y2,...,yn)(y_1,y_2,...,y_n),每一次都是模型的自回归,生成下一个符号时,使用之前生成的符号作为附加的输入。

image.png Transformer模型框架,采用堆叠self-attention和point-wise,encoder和decoder构成的全连接层

Encoder:由N=6重复的identical层组成,每层有两个子层,第一层是多头注意力机制,第二层是简单的、基于位置的全连接前馈神经网络层,在这两个子层之间采用了残差连接和层归一化。每一子层的输出是LayerNorm(x+sublayer(x)),其中sublayer(x)是子层的函数实现。在模型中的所有子层间,利用残差连接,以至于最后的模型输出维度为dmodel=512d_model=512

Decoder: 编码器也是N=6的identitical层堆叠而成,每一层identical由3个子层构成,比编码器多了中间一个多头注意力机制层,同样在子层间增加残差连接。

多头注意力机制的具体实现如下图:

image.png

V、K、Q三个向量,各自通过一个全连接层,再经过一个深度为h的带缩放点积注意力机制(Scaled Dot-Product Attention,如下图),进行向量Concat拼接,全连接。

image.png

Scaled Dot-Product Attention具体的公式为:

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q, K, V) = softmax(\frac{QK^{T}}{\sqrt{d_k}})V

其中dk\sqrt{d_k}为缩放因子,具体表现在Scale层。

多层注意力机制的公式为:

MultiHeadAttention(Q,K,V)=Concat(head1,head2,...,headn)WOheadi=Attention(QWiQ,KWiK,VWiV)MultiHeadAttention(Q,K,V)=Concat(head_1,head_2,...,head_n)W^{O}\\ head_i = Attention(QW_i^Q, KW_i^K,VW_i^V)

其中QW,KW,VWQW, KW, VW为线性层。

此外,模型图在输入、输出处,还加入了Position-wise的前馈神经网络,这一部分的具体公式为:

FFN(x)=max(0,xW1+b1)W2+b2FFN(x) = max(0, x*W_1+b_1)W_2+b_2