Attention Is All Your Need

Paper : Attention Is All Your Need
Code : official

摘要

本文提出了经典的Attention与Multi Head Attention 机制,并利用这两部分构造了一个Transformer结构,为BERT的提出打下基础。作者在NLP相关的数据集上进行测试,相比CNN和RNN给出了以下几个优点

  • 并行度高,训练时间短
  • 表现更好
  • 可以更好的处理长距离依赖关系,从全局的角度处理输入和输出的依赖关系

Transformer 结构

在这里插入图片描述
从NLP模型架构的角度来看,Transformer 模型可以看作一个Seq2Seq的结构,抽象表示成如下形式

在这里插入图片描述
借用一张图来表示seq2seq模型,假设该任务是句子的翻译,对于不同语言来说,表示相同的含义需要的句子长短是不同的,而Seq2Seq就是用来处理输入和输出长度不确定的情况
在这里插入图片描述
对于Transformer来说,首先将句子根据位置进行编码调整,然后按照顺序输入到Encoder中,对于Decoder来说,Decoder的输出包含两部分,分别是Encoder的输出和Seq上一个位置的结果,也就是Decoder上一次的输出作为这一次的输入。

在Transformer结构中,对于每一模块,都使用Residual connection机制进行处理,即对于子模块 Sublayer 的输出为 LayerNorm ( x + SubLayer ( x ) ) \text{LayerNorm}(x+\text{SubLayer}(x)) LayerNorm(x+SubLayer(x)),在这里 SubLayer ( ⋅ ) \text{SubLayer}(\cdot) SubLayer() 表示该子层对应的函数变换。在实现中,假设隐变量的维度统一为 d model = 512 d_\text{model} = 512 dmodel=512。取编码器和解码器中的 N = 6 N=6 N=6 。在解码器中,使用Mask层来避免对于位置 i 的预测依赖 i 之后的结果。

Attention 机制

注意力机制的核心在于对给定信息进行权重分配,只关注最相关的输入来进行决策。当注意力机制用来生成一个序列的表示时,也被称作是自注意力机制。注意力机制的表示形式如下

在这里插入图片描述
假定Source是需要系统处理的信息源,Query代表某种条件或者先验信息,Attention Value是给定Query信息的条件下,通过注意力机制从Source中提取得到的信息。一般Source里面包含有多种信息,我们将每种信息通过Key-Value对的形式表示出来,那么Attention定义为

Attention(Query,Source) = ∑ i similarity(Query,Key i ) ⋅ Value i \text{Attention(Query,Source)} = \sum_i\text{similarity(Query,Key}_i)\cdot\text{Value}_i Attention(Query,Source)=isimilarity(Query,Keyi)Valuei

其中 similarity(Query,Key i ) \text{similarity(Query,Key}_i) similarity(Query,Keyi) 表示权重,当Query与Key越接近时,答案越依赖于对应的Value的值。如果使用 Cosine 来衡量向量之间的相似度,并假定向量的长度为1,那么相似度可以通过点乘来进行计算。如果将Key,Query的向量连接起来形成矩阵,那么计算权重的方法可以使用矩阵乘法来表示。在Transformer结构中,Attention机制也被称作是 Scaled Dot-Product Attention,具有如下结构

