论文中,展示了自注意力机制可以被一个低秩矩阵近似,利用这一发现提出了新的自注意力机制,将空间与时间计算复杂度降低到O(n)。
下表是不同transformer架构的复杂度汇总:
理论:
自注意力机制矩阵,context mapping matrix P,是低秩的。
左边的图,将奇异值分解在不同的层和头运用到P, 画出每10K个句子的归一化累积奇异值平均值,结果显示了清晰的lang-tail谱分析,这意味着P的大部分信息可以从前几个最大奇异值中恢复出来。
右边图,可视化了第128个最大奇异值的归一化累积奇异值的热图(共512个)。我们发现较高层的频谱分布比较低层更偏斜,这意味着更多的信息集中在最大的奇异值上,P的秩更低。
对上述频谱结果做出理论分析:。。。
给出一个低秩的P,一个直接的想法是用奇异值分解(SVD)用一个低秩矩阵去近似P。
但是,这个方法需要对每个自注意力矩阵都进行SVD分解,这就增加了额外的计算。于是,作者提出了另外的方法对于低秩近似来避免增加计算。
Model
新的自注意力机制计算输出对于序列长度的时间和空间复杂度都是线性的。
主要的想法是在计算Key和Value时分别加入一个线性投影矩阵。
也就是将K\V降维,N*d ——> k*d,时间空间复杂度是O(nk)
如果k<<N,会极大降低复杂度。
理论比较难。。。
2.对不同头和层选择不同投影层k维度。正如图1,不同头部和不同层的上下文映射矩阵具有不同的频谱分布,高层头部的频谱分布趋于偏斜,这意味着可以为较高层选择较小的投影尺寸k。
3. 也可以选择不同的低维投影方法,而不是简单的线性投影。例如,可以选择平均/最大池,或将内核和步长设置为n/k的卷积。
实验
一、
1.线性投影维度的影响。
(a) & (b):绘制了不同k下标准transformer和Linformer的验证集困惑曲线,随着k增加,表现越来越好。
2.共享投影参数的影响。
(c):n=512下三种权重共享方式。用一个单一的权重矩阵(层级共享)得到的Linformer模型的验证困难性与非共享模型的验证困惑几乎一致。
3.更长序列的影响。
(d):请注意,随着序列长度的增加,即使我们的投影维数是固定的,收敛后的最终困惑仍然是关于相同的。
二、下游结果
虽然Linform的分层共享策略在整个模型上共享一个投影矩阵,但实际上它在所有三种参数共享策略中都表现出了最好的精度,而且,序列长度较长(n=1024,k=256)的Linformer预训练结果与较短长度的预训练结果相似。LINFORFER模型的性能主要取决于投影维数,而不是n/k比。
三、推理时间效率
在各种投影尺寸k和序列长度n范围内,linformer比transformer的推理时间效率更高。左表显示节省的时间。右表显示节省的内存。