参考链接:李宏毅-Transformer
1、Transformer简介
Transformer与RNN输入输出一样,但是RNN后面的运算依赖于前面的输出,所以不能并行运算,但是使用Transformer是可以并行的,所以其b1-b4是同时被计算出来的
2、计算过程
1、与attention机制一样,在这个模型中,我们会从输入的x线通过乘一个矩阵变换为a,然后再通过query(q)、key(k)、value(v)进行运算
attention公式(根号d可有可无):
2、self-attention:通过计算出来的q与每一个k进行相似性运算(可能是内积,也可能是其他方法,只要是吃进两个向量输出一个相似性分值即可),得到a1,1到a1,4然后经过一个softmax计算出来其占比
3、通过各个value与计算出来的a分别相乘,然后相加,得到了最终的b1,同理b2-b4是相同的方法得到,因为在计算过程中并没有使用到其他的的输出,所以完全可以同时计算b2-b4,所以可以并行
4、得到q、k、v的计算过程,都是a通过乘一个W矩阵进行变换的
上述过程使用矩阵表示:
注意,过soft-max的时候,是按列过的
multi-head Self-attention
q可以通过乘两个不相关的矩阵变成两个,然后q1,k1,v1为一组,每组相乘变成b1,1
按照这样设计,qkv计算是没有顺序的,因此,这样的设计方式是不考虑sequence的顺序的
我们分析语言等东西的时候是一定会有顺序影响的,因此这样是显然不行的
因此需要加入一个向量,来保证其是和位置有关联的,所以,在这里加了一个one-hot编码的位置向量