Transformer

ryluo 2020-06-14 01:29:22
自然语言处理

NLP领域中无人不知的Transformer,包含Self-Attention, Multi-head Attention, Position Encoding等基本概念以及Transformer的基本结构

Self-Attention

Self-Attention是Transfomer中最核心的部分,其框架图如下图所示,主要功能是将一个输入词向量序列$a^1,a^2,a^3,a^4$(由$x^1,x^2,x^3,x^4$编码得到)输出一个新的经过加权(注意力机制的加权)之后的序列$b^1,b^2,b^3,b^4$,与RNN的功能类似但结构却不是与RNN类似的序列结构的,Self-Attention可以实现并行计算。

img

先给出Self-Attention的公式,然后再对公式进行解释:

Q: 查询(query: to match other)

k: 键(key: to be matched)

V: 值(value: information to be extracted)

从公式中可以看出,Attention是将查询与键做矩阵乘法之后经过归一化之后再进行Softmax得到注意力分数,最后于值进行加权。

如下图所示:$q,k,v$ 都是由输入$a^i$($x^i$ embedding得到的向量,后面的输入都是指的$a^i$)乘以一个可学习的权重矩阵$W$得到的(不同的$W$由于神经网络的学习,所以可以各司其职,达到注意力的效果),对于序列中的每个时间步的输入$a^i$都有$q,k,v$三个参数,所以可以将一个序列中所有的$q,k,v$分别拼接起来形成$Q,K,V$三个矩阵,这里拼成矩阵的形式就是为了后面并行化计算的。

img

其中得到了序列中每个元素的三个参数$q,k,v$之后,拿每个query $q$去对每个key $k$做attention,这里的attention的计算公式是两个向量的内积,如下图(左图)中所示,其中除以$\sqrt{d}$是为了归一化,消除向量维度的影响。然后再将计算得到的$a_{i,j}$进行归一化得到$\hat{a}_{i,j}$如下图(右图)中所示,$\hat{a}_{i,j}$表示的是注意力输出的分数。

img img

最后将输出的注意力分数与$v$进行加权平均,得到输出$b^1,b^2,b^3,b^4$

img img

因为Attention是对于序列中每个q分别对每个k做点积,而对于一个序列的q和k都可以写成向量的形式,如下图所示,两个向量点乘最后就得到了注意力矩阵,而这个矩阵的每个元素就是每个query对每个key的注意力分数,所以写成矩阵的形式如下图所示:

img img

img img

Multi-head Attention

多头注意力,本质上是多个Self-Attention,多个Attention可以提取序列中不同的注意力。如下图所示,多头注意力是再对每个输入$a^i$输入多个$q,k,v$,相当于多组$q,j,v$,而每一组之间是没有联系的,通过上面对Self-Attention的介绍我们可以知道,对于一个Self-Attention最终输出一个注意力矩阵$\hat{A}$,那么多头注意力其实就是再最后输出了多个注意力矩阵。如下图所示是一个含有两个head的注意力。

img img

从上面的分析可以知道,多头注意力机制输出了多个Attention矩阵,而每个注意力矩阵与$V$相乘在每个时间步上都会有一个输出,那么多头注意力在每个时间步上就会有多个输出,如下图所示,但是为了方便可以把多个输出拼成一个输出。

img

Positional Encoding

在上面的注意力机制中虽然对两个词向量进行了两两计算,但是却没有用到序列的顺序信息,在Transformer中使用了位置编码来表示序列的顺序信息,具体的做法就是在词向量上加上了一个与其相同形状的位置编码向量,作为新的词向量,如下图所示是一个四维的词向量加位置编码的例子。位置编码向量既可以通过数据学习的方式得到,也可以根据认为的指定规则制定

img

Transformer

img

Encoder

对于编码部分需要注意的是虚线的残差结构,目的是解决深度学习中的退化问题,如果将结构中的细节放大,则如下右边的图所示.

img img

Decoder

如下图是解码器的结构,其中需要注意的是Encoder-Decoder Attention,等于编码器最后一个block输出的$K,V$,$Q$是解码器自己的查询。

img

下图显示了Encoder和decoder一起工作的过程。

img
img

总结

由于Transform设计的非常的精妙,其包含的思想也非常的丰富,所以以上内容只是对Transformer的一个初步的理解,还需要在日后的学习中不断的更新对Transformer设计思想的理解,上面大量的图都是来自下面的两个参考资料,推荐去看原文。

参考资料:

详解Transformer (Attention Is All You Need)

The Illustrated Transformer

台大李宏毅Transformer视频