0. Summary
通过additive attention将query和key矩阵汇总为全局向量,采用element-wise进行交互。得到线性复杂度的模型FastFormer。
1. Problem Statement
对于Transformer的二次方计算复杂度,提出更快的attention方法,同时具有较好的效果。
2. Method(s)
整体的框架如下图所示。首先通过additive(这个该怎么翻译)注意力机制将query序列信息汇总为一个全局的query向量。然后将全局query向量与keys通过元素级相乘再通过additive 注意力汇总为一全局key向量。再将全局key向量与value向量元素相乘并通过线性转化为一个学习全局上下文的注意力values。最后与输入query相加。
总结下来就是将query序列汇总、再与key交互再汇总,再与value交互。中间用到additive attention和element-wise product。后续实验证明element-wise product的作用很大。
1、首先是输入序列通过三个线性转换层得到Q,K,V。
2、然后通过additive attention汇总query矩阵为一个全局query向量\(q\in \mathbb R^{d\times 1}\)(论文中写的\(q\in \mathbb R^{d\times d}\)应该是有误),计算方式如下。 \[ \alpha_{i}=\frac{\exp \left(\mathbf{w}_{q}^{T} \mathbf{q}_{i} / \sqrt{d}\right)}{\sum_{j=1}^{N} \exp \left(\mathbf{w}_{q}^{T} \mathbf{q}_{j} / \sqrt{d}\right)} \]
\[ q=\sum_{i=1}^N \alpha_i q_i \]
3、然后通过element-wise product将keys与全局的query向量交互。\(p_i=q*k_i\)(\(*\)表示element-wise product)。再通过additive attention汇总为一个全局key向量。 \[ \beta_{i}=\frac{\exp \left(\mathbf{w}_{k}^{T} \mathbf{p}_{i} / \sqrt{d}\right)}{\sum_{j=1}^{N} \exp \left(\mathbf{w}_{k}^{T} \mathbf{p}_{j} / \sqrt{d}\right)} \]
\[ \mathbf{k}=\sum_{i=1}^{N} \beta_{i} \mathbf{p}_{i} \]
4、最后将全局key向量和value进行element-wise product进行交互\(u_i=k*v_i\),再通过线性变换得到输出矩阵\(R\)。
5、最后将输出矩阵\(R\)和query矩阵相加为最终的输出。(为什么和query矩阵而不是其他矩阵)。
参数共享:文章采用了共享query和value的线性变换参数,以及共享不同层之间的参数,以此来减少模型参数。
复杂度分析:
additive attention的复杂度为\(O(N\cdot d)\),element-wise product复杂度为\(O(N\cdot d)\),总体复杂度\(O(N\cdot d)\)。
每层参数量为\(3hd^2+2hd\)(这是加上了参数共享的),原transformer的参数量为\(4hd^2\)。所以说不加上参数共享,参数量并没有减少,但是transformer也可以参数共享的。
3. Evaluation
在五个任务上进行了对比实验,对于vanilla Transformer计算成本限制了可以处理的最大序列长度,在截断输入文本序列时丢失了许多有用的上下文,所以效果不如高效的Transformer变种。
效率对比实验,Fastformer的效率最好。
交互函数的影响,element-wise product的效果优于concatenate和add。
参数共享实验,query-value的参数共享和不同层的参数共享不影响效果,但是不同头节点的参数共享影响效果。
4. Conclusion
Fastformer,它是一种基于加性注意力的 Transformer 变体,可以有效地以线性复杂度处理长序列。
5. Notes
Reference
[1] Wu C, Wu F, Qi T, et al. Fastformer: Additive Attention Can Be All You Need[J]. arXiv preprint arXiv:2108.09084, 2021.