纵有疾风起
人生不言弃

transformer笔记

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

transformer笔记插图
图1 transformer的总体结构 图来自原论文 attention is all you need

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

transformer笔记插图1
简化版transformer

transformer笔记插图2

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

transformer笔记插图3
encoder结构

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

transformer笔记插图4
当encoder和decoder都只有一个时transformer长这样

transformer笔记插图5

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

transformer笔记插图6
self attention的具体计算过程

self attention是将输入,的向量转化为向量,。
首先要把转化为三个向量,,,要通过转化一个向量为另一个向量可通过向量乘矩阵(,,是向量,是矩阵),上图中, ,,同理,可以看到,和分享同一个,通过共享权重,,实际上已经做了信息交换,得到了,,(1<=t<=单词个数)之后上图的右半部分展示了接下来的计算,依旧以的计算过程为例

假设

对这两个结果除以 论文中,,指向量(1<=t<=单词个数)
那么分别得到 14,12,将这两个值经过softmax,得到0.88,0.12,这就是和的值

上述计算过程,把所有向量写成矩阵的形式,就变成了如下的等式

再扩展一下,对所有集合——矩阵

transformer笔记插图7
矩阵形式

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

transformer笔记插图8

这就是self attention所做的

transformer笔记插图9

transformer笔记插图10
decoder部分比encoder多了一层Encoder decoder attention

在encoder decoder attention 层中,k,v的计算来自encoder的部分的输出(用m表示),即,

参考资料

  1. 贪心学院直播课 transformer
  2. https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/
  3. https://blog.csdn.net/qq_37212752/article/details/87713815
  4. https://www.jianshu.com/p/5bd1ff4f71b0

文章转载于:https://www.jianshu.com/p/d5a0611da7e3

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » transformer笔记
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录