Transformer:Attention Is All You Need

简介: Transformer:Attention Is All You Need

论文标题:Attention Is All You Need


论文链接:https://arxiv.org/abs/1706.03762


一 、概述


Transformer是一种新的架构,用来学习输入和输出之间的全局依赖关系。比起以往使用RNN(recurrent neural network)来处理NLP领域中的诸多任务,Transformer是一种全新的架构,其中规避开了recurrence架构,并且相比于RNN,其并行计算的能力更强(more parallelizable)。


二、模型架构


  1. 模型中的encoder和decoder


  • 整体架构


]477QD{IH70OJ~VG(3CX_)O.png

Transformer也使用了encoder-decoder架构,其具体架构图如下:


GCV5[{QYX}ZLC2(F9)DTMHH.png

                                        模型架构


  • Encoder


Transformer的encoder由6个相同的层堆叠而成,每一层有两个子层,其中第一个子层是multi-head attention层,第二个子层就是一个简单的前馈网络,在每个子层后面都有一个residual connection和layer normalization,也就是说每个子层的输出可以表示为:


D]D(LY)O}XT3UJ)W6(@FV2Q.png


WX1S2GP$FR51FZATXE2~WSX.png代表每个子层实现的函数。为了促使这些residual connection发挥作用,模型中的所有子层以及下面的embedding层,都会产生维度Q7XBYU8J7H0BIT_~23Z%4RB.png的输出。


  • Decoder


Transformer的decoder也是由6个相同的层堆叠而成,除了encoder中的两种子层,decoder还添加了第三种子层,也就是在encoder的输出上执行multy-head attention的一层。同样的每一层后面都有residual connection和layer normalization。图中decoder最下面的子层会被修改来防止每个位置attend到这个位置后面的元素。


  1. Attention


  • Scaled Dot-Product Attention


4H)7V[SJ@X~E1MON(D{8GSW.png


该过程用图表示如下:


4[`IJJFL[4S92YSQ%8G2DDG.png

         Scaled Dot-Product Attention


  • additive attention和dot-product attention


最常用的两种attention的机制是additive attention和dot-product attention

(multiplicative attention)。其中在上式中如果没有scaling factorFBHIJV993(T]SS~CZ{POEVR.png ,就是dot-product attention。Additive attention使用具有单个隐藏层的前馈网络来计算兼容性函数,其输入层是两个向量的横向拼接,输出层的激活函数是sigmoid表示二者的相关度,对每一对向量都需要进行一次计算,得到的结果再计算softmax得到attention相关度权重。两种attention在理论上的复杂度相同,但在实践中dot-product attention能使用优化的矩阵乘法运算,所以计算更快,同时由于它没有使用前馈网络,所以占用空间更小,所以transformer选用了dot-product attention。


  • 为什么dot-product attention要被scaled


)PO9[]{JFPB`7U~HKQ@%LK4.png


  • Multi-Head Attention


D(~A{W9]2I4O28]Y72CMN)4.png


下图展示了multi-head attention的过程:


F6ETR~R62KF}`$LE7OU9S7E.png

         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中V6_N3DA[S[VT8U@91FW6AVQ.png函数的输入设置为1U515T{EL`{J_4DBI0V(U@O.png来实现这一操作,这一部分被称为masked multi-head attention。


  1. Position-wise Feed-Forward Networks


除了attention子层以外,每一层都还包含一个前馈网络层,这个前馈网络层包含两个线性变换,中间有一个ReLU激活,其公式如下:


K2@Q@GCQ%X$FP%{D{4T0VB8.png


_H0MDRQM3OT9M_[Z0ZFU[S2.png


  1. Embeddings and Softmax


3E}V6_FZV8EY8%WCJBUL7E0.png


  1. Positional Encoding


Transformer中没有循环和卷积结构,我们需要将输入序列的位置信息考虑进来。我们通过给输入embedding加上一个positional encodings来实现这一目的。Positional encodings的维度也是5B~K}2N)1FNG8F259U1}K78.png,这样它才可以和input embedding加起来。Positional encodings有很多选择,包括会在训练过程中被学习的和固定的。


在Transformer中选用不同频率的正弦和余弦函数:


N3L$7RN7R5JGB8${S]FQUI8.png

利用上述公式我们可以得到:


7A@~M}{K}LY[N1XX~~[76EQ.png


上述正余弦函数的方法是固定的positional encodings,同样地我们也可以使用学习得到的positional embeddings。之所以选择正余弦的方式是因为这种方式可能允许模型推断比训练时遇到的更长的序列。


  1. 其他


李宏毅老师有关模型架构的讲解:https://www.jianshu.com/p/e305771b1b54


三、为什么选择Self-Attention


在该部分我们将self-attention与循环和卷积网络进行对比。我们对比以下三个指标:

①每层总的计算复杂度;


②可以并行的计算量,通过所需的最小顺序操作数来衡量;


③网络中长程依赖的路径长度。


很多序列转导模型的一个关键任务是学习长程依赖关系。一个影响学习该依赖关系的关键因素是前向和后向信号必须在网络中传播的长度。输入和输出序列中任意位置组合的这些路径越短,越容易学习长程依赖关系,因此选择对比不同层组成的网络中任意两个输入和输出位置之间的最大路径长度。


对比结果如下表所示:


URIUQVM9(Z19HSVMZCWX[HU.png

                                             对比结果


3)5{V%N3L9)XY8HN]G1)TZE.png

四、训练


  1. 优化器


使用Adam优化器进行训练,设置RN%(`}Q8QRH99P(4]IJIRPU.png,另外根据以下公式调整学习率:


5@704DSVDB6MRULQ6FM]T(A.png

利用这个公式可以使得在(_ZX})CP{B(C~ODLV]XJNXL.png个trainging step以内,学习率线性增长,随后会将学习率与training step的平方根成比例地缩小。我们使用A@)S06QK]`]00P5W8(~S[QN.png


  1. 正则化


  • Residual Dropout


在每个子层的输出与输入相加和做layer normalization之前要被dropout。另外,在encoder和decoder中也会将embeddings与positional encodings的和做dropout。我们设置TM[)0$MYC]9FFA@NI%WJ1HD.png


  • Label Smoothing


在训练时,我们使用label smoothing的值为T${8NDW9LYY7YGW62~FVMRD.png。 这让模型不易理解,因为模型学得更加不确定,但提高了准确性和BLEU得分。


五、模型效果


  1. 机器翻译


对比了Transformer在WMT 2014 English-to-German和WMT 2014 English-to-French两个数据集上与其他模型的效果:


INW1T1OFPKL4`4{K(YC{FRR.png

                                             效果对比


  1. 模型变种


对比了Transformer的不同架构的效果:


L}Z5L7G)Y~CXXX{{%CO8M`8.png

                                               效果对比

相关文章
|
1月前
|
机器学习/深度学习 自然语言处理 数据处理
论文《Attention is All You Need》
论文《Attention is All You Need》
45 1
|
8月前
|
机器学习/深度学习 自然语言处理 TensorFlow
Attention
Attention 网络,也称为注意力网络,是一种在神经网络中处理输入数据的方法。这种方法使模型能够自动学会关注输入序列中的重要部分,从而提高模型的性能。Attention 网络在自然语言处理(NLP)、计算机视觉和语音识别等领域得到了广泛应用。
71 3
|
机器学习/深度学习 自然语言处理 搜索推荐
Transformer之十万个为什么?
这篇博文主要结合个人理解和思考,通过整理和自己的解释列出关于Transformer的部分重要问题(持续更新),看完后会对Transformer有个更好的理解。
Transformer之十万个为什么?
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
一文介绍CNN/RNN/GAN/Transformer等架构 !!
一文介绍CNN/RNN/GAN/Transformer等架构 !!
56 5
|
1月前
|
机器学习/深度学习 数据可视化 TensorFlow
[transformer]论文实现:Attention Is All You Need(上)
[transformer]论文实现:Attention Is All You Need(上)
23 2
|
1月前
|
机器学习/深度学习 并行计算 数据可视化
[transformer]论文实现:Attention Is All You Need(下)
[transformer]论文实现:Attention Is All You Need(下)
32 2
|
1月前
|
机器学习/深度学习 存储 自然语言处理
Transformer中的FFN介绍
Transformer中的FFN介绍
109 0
Transformer中的FFN介绍
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
Is attention all you need? 注意力可能并不是完美的!
Is attention all you need? 注意力可能并不是完美的!
55 1
|
11月前
|
机器学习/深度学习 自然语言处理 Apache
Transformer 模型实用介绍:BERT
Transformer 模型实用介绍:BERT
168 0
|
机器学习/深度学习 编解码
Vision Transformer(VIT)原理总结
Vision Transformer(VIT)原理总结
316 0