- Published on
2021_transformer_综述(部分)
2021 A Survey of Transformers
1 Introduction
Transformer的变体从以下几方面提高:
- Model efficiency。对于self attention,长序列的计算和内存效果过多。有作者提出了轻量化(lightweight)的注意力(sparse attention,分而治之(divide-and-conquer)递归和分层机制)
- (model generalization )模型泛化。transformer几乎没有什么归纳偏差,通用性很强,在小数据集上很难训练,容易过拟合。针对这些问题提出引入结构偏差和正则化,在大规模数据上进行预训练
- model adaptation,领域适应。让Transformer适应下游的任务。
论文将优化工作分为:架构改进,预训练和应用。(主要关注通用的架构变体,简要讨论预训练和应用程序的变体)
目录:
- BACKGROUND,介绍架构和相关的组件
- 说明Transformer变体的种类
-
- review模块的改进。attention,position encoding,layer normalization,feed-forward layer
- review架构级别的变体
- 介绍预训练的表示
- Transformer的应用
- 讨论
2. BACKGROUND
模型各个部件的介绍略。
2.3 Model Analysis
分析self attention和position-wise FFN。假设模型隐层维度是D,输入序列长度是T,FFN的内部隐层维度是4D,多头keys values的维度是D/H。
矩阵相乘,复杂度是乘法操作的次数。NM*MP 复杂度为 O(NMP)
对于self attention来说,复杂度计算如下:
$QK^T$的复杂度$T \times D * D \times T$得到$T\times T$矩阵,复杂度为$O(T^2D)$
softmax的复杂度为$O(T^2)$
$AV$的复杂度为$T \times T * T \times D$,$O(T^2D)$,所以self attention的复杂度为$O(T^2D)$
对于多头注意力而言:
将$T \times D$维度的Q,K矩阵拆分转置为$T \times h \times m$其中$m=D/h$。$QK^T$的复杂度为$h \times T \times m * h \times m \times T$复杂度为$O(h^2T^2m)$换算一下,去掉常数复杂度为$O(T^2D)$
之后还有一个concat操作,$T \times D * D \times D$,$O(D^2T)$,最后多头注意力的复杂度为$O(T^2D+TD^2)$
参数量:
对于self attention, 包含$W_q,W_k,W_v,W^o)$四个$D \times D$矩阵,参数量是$4D^2$
FFN有两个$4D^2$的参数矩阵$W^1,W^2$
当输入序列较短,FFN是瓶颈,当输入过长时,self attention是瓶颈。
2.4 与其他模型对比
self attention分析
通过上表可以看出,在可变长序列处理和长依赖,并行计算,全局信息具有优势。
归纳偏差
归纳偏差:目标函数的假设
CNN的归纳偏差为平移不变性和局部性(共享核权重)
RNN马尔可夫结构具有时间不变形(temporal invariance)和局部性(locality)的归纳偏差
Transformer没有对数据结构进行假设。这使得Transformer成为一个灵活通用的架构。也使得在小数据上容易过拟合。Transformer可以看作为在完全有向图上的GNN(with self-loop),Transformer与GNN的区别是Transformer没有引入数据如何构造的先验信息,完全依赖相似性度量进行信息传递。
3. Transformer分类
4. Attention
Attention的两个问题:
- 复杂性。在输入序列较长时,计算代价大,有个长度的平方操作。$O(T^2D)$
- 结构先验。没有假设任何的结构偏差(归纳偏置),小数据上容易过拟合。
提高:
- Sparse Attention。在注意力机制中引入稀疏偏差降低复杂度。
- Linearized Attention。实现了线性复杂度的注意力计算
- Prototype 和内存压缩,减少q或者kv的大小,以减小注意力矩阵的大小
- 低秩self-attention:捕获注意力的低秩性
- attention with prior,使用先验的注意分布来替换标准的注意力
- 提高多头机制
Sparse Attention
transformer学习到的attention 矩阵是比较稀疏的。
https://kexue.fm/archives/6853 这个角度理解比较好。
分为两类稀疏:基于位置的,基于内容的
基于位置
有五个基础的稀疏注意力模式。
可以对以上的基础模式进行复合,形成新的不同的注意力。
其他扩展的稀疏注意力模型:
BPT的基于二叉树的注意力模式。还有视觉方面的一些操作。
基于内容
选择与query相似度高的key
Linearized Attention
待续...
https://juejin.cn/post/6977376855850483749
https://www.jianshu.com/p/98d82f83b6ba