引言(Transformer)
- transformer一开始提出为上面这篇论文,主要应用在NLP领域。
- 在此之前,nlp主要使用RNN(记忆的长度是有限的,比较短,所以有了后面的LSTM),LSTM等时序网络, 且无法并行化训练(即必须先计算出t0时刻的数据,再计算t1时刻的数据),导致训练效率低。
- 所以提出transformer,如果在硬件不受限制的情况下,他的记忆长度是无限的。而且可以做并行化。
核心模块:self-attention
- 计算q,k,v
- 对(q*k) / np.sqrt(d)得到的a进行softmax
- 用上面得到的a乘以v,如右下角的矩阵乘法所示:
- 多个head情况下(相当于cnn中的group卷积):
- 对concat后的矩阵进行融合
- 位置编码的必要性(因为如果把后面的顺序打乱,不会影响前面的输出,不合理,应该全局编码,每个位置变动都会影响到其他任意位置):
Vision-Transformer
- 增加一个class的token是参考的BERT网络
位置编码带来的提升:
用每个位置的编码与其他位置的编码求余弦相似度如图:
- Transformer Encoder
LayerNormal可参考:https://zhuanlan.zhihu.com/p/54530247 - 一个encoder block包括一个multi-head和MLP
参考:
bilibli霹雳吧啦Wz