站点图标 AI技术聚合

变形金刚——Transformer入门刨析详解

Transformer是什么呢?

变形金刚——Transformer入门刨析详解Transformer最早起源于论文Attention is all your need,是谷歌云TPU推荐的参考模型。
目前,在NLP领域当中,主要存在三种特征处理器——CNN、RNN以及Transformer,当前Transformer的流行程度已经大过CNN和RNN,它抛弃了传统CNN和RNN神经网络,整个网络结构完全由Attention机制以及前馈神经网络组成。首先给出一个来自原论文的Transformer整体架构图方便之后回顾。

self attention

self attention模型输入的xi先做embedding得到ai,每一个xi都分别乘上三个不同的w得到q、k、v。

接下来把与对应的分别做乘积最后求和得出第一个输出,同理可得到所有

那么到这里就可以看出输出b1是综合了所有的输入xi信息,同时这样做的优势在于——当b1只需要考虑局部信息的时候(比如重点关注x1,x2就行了),那么它可以让输出的值为0就行了。

那么self attention是这么做平行化的呢?

咱们复习一下前面说到的q、k、v的计算:



因为,那么根据矩阵运算原理,我们将串起来作为一个矩阵I与相乘可以得到构成的矩阵Q。同理可得的矩阵K、V。

然后我们再回忆观察一下的计算过程(为方便理解,此处省略):


我们可以发现计算都是用去乘以每个得出,那么我们将叠加起来与相乘得到一列向量(i=1,2,3,4)。然后你再加上所有的就可以得到整个矩阵。最后对的每一列做一个soft-max就得到 矩阵。

最后再把与所有构成的矩阵V相乘即可得到输出。

在这里我们对输入I到输出O之间做的事情做一个总结:我们先用I分别乘上对应的得到矩阵Q,K,V,再把Q与相乘得到矩阵A,再对A做soft-max处理得到矩阵KaTeX parse error: Expected group after '^' at position 7: \hat A^̲,最后再将KaTeX parse error: Expected group after '^' at position 7: \hat A^̲与V相乘得到输出结果O。整个过程都是进行矩阵乘法,都可以使用GPU加速。

self-attention的变形——Multi-head Self-attention

Multi-head Self-attention跟self-attention一样都会生成q、k、v,但是Multi-head Self-attention会再将q、k、v分裂出多个(这里举例分裂成两个),然后它也将q跟k去进行相乘计算,但是只跟其对应的k、v进行计算,比如只会与进行运算,然后一样的乘以对应的v得到输出

那么这个Multi-head Self-attention设置多个q,k,v有什么好处呢?
举例来说,有可能不同的head关注的点不一样,有一些head可能只关注局部的信息,有一些head可能想要关注全局的信息,有了多头注意里机制后,每个head可以各司其职去做自己想做的事情。

Positional Encoding
根据前面self-attention介绍中,我们可以知道其中的运算是没有去考虑位置信息,而我们希望是把输入序列每个元素的位置信息考虑进去,那么就要在这一步还有加上一个位置信息向量,每个都是其对应位置的独特向量。——是通过人工手设(不是学习出来的)。

文章出处登录后可见!

已经登录?立即刷新
退出移动版