Attention Is All You Need论文阅读笔记

NIPS2017

 

 

1、Abstract &Introduction

目前主流的序列转换模型都是基于复杂的、带有encoder和decoder的CNN或者RNN。表现最好的模型也是在encoder和decoder的基础上接入attention机制所得的。作者提出了一种新型的简单的网络结构——the Transformer,该模型完全依靠attention机制,不依赖卷积和循环神经网络。在两个机器翻译任务上的实验表明:该模型性能较好,具有很高的并行性,而且显著地减少了训练时间。在WMT2014 英语德语翻译任务上取得 28.4 BLEU值,与现有的最佳成绩相比,成绩提高了2倍以上。在8个GPU上训练了3.5天得到了一个新的单模型,在WMT 2014英语法语翻译任务中能取得的BLEU值为41.8,且效率要远高于其他表现较好的模型。在大规模数据的训练下也证明了它能很好地推广到其他任务中。

 

2、Model Architecture

The Transformer遵从主流的encoder-decoder结构,通过在encoder和decoder上使用stacked self-attention and point-wise fully connected layers,见下图:

 

 

2.1 Encoder and Decoder Stacks

Encoder: encoder是由N = 6 的相同的层堆叠而成,每层都有两个子层,第一层是

multi-head self-attention mechanism,第二层是一个简单的position-wise fully connected feed-forward network。其中每两个子层之间有一个残余连接(Residual,dropout的一种方式,为了避免过拟合,最后接入normalization layer,使每一子层的输出都是 LayerNorm (x + Sublayer(x)) 。

Decoder: 在Decoder部分,有三个sublayer(比Encoder多一层sublayer),前馈网络不变,一个Multi-Head Attention的输入来自Encoder的输出,另一个Multi-Head Attention是带有mask,即Masked Multi-Head Attention(这个mask操作是保证softmax操作之后不会将非法的values连到attention中,比如你这一位置query的attention值不能包含这一位置之后的values的信息,只能包含该位置前面的values,方式为设置为负无穷)。

 This masking, combined with fact that the output embeddings are offset by one position, ensures that the predictions for position i can depend only on the known outputs at positions less than i

 

 

2.2 Attention

Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,如下图。在计算attention时主要分为三步: 第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等; 第二步是使用一个softmax函数对这些权重进行归一化; 最后将权重和相应的键值value进行加权求和得到最后的attention。 目前在NLP研究中,key和value常常都是同一个,即key=value。

 

2.2.1 Scaled Dot-Product Attention

作者在本文中使用的注意力机制为 "Scaled Dot-Product Attention"(比例缩放的点乘注意力机制),输入由 queries维度为dk的keys维度为dv的values组成。计算query与所有的keys点积,然后每一个结果都除以√dk,再通过一个softmax层就得到了values的权重。

在实际操作中,作者是在一组queries上同时进行所有attention function的计算,整体输出成一个矩阵Q,keys和values也是成组生成的K和V,作者计算attention公式如下:

其中缩放因子 起到调节作用,使得内积不至于太大(太大的话 softmax 后就非 0 即 1 了,不够“soft”了)。

通过这种方式就实现了句子得编码。

 

2.2.2 Multi-Head Attention

这个是 Google 提出的新概念,是 Attention 机制的完善。就是把 Q,K,V 通过参数矩阵映射后,再做 Scaled Dot-Product Attention,把这个过程重复做 h 次,结果拼接起来就行了。

所谓“多头”(Multi-Head),就是指多做几次同样的事情(参数不共享),然后把结果拼接。(借鉴了CNN的多卷积核)

 

2.2.3 Position-wise Feed-Forward Networks

每层有两个子层,attention层是其中一个,而attention之后的另一个子层就是一个前馈的网络Position-wise Feed-Forward Networks,公式描述如下:

该网络是两个线性变换中间加了一个ReLU激活函数。每个位置(position)上的线性变换是一样的,但是不同层与层的参数是不一样的。该网络的输入和输出维度都是 ,不过中间层的维度是2048. (事实上它就是窗口大小为 1 的一维卷积)

 

2.2.4 Positional Encoding

因为模型不包含RNN和CNN层,为了获得序列的位置信息,在输入词向量时附加了位置编码向量,位置编码与词向量维度相同,以便于两个向量的sum运算。实现位置编码的方式有很多种,如预学习位置信息和下面的sin,cos函数得方式:

这里的意思是将 id 为 pos 的位置信息映射为一个 pos 维的位置向量,其中pos是位置,i是dimension。

作者对比了使用预训练的位置编码方式和上述sin编码方式,结果表明两种方式得效果很相近,但Google 选择上述的sin方式的一个重要原因如下:

因为 sin(α+β)=sinα cosβ+cosα sinβ 以及 cos(α+β)=cosα cosβ−sinα sinβ,这表明位置 p+k 的向量可以表明位置 p 的向量的线性变换,这提供了表达相对位置信息的可能性,比预训练的要灵活。而且文中作者将位置编码成与词向量相同得维度,以便于直接相加。

 

3 Results

在 WMT 2014 English-to-German translation task中, the big transformer model表现最好,超过之前的最好的模型2点BLUE值多一点,Training took 3.5 days on 8 P100 GPUs。尽管这个模型表现很好,其训练消耗却是最低的。

在WMT 2014 English-to-French translation task任务中,our big model achieves a BLEU score of 41.8,超过之前所有单模型,而且训练消耗比previous state-of-the-art model要少1/4。

你可能感兴趣的:(e',n)