在这里插入图片描述
数学公式表示如下

Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q,K,V) = \text{softmax}(\frac{QK^\text T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V

各矩阵的形状如下:

  • Q : numq × dq 其中 dq 表示询问的特征向量维度
  • K : numk × dk 其中 dk 表示Key的特征向量维度,满足 dk = dq
  • V : numv × dv 其中 dv 表示Value的特征向量维度,满足 dv = dk

作者认为,随着 dk 的增大, 点乘的值会增大Softmax饱和的区域,导数下降到极小值,不利于优化。考虑Q和K中每个变量都是 ∼ N ( 0 , 1 ) \sim N(0,1) N(0,1),点乘的结果为 q ⋅ k = ∑ q i k i ∼ N ( 0 , d k ) q\cdot k = \sum q_i k_i\sim N(0,d_k) qk=qikiN(0,dk)

对于自注意力机制来说,这里的 Q,K,V 是将同一编码输入通过三个线性变换映射过去的,也就是说

Q = X W Q K = X W K V = X W V \\Q = XW^Q \\K = XW^K \\V = XW^V Q=XWQK=XWKV=XWV

这里, X X X 表示编码矩阵,形状为 batch × dmodel ,而 W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV 形状为 dmodel × dq, dmodel × dk, dmodel × dv

Multi Head Attention 机制

在这里插入图片描述

简单情况下 dmodel = dq = dk = dv ,但作者发现对于不同位置来说,将它们映射到不同的子空间中进行计算效果更好,因此使用多头注意力机制的方式进行维度的划分。假定 dmodel = h × dk,那么多头注意力机制表示为

MultiHead(Q,K,V) = Concat ( head 1 , . . . , head h ) W O where  head i = Attention ( Q W i Q , K W i K , V W i V ) \text{MultiHead(Q,K,V)} = \text{Concat}(\text{head}_1,...,\text{head}_h) W^O \\\text{where }\text{head}_{i} = \text{Attention}(QW_i^Q,KW_i^K,VW_i^V) MultiHead(Q,K,V)=Concat(head1,...,headh)WOwhere headi=Attention(QWiQ,KWiK,VWiV)

其中各矩形的形状如下

符号形状
W i Q W_i^Q WiQ(dmodel,dk)
W i K W_i^K WiK(dmodel,dk)
W i V W_i^V WiV(dmodel,dv)
W O W^O WO(h×dv,dmodel)

在该文章中,取 dk = dv = dmodel / h = 64,取 h = 8

Feed-Forward Network

在Transformer 结构中,Feed-Forward模块表示为

F F N ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 FFN(x) = \text{ReLU}(xW_1+b_1)W_2+b_2 FFN(x)=ReLU(xW1+b1)W2+b2

FFN的输入输出的特征维度是 dmodel = 512,隐藏层的特征维度是 dff = 2048

Positional Encoding

由于我们的模型不包含时序和卷积,因此为了使模型使用序列的顺序,我们必须注入一些在序列中的相对或绝对位置的信息。我们在编码器和解码器底部的输入嵌入中添加“位置编码”。位置编码具有与嵌入相同的d维模型,因此可以将两者相加。 位置编码有很多选择,可以学习和固定。在本文中采用正弦余弦编码方式

PE ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i / d model ) PE ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i / d model ) \\\text{PE}_{(pos,2i)} = \sin(\frac{pos}{10000^{2i/d_\text{model}}} ) \\\text{PE}_{(pos,2i+1)} = \cos(\frac{pos}{10000^{2i/d_\text{model}}} ) PE(pos,2i)=sin(100002i/dmodelpos)PE(pos,2i+1)=cos(100002i/dmodelpos)

其中pos表示位置,i 表示维度

Self-Attention 与 CNN RNN 之间的比较

作者从三个方面分析了Self-Attention 的特点

  • 每层的总计算量,计算量越小越好
  • 并行化的程度,并行计算过程中单个计算机执行的操作越少越好
  • 长距离依赖的关系中的路径长度。路径越短越好学习
    在这里插入图片描述

实验结果

总体效果

在这里插入图片描述

不同参数对模型的影响

在这里插入图片描述

总结

在这项工作中,作者介绍了完全基于注意力的seq2seq模型Transformer,用多头自注意力代替了编码器-解码器体系结构中最常用的RNN层。 对于翻译任务,与基于递归或卷积层的体系结构相比,训练Transformer更快。在WMT 2014英语到德语和WMT 2014英语到法语的翻译任务中,都达到了SOTA。作者提出未来的工作包括将“Transformer”扩展到涉及文本以外的涉及输入和输出方式的问题,并研究局部的有限注意力机制,以有效处理大型输入和输出。个人认为Attention机制描述的是一种与空间结构无关的点与点之间的特征影响,从GNN的角度来理解,如果每个特征向量对应到图中的点特征,Attention提供了一种全图的视野变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值