transoformer结构是大名鼎鼎的论文《attention is all you need》提出的,基于seq2seq的encoder deconder框架,其创新之处在于放弃了RNN结构,由于每个位置的attention计算都是相对独立的,因此其方便GPU并行计算,加快训练速度

左边的红框框起来的部分是encoder,右边红框是decoder,把encoder和decoder都看成一个整体忽略里面的计算就得到了下面的图


一个大的encoder里实际上包含了几个encoder,decoder也是同理,论文中使用了6个encoder

每个encoder里实际包含两个子层,全连接网络和自注意力,注意6个encoder的权重并不共享


在宏观上self attention可以理解为对输入x1,x2进行信息的杂糅,得到z1,z2

self attention是将输入,的向量转化为向量,。
首先要把转化为三个向量,,,要通过转化一个向量为另一个向量可通过向量乘矩阵(,,是向量,是矩阵),上图中, ,,同理,可以看到,和分享同一个,通过共享权重,,实际上已经做了信息交换,得到了,,(1<=t<=单词个数)之后上图的右半部分展示了接下来的计算,依旧以的计算过程为例
假设
对这两个结果除以 论文中,,指向量(1<=t<=单词个数)
那么分别得到 14,12,将这两个值经过softmax,得到0.88,0.12,这就是和的值
上述计算过程,把所有向量写成矩阵的形式,就变成了如下的等式
再扩展一下,对所有集合——矩阵

多头注意力(multi attention)
产生多个不同的Q K V, 不同的QKV会产生不同的Z,将其全部拼接起来再乘一个矩阵(训练过程更新参数)得到最终的Z

这就是self attention所做的


在encoder decoder attention 层中,k,v的计算来自encoder的部分的输出(用m表示),即,
参考资料
网友评论