URL
https://arxiv.org/pdf/2006.04768.pdf
TL;DR
- 本方法——
Linformer 使用矩阵的低秩来降低原始 Transformer 的 Multi-HEAD Attention 计算的时空复杂度
- 不同
Transformer 结构的复杂度

Algorithm
headi=Attention(QWiQ,KWiK,VWiV)=softmax[dkQWiQ(KWiK)T]VWiV
其中: K,Q,V∈Rn×dm WiQ,WiK∈Rdm×dk
所以: softmax[dkQWiQ(KWiK)T]∈Rn×n ,n 表示序列长度,所以原始 Transformer 使用的 Multi-HEAD Attention 的时空复杂度为 O(n2)
- 将 KWiK,VWiV∈Rn×dk 投影到 EiKWiK,FiVWiV∈Rk×dk ,其中
k 是一个常数,时空复杂度变成了 O(n) ,其中,E、F 都是可学习的投影矩阵, E,F∈Rk×n
- headiˉ=Attention(QWiQ,EiKWiK,FiVWiV)=softmax[dkQWiQ(EiKWiK)T]FiVWiV
- 投影矩阵
E、F 可共享参数,分为:
- Headwise sharing: Ei=E, Fi=F, for each layer
- Key-value sharing: Ei=E=Fi, for each layer
- Layerwise sharing: E,F, layer sharing
理论依据与结果
- 特征值的长尾分布

- 效果(与 BERT-base 对比)

Thoughts
- 文中提到不使用奇异值分解来得到低秩矩阵的原因是:奇异值分解会引入额外的计算量,并且无法共享参数
- 代码被打包为了
linformer 的 pip 包,可以在 torch 框架下直接使用