Transformer学习笔记

一、 Transformer

Transformer结构是在《Attention is all you need》这篇论文中提出的,论文的几大亮点在于:1)不同于以往基于RNN的seq2seq模型,该论文中用attention机制替代了RNN搭建了整个模型框架;2)提出了多头注意力(Multi-headed attention)方法,在编码器和解码器中大量使用多头自注意力机制(Multi-headed self-attention);3)在主流任务上不仅训练速度获得了很大提升,同时也取得了先进的结果。

 

1. Self-attention 机制

在解释self-attention机制之前,我们先介绍一下在NLP中常用的attention计算方法。Attention函数的本质可以描述为一个查询(Q:query)到一系列键值对(K:Key, V:Value)的映射。计算时主要分为三步:第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积、感知机等;第二步是使用softmax等函数对这些权重进行归一化;最后将权重和value进行加权求和得到attention之后的向量表示。在目前的NLP任务中,key和value通常都是同一个。

Transformer学习笔记_第1张图片

具体化到自注意力机制(self-attention),即Key=Value=Query,例如输入一个句子,那么里面的每个词都要和该句子中的所有词进行attention计算,目的是学习句子内部词之间的依赖关系,捕获句子的内部结构。

对于使用自注意力机制的原因,论文中提到了三个方面:1)在输入序列n小于representation的维度d时,self-attention在时间复杂度上是有优势的,当n比较大时,作者限制每个词只和周围的r个词计算attention;2)多头attention不依赖于前一时刻的计算,可以很好地并行计算;3)在长距离依赖上,由于self-attention是每个词都要和所有词计算attention,因此词与词之间的最大路径长度都是1,这样便于捕获长距离依赖关系。

 

2. Transformer结构

模型的整体结构如下图所示,仍然主要包括编码器和解码器:

Transformer学习笔记_第2张图片

2.1 编码器和解码器

编码器由6个相同的网络块组成,在每个网络快中包括一个多头attention子层和一个前馈神经网络子层;解码器也由6个相同的网络块组成,每个相比解码器多了一个多头attention层(Masked)。为了更好地优化深度网络,在整个网络中使用了残差连接和正则化(Add&Norm)。

 

2.2 Attention

(1)Scaled Dot-Product Attention

在常用的点积相似度计算的基础上除以一个维度,起到调节作用,使得内积不至于太大。

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

(2)Multi-head Attention

多头Attention的结构如下图所示,Query、Key、Value先进行一个线性变化,然后做放缩点积attention,这里需要做h次,因此称之为多头。每一次计算一个头,线性变换的参数不一样,然后将多次计算的attention结果进行拼接,再进行一次线性变换得到multi-head attention的结果。

Transformer学习笔记_第3张图片

 

(3)Position-wise Feed-Forward Networks

对于每个输入进行两次线性变换:

FFN(x)=max(0,x\cdot W_1+b_1) \cdot W_2+b_2

 

 

你可能感兴趣的:(Transformer学习笔记)