论文标题:Attention Is All You Need
论文链接:https://arxiv.org/abs/1706.03762
一 、概述
Transformer是一种新的架构,用来学习输入和输出之间的全局依赖关系。比起以往使用RNN(recurrent neural network)来处理NLP领域中的诸多任务,Transformer是一种全新的架构,其中规避开了recurrence架构,并且相比于RNN,其并行计算的能力更强(more parallelizable)。
二、模型架构
- 模型中的encoder和decoder
- 整体架构
Transformer也使用了encoder-decoder架构,其具体架构图如下:
模型架构
- Encoder
Transformer的encoder由6个相同的层堆叠而成,每一层有两个子层,其中第一个子层是multi-head attention层,第二个子层就是一个简单的前馈网络,在每个子层后面都有一个residual connection和layer normalization,也就是说每个子层的输出可以表示为:
代表每个子层实现的函数。为了促使这些residual connection发挥作用,模型中的所有子层以及下面的embedding层,都会产生维度的输出。
- Decoder
Transformer的decoder也是由6个相同的层堆叠而成,除了encoder中的两种子层,decoder还添加了第三种子层,也就是在encoder的输出上执行multy-head attention的一层。同样的每一层后面都有residual connection和layer normalization。图中decoder最下面的子层会被修改来防止每个位置attend到这个位置后面的元素。
- Attention
- Scaled Dot-Product Attention
该过程用图表示如下:
Scaled Dot-Product Attention
- additive attention和dot-product attention
最常用的两种attention的机制是additive attention和dot-product attention
(multiplicative attention)。其中在上式中如果没有scaling factor ,就是dot-product attention。Additive attention使用具有单个隐藏层的前馈网络来计算兼容性函数,其输入层是两个向量的横向拼接,输出层的激活函数是sigmoid表示二者的相关度,对每一对向量都需要进行一次计算,得到的结果再计算softmax得到attention相关度权重。两种attention在理论上的复杂度相同,但在实践中dot-product attention能使用优化的矩阵乘法运算,所以计算更快,同时由于它没有使用前馈网络,所以占用空间更小,所以transformer选用了dot-product attention。
- 为什么dot-product attention要被scaled
- Multi-Head Attention
下图展示了multi-head attention的过程:
multi-head attention
- Transformer中attention的应用
Transformer中主要有三处地方用到了attention机制:
①在架构图decoder的中间部分,query来自于先前的decoder层,而key和value来自于encoder的输出,这样设计允许了decoder中的每一个位置都能attend到输入的序列的任何一个位置。这样的设计模仿了传统的seq-to-seq模型的encoder-decoder attention机制。
②Transformer的encoder使用了attention机制,每一个self-attention层的query、key、value都来自于前一层的输出,每个位置都能attend到前一层的所有位置。
③在架构图decoder的下面的部分,每个位置被允许attend到该位置之前包括该位置的地方,为了保证自回归属性,我们必须避免出现左向信息流。可以通过将不合法连接(当前位置右侧)的 scaled dot-product attention中函数的输入设置为来实现这一操作,这一部分被称为masked multi-head attention。
- Position-wise Feed-Forward Networks
除了attention子层以外,每一层都还包含一个前馈网络层,这个前馈网络层包含两个线性变换,中间有一个ReLU激活,其公式如下:
- Embeddings and Softmax
- Positional Encoding
Transformer中没有循环和卷积结构,我们需要将输入序列的位置信息考虑进来。我们通过给输入embedding加上一个positional encodings来实现这一目的。Positional encodings的维度也是,这样它才可以和input embedding加起来。Positional encodings有很多选择,包括会在训练过程中被学习的和固定的。
在Transformer中选用不同频率的正弦和余弦函数:
利用上述公式我们可以得到:
上述正余弦函数的方法是固定的positional encodings,同样地我们也可以使用学习得到的positional embeddings。之所以选择正余弦的方式是因为这种方式可能允许模型推断比训练时遇到的更长的序列。
- 其他
李宏毅老师有关模型架构的讲解:https://www.jianshu.com/p/e305771b1b54
三、为什么选择Self-Attention
在该部分我们将self-attention与循环和卷积网络进行对比。我们对比以下三个指标:
①每层总的计算复杂度;
②可以并行的计算量,通过所需的最小顺序操作数来衡量;
③网络中长程依赖的路径长度。
很多序列转导模型的一个关键任务是学习长程依赖关系。一个影响学习该依赖关系的关键因素是前向和后向信号必须在网络中传播的长度。输入和输出序列中任意位置组合的这些路径越短,越容易学习长程依赖关系,因此选择对比不同层组成的网络中任意两个输入和输出位置之间的最大路径长度。
对比结果如下表所示:
对比结果
四、训练
- 优化器
使用Adam优化器进行训练,设置,另外根据以下公式调整学习率:
利用这个公式可以使得在个trainging step以内,学习率线性增长,随后会将学习率与training step的平方根成比例地缩小。我们使用。
- 正则化
- Residual Dropout
在每个子层的输出与输入相加和做layer normalization之前要被dropout。另外,在encoder和decoder中也会将embeddings与positional encodings的和做dropout。我们设置。
- Label Smoothing
在训练时,我们使用label smoothing的值为。 这让模型不易理解,因为模型学得更加不确定,但提高了准确性和BLEU得分。
五、模型效果
- 机器翻译
对比了Transformer在WMT 2014 English-to-German和WMT 2014 English-to-French两个数据集上与其他模型的效果:
效果对比
- 模型变种
对比了Transformer的不同架构的效果:
效果对比
![]477QD{IH70OJ~VG(3CX_)O.png ]477QD{IH70OJ~VG(3CX_)O.png](https://ucc.alicdn.com/pic/developer-ecology/059c7be5a37f4cfe9a88cb1b47ba15bb.png?x-oss-process=image/resize,w_1400/format,webp)

![D]D(LY)O}XT3UJ)W6(@FV2Q.png D]D(LY)O}XT3UJ)W6(@FV2Q.png](https://ucc.alicdn.com/pic/developer-ecology/a5c1bcd6a3ea4a3ab60e021d10f52dc9.png?x-oss-process=image/resize,w_1400/format,webp)




![FBHIJV993(T]SS~CZ{POEVR.png FBHIJV993(T]SS~CZ{POEVR.png](https://ucc.alicdn.com/pic/developer-ecology/3f7e151d82bb43afab3551bc59c8c752.png?x-oss-process=image/resize,w_1400/format,webp)
![)PO9[]{JFPB`7U~HKQ@%LK4.png )PO9[]{JFPB`7U~HKQ@%LK4.png](https://ucc.alicdn.com/pic/developer-ecology/c32ce9bc66514a83a6a9f9fae6d095ff.png?x-oss-process=image/resize,w_1400/format,webp)
![D(~A{W9]2I4O28]Y72CMN)4.png D(~A{W9]2I4O28]Y72CMN)4.png](https://ucc.alicdn.com/pic/developer-ecology/cd6f0309fe874745bb0380be435fb060.png?x-oss-process=image/resize,w_1400/format,webp)







![N3L$7RN7R5JGB8${S]FQUI8.png N3L$7RN7R5JGB8${S]FQUI8.png](https://ucc.alicdn.com/pic/developer-ecology/e4f0f9692ed148e586d474292c6d2396.png?x-oss-process=image/resize,w_1400/format,webp)


![3)5{V%N3L9)XY8HN]G1)TZE.png 3)5{V%N3L9)XY8HN]G1)TZE.png](https://ucc.alicdn.com/pic/developer-ecology/f335d978bc3c41d5adbdb20810b7233c.png?x-oss-process=image/resize,w_1400/format,webp)
![RN%(`}Q8QRH99P(4]IJIRPU.png RN%(`}Q8QRH99P(4]IJIRPU.png](https://ucc.alicdn.com/pic/developer-ecology/f9ec84fda52a45b1bd333c93fcf31af8.png?x-oss-process=image/resize,w_1400/format,webp)
![5@704DSVDB6MRULQ6FM]T(A.png 5@704DSVDB6MRULQ6FM]T(A.png](https://ucc.alicdn.com/pic/developer-ecology/4f03e3228c994725a12c2a6e247a4bf9.png?x-oss-process=image/resize,w_1400/format,webp)
![(_ZX})CP{B(C~ODLV]XJNXL.png (_ZX})CP{B(C~ODLV]XJNXL.png](https://ucc.alicdn.com/pic/developer-ecology/fc534421fabe446788f58863fdc13cd3.png?x-oss-process=image/resize,w_1400/format,webp)
![A@)S06QK]`]00P5W8(~S[QN.png A@)S06QK]`]00P5W8(~S[QN.png](https://ucc.alicdn.com/pic/developer-ecology/3d30210eecd0497e8f0ac8f30d445470.png?x-oss-process=image/resize,w_1400/format,webp)
![TM[)0$MYC]9FFA@NI%WJ1HD.png TM[)0$MYC]9FFA@NI%WJ1HD.png](https://ucc.alicdn.com/pic/developer-ecology/164337ce5b73478db4cced0ff3fec3b6.png?x-oss-process=image/resize,w_1400/format,webp)


