Linformer: 线性复杂度的自注意力机制.

作者通过实验发现Transformer中的自注意力矩阵大多是低秩的。实验对RoBERTa预训练模型不同层的自注意力矩阵进行奇异值分解,并绘制奇异值的累积分布曲线,如下图所示。

本文中作者提出了Linformer,在自注意力的计算过程中引入低秩分解,从而实现近似线性的计算复杂度。

若记Q,K,VRn×dQ,K,VRn×d,则标准的Attention计算为:

Attention(Q,K,V)=softmax(QKTd)VAttention(Q,K,V)=softmax(QKTd)V

其中矩阵乘法QKTQKT的计算复杂度为O(n2d)=O(n2)O(n2d)=O(n2)。作者为KKVV引入了低秩映射E,FRk×nE,FRk×n,使得注意力计算变为:

Attention(Q,K,V)=softmax(Q(EK)Td)(FV)Attention(Q,K,V)=softmax(Q(EK)Td)(FV)

从而使得矩阵乘法的计算复杂度降低为O(kn)O(kn)

作者还为Linformer设计了一些参数共享方法以提升模型的效率和表现。实验设置了三种层级的参数共享:

  1. Headwise:多头自注意力中每一层的所有自注意力头分别共享EEFF的参数。
  2. Key-Value:每一层的所有自注意力头的EEFF共享同一参数E=FE=F
  3. Layerwise:所有层共享投影矩阵EE

模型使用RoBERTa结构,训练使用BookCorpus和英文维基百科(共约33003300M单词)作为预训练语料库,采用mask语言模型作为预训练任务。实验结果如下:

实验使用困惑度作为模型评估指标。困惑度越低,则模型表现越好。实验分析如下: