本文目录导读:

我来详细解释一下 Linformer 这个模型。
核心问题:Transformer的平方复杂度
原始的Transformer模型(如BERT、GPT)的核心是自注意力机制,它的计算复杂度是 O(n²),n 是输入序列的长度。
- 原因:自注意力需要计算一个 n x n 的注意力矩阵,表示序列中每个token与其他所有token之间的关系。
- 后果:当处理长文本(如整本书、长文档、高分辨率图像)时,
n会变得非常大,导致计算和内存需求急剧上升,变得不可行。
Linformer的解决方案:线性注意力
Linformer(论文:"Linformer: Self-Attention with Linear Complexity",2020年)的核心思想是:将 n x n 的注意力矩阵投影(压缩)到一个更小的 k x n 的矩阵上,从而将复杂度从 O(n²) 降低到 O(n)。
它通过引入两个额外的线性投影矩阵(或一个,取决于实现细节)来实现这一点。
核心机制:低秩近似(Low-Rank Approximation)
Linformer基于一个关键发现:Transformer的自注意力矩阵通常是低秩的。
- 低秩意味着注意力矩阵中的信息有大量冗余,我们可以用一个更小的矩阵来近似表示它,而不会丢失太多关键信息。
- Linformer利用这个特性,在计算注意力之前,将序列长度维度
n压缩到一个更小的维度k(称为投影维度或瓶颈维度)。
工作原理(简化版):
-
标准自注意力:
Attention(Q, K, V) = softmax(Q @ K^T / sqrt(d)) @ VQ, K, V都是n x d的矩阵 (d是隐藏层维度, n是序列长度)。Q @ K^T得到一个n x n的矩阵,复杂度是 O(n²)。
-
Linformer自注意力:
- 它引入了两个 可学习的线性投影矩阵
E和F,大小都是k x n(k << n)。 K_projected = E @ K(将n x d的 K 投影为k x d)V_projected = F @ V(将n x d的 V 投影为k x d)- 然后计算注意力:
Attention_Linformer(Q, K, V) = softmax(Q @ K_projected^T / sqrt(d)) @ V_projected Q @ K_projected^T矩阵的大小是n x k,而不是n x n。
- 它引入了两个 可学习的线性投影矩阵
复杂度分析:
- 标准 Transformer:
- 计算
Q @ K^T:O(n²d) - softmax 和乘以 V:O(n²d)
- 总复杂度:O(n²d)
- 计算
- Linformer:
- 投影
E @ K和F @ V:O(nkd) (因为E是k x n,K是n x d) - 计算
Q @ K_projected^T:O(nkd) (因为 Q 是n x d,K_projected是k x d) - softmax 和乘以
V_projected:O(nkd) - 总复杂度:O(nkd)
- 当
k是一个固定的常数(128 或 256),复杂度就从 O(n²) 变成了 O(n)(线性复杂度)。
- 投影
关键优势
- 线性复杂度:这是最核心的优势,处理长序列时的内存和计算瓶颈被有效缓解。
- 理论保证:论文证明了为什么低秩近似是有效的,并给出了在多大程度上可以压缩(
k取多大)才能保持性能的理论分析。k与序列长度n成对数关系 (k ~ log(n))。 - 性能保持:在多个长文本基准测试(如文本分类、问答)上,Linformer 在将复杂度降至线性的同时,能够达到与原始 Transformer 相当甚至更好的性能。
局限性
- 实现复杂性:与简单的
softmax(QK^T)V相比,增加了一个额外的投影步骤,实现稍复杂。 - 信息损失:虽然低秩近似有效,但毕竟是一种压缩,理论上,对于某些极端的、注意力模式高度复杂且非低秩的任务,可能会有信息损失,不过在实际应用中很少出现。
- 位置编码:原始的 Linformer 论文需要特殊处理位置编码(采用可学习的位置编码,因为压缩操作会影响绝对位置信息)。
| 特性 | 标准 Transformer | Linformer |
|---|---|---|
| 时间复杂度 | O(n²) | O(n) |
| 核心思想 | 直接计算完整的 n x n 注意力矩阵 | 对 K 和 V 进行低秩投影,计算 n x k 注意力矩阵 |
| 长序列友好 | 较差,n 增大时迅速崩溃 | 非常友好,n 增大时线性增长 |
| 性能 | 基准性能 | 通常与基准持平或略好 |
| 应用场景 | 通用自然语言处理,短文本 | 长文本理解、文档摘要、对话系统、图像处理 |
在LLaMA等现代模型中的位置
需要注意的是,Linformer 本身并没有成为现在主流大语言模型(如 LLaMA, GPT-4, Qwen, DeepSeek)的标准组件。
现代 LLM 解决长序列问题的方法主要有另一条路线:FlashAttention 和 Grouped-Query Attention (GQA) 以及 Rotary Position Embedding (RoPE)。
- FlashAttention:通过硬件优化(分块计算、IO 感知),在算法层面保持 O(n²) 的前提下,大幅度减少了实际运行时间,让它变得“快得像线性一样”。
- RoPE + GQA:RoPE 有效处理了相对位置信息,GQA 减少了参数量。
Linformer 更像是一个开创性的思想实验和理论贡献,它证明了从算法层面将 Transformer 复杂度降至线性的可行性,虽然它没有直接成为主流,但其 “利用低秩性对注意力矩阵进行压缩” 的思想,启发了后续一系列线性复杂度的 Transformer 变体(如 Performer, Nystromformer 等)。
一句话总结:Linformer 通过将巨大的 n x n 注意力矩阵巧妙地压缩到更小的 n x k 矩阵上,成功将 Transformer 的二次复杂度降到了线性,特别擅长处理超长序列,虽然它没有成为主流 LLM 的标准配置(被 FlashAttention 等更优方案取代),但其低秩近似的思想对后续研究有重要启发。