目录
1 Transformer的主要框架
1.1 输入编码
1.2 位置编码
1.3 Self-Attention
1.4 Multi-Head Attention
1.4 Encoder-Decoder Attention
2 常见问题
Transformer整个网络结构由且仅由self-Attenion和Feed Forward Neural Network组成(Transformer is the first transduction model relying entirely on self-attention to compute representations of its input and output without using sequence aligned RNNs or convolution)
注意力机制(Attention)广泛应用在深度学习中的各个领域,例如在计算机视觉方向用于捕捉图像上的感受野,或者NLP中用于定位关键token或者特征。作者采用Attention机制的原因是由于RNN相关算法(LSTM、GRU等)只能从左向右依次计算或者从右向左依次计算,这种顺序计算的机制带来了两个问题:
Transformer的提出解决了上面两个问题:
Transformer本质上是一个Encoder-Decoder的结构,一个基于Transformer的可训练的神经网络可以通过堆叠Transformer block的形式进行搭建,下图是编码器和解码器各6层block,总共12层的Encoder-Decoder。
Transformer的Encoder由self-attention和Feed Forward neural network组成:
在Encoder中,数据首先会经过self-attention的模块得到一个加权之后的特征向量
简称为 Z,它会被送到encoder的下一个模块Feed Forward Neural Network。这个全连接有两层,第一层的激活函数是ReLU,第二层是一个线性激活函数,可以表示为:
Decoder的结构和Encoder的不同之处在于Decoder多了一个Encoder-Decoder Attention,两个Attention分别用于计算输入和输出的权值:
将输入单词通过Word2Vec等词嵌入方法将输入语料转化成特征向量X( 论文中使用的词嵌入的维度)
在最底层的block中,X将直接作为Transformer的输入,而在其他层中,输入是上一个block的输出:
如果不加入单词间的位置信息,那么无论句子的结构怎么打乱,Transformer都会得到类似的结果,这样的话Transformer只是一个功能更强大的词袋模型而已。为了解决Transformer没有捕捉顺序序列的能力,在编码词向量时引入了位置编码(Position Embedding)的特征,在词向量中加入了单词的位置信息。
作者设计了一个位置编码规则,为了便于和词向量进行单位加的操作,位置编码是一个长度为的特征向量。
论文给出的编码公式如下:
上式中,pos 表示单词的位置,i 表示单词的维度。
作者这么设计的原因是考虑到在NLP任务中,除了单词的绝对位置,单词的相对位置也非常重要。根据公式以及,这表明位置 K+P 的位置向量可以表示为位置K的特征向量的线性变化,这为模型捕捉单词之间的相对位置关系提供了非常大的便利。
Self-Attention是Transformer最核心的内容,在self-attention中,每个单词有3个不同的向量,它们分别是Query向量(Q),Key向量(K)和Value向量(V)。它们是通过3个不同的权值矩阵由嵌入向量 X 乘以三个不同的权值矩阵得到(三个矩阵的尺寸相同)。
Query,Key,Value的概念来自于信息检索系统,当在某电商平台搜索某件商品(蓝色薄款羽绒服)时,在搜索引擎上输入的内容是Query,搜索引擎根据Query为你匹配Key(商品的种类,颜色,描述等),然后根据Query和Key的相似度得到匹配的内容(Value)。
self-attention中的Q,K,V也起着类似的作用,在矩阵计算中,点积是计算两个矩阵相似度的方法之一,因此使用进行相似度的计算。然后根据相似度进行输出的加权匹配(权值是query与key的相似度)。
Self-Attention整个过程可以分成7步:
为了解决深度学习中的梯度消失问题,在self-attention中采用了残差网络中的short-cut连接结构:
Multi-Head Attention相当于h个不同self-attention的集成(ensemble),假设h=8,Multi-Head Attention的输出分成3步:
Multi-Head Attention整个过程如图所示:
同self-attention一样,multi-head attention也加入了short-cut机制。
在解码器中,Transformer block比编码器中多了个encoder-cecoder attention。在encoder-decoder attention中,Q来自于解码器的上一个输出,K和V则来自于与编码器的输出。其计算方式完全和图10的过程相同。
由于在机器翻译中,解码过程是一个顺序操作的过程,也就是当解码第K个特征向量时,我们只能看到第K-1及其之前的解码结果,论文中把这种情况下的multi-head attention叫做masked multi-head attention。
解码器解码之后,解码的特征向量经过一层激活函数为softmax的全连接层之后得到反映每个单词概率的输出向量。此时我们便可以通过CTC等损失函数训练模型了。
缺点:
Attention核心内容是为输入向量的每个embedding学习一个权重