线性注意力机制:从标准注意力到 Gated DeltaNet-2
一次搞懂 Transformer 的计算瓶颈、线性注意力的核心思想,以及 2026 年最优雅的改进——解耦擦除与写入。
1. 标准注意力的 O(n²) 问题
Section titled “1. 标准注意力的 O(n²) 问题”Transformer 的核心是注意力机制:对序列中的每个 token,计算它和所有其他 token 的相关性(注意力分数),然后加权汇总信息。
具体来说:
Attention(Q, K, V) = softmax(QK^T / √d) · V这里 Q、K、V 都是 n×d 的矩阵(n 是序列长度,d 是维度)。关键瓶颈在 QK^T——这是一个 n×n 的矩阵,计算量是 O(n²)。
类比:想象你在读一本 1000 页的书,每读一页都要回头看所有之前读过的页,判断哪些和当前页最相关。页数翻倍,每页的”回头工作量”也翻倍,总工作量就是四倍。这就是二次增长。
后果:当上下文从 4K 扩展到 128K token,注意力计算的内存和算力需求增长 1024 倍。这是长上下文模型最大的工程障碍。
2. 线性注意力的核心思想:Kernel Trick
Section titled “2. 线性注意力的核心思想:Kernel Trick”线性注意力的突破口是一个观察:softmax 不是必须的。
我们可以把注意力写成更一般的形式:
Attention = sim(Q, K) · V其中 sim 是任意相似度函数。如果 sim 能分解为两个函数的乘积——即 sim(q, k) = φ(q)·φ(k),那么:
sim(Q, K) · V = φ(Q) · (φ(K)^T · V)先算 φ(K)^T · V(d×d 矩阵,和 n 无关),再乘 φ(Q)。复杂度从 O(n²d) 降到 O(nd²)。
类比:回到读书的例子。与其每页都回头看所有页(O(n²)),不如每读一页时,把关键信息压缩存入一个”笔记本”(d×d 的累积状态),新页只需查笔记本。笔记本大小固定,不随页数增长。
这就是线性注意力的本质:用一个固定大小的”外部记忆”替代逐步增长的注意力矩阵。
3. 记忆更新的问题:擦除与写入的耦合
Section titled “3. 记忆更新的问题:擦除与写入的耦合”线性注意力解决了计算效率问题,但引入了新麻烦:记忆怎么更新?
标准注意力每次都完整重算,不存在”更新”问题。但线性注意力维护的是一个持续变化的记忆状态(类似 RNN 的隐藏状态)。当新信息到来时,旧记忆需要被更新——有些要擦除,有些要写入。
早期线性注意力(如 Linear Transformer)的做法很粗暴:直接累加。新信息叠加上去,旧信息永远不会被擦除。
记忆 += φ(k_t) · v_t^T # 只加不减类比:你的笔记本只有”往上写”的笔,没有橡皮。写满了怎么办?信息越来越模糊。
为了解决这个问题,人们引入了门控机制——一个标量来控制”保留多少旧记忆 vs 接受多少新信息”。
记忆 = β_t · 记忆 + α_t · φ(k_t) · v_t^T一个标量同时控制了擦除(β 越小擦越多)和写入(α 越大写越多)。
问题在于:擦除和写入是耦合的。 用同一个旋钮调两件事,就像用同一个音量键同时控制左右声道——你想要左声道响一点、右声道轻一点,做不到。
具体来说:
- 想擦除某个旧知识点但不想写入新内容 → 不行,α 和 β 是联动的
- 想写入新内容但不想擦除相关知识 → 也不行
- 想选择性擦除某些通道(channel)的信息 → 更不行,标量是全局的
这在长上下文场景下尤其致命:随着序列变长,记忆容量有限,必须精准地”忘记该忘的,记住该记的”。
4. Gated DeltaNet-2:解耦擦除与写入
Section titled “4. Gated DeltaNet-2:解耦擦除与写入”2026 年 5 月,NVIDIA 的研究团队提出了 Gated DeltaNet-2,核心改进极其简洁:把一个标量门拆成两个独立的 channel-wise 门。
记忆 = (1 - e_t ⊙ 记忆) + w_t ⊙ (φ(k_t) · v_t^T)其中:
e_t是擦除门(erase gate),维度是 d,控制每个通道擦除多少w_t是写入门(write gate),维度是 d,控制每个通道写入多少⊙是逐元素乘法
类比:终于有了橡皮和铅笔两件独立的工具。你可以精准擦掉某一行旧笔记,同时在另一行写下新内容。左右声道终于有了独立的音量旋钮。
为什么是 channel-wise 而不是 token-wise?
Section titled “为什么是 channel-wise 而不是 token-wise?”因为不同的语义通道存储不同类型的信息。比如:
- 通道 1-64 存语法信息
- 通道 65-128 存实体信息
- 通道 129-256 存情感信息
当新 token 是个人名时,你应该写入实体通道,但不一定要擦除语法通道。channel-wise 的门控提供了这种精准度。
Gated DeltaNet-2 不仅仅是一个新方法,它统一了两个先前工作:
| 方法 | 擦除控制 | 写入控制 |
|---|---|---|
| Linear Transformer | 无(只加不减) | 累加 |
| Gated DeltaNet | 单标量 β | 单标量 α |
| KDA (Kimi) | 单标量 | channel-wise |
| Gated DeltaNet-2 | channel-wise | channel-wise |
Gated DeltaNet-2 是前三者的超集——通过约束可以退化到任何一个。
5. 为什么这很重要
Section titled “5. 为什么这很重要”在 RULER 的 needle-in-a-haystack 测试中(在长文本中找特定信息),Gated DeltaNet-2 显著超越所有线性注意力基线。原因很直觉:当你能在 128K token 的序列中精准擦除过时信息、写入新信息,你的”记忆笔记本”就不会被垃圾信息淹没。
复杂度仍然是 O(nd²),和线性注意力一样。两个 channel-wise 门只增加了 2d 个参数,几乎可以忽略。
性能逼近标准注意力
Section titled “性能逼近标准注意力”在 1.3B 参数、100B tokens 的规模上,Gated DeltaNet-2 在语言建模、常识推理上的表现接近甚至超过标准 Transformer,同时拥有线性的推理效率。
对未来的意义
Section titled “对未来的意义”随着上下文窗口继续扩大(500K、1M、甚至无限上下文),“如何管理记忆”将成为最核心的问题。Gated DeltaNet-2 给出了一个优雅的方向:不是更大的记忆,而是更精准的遗忘。
| 标准注意力 | 早期线性注意力 | Gated DeltaNet | Gated DeltaNet-2 | |
|---|---|---|---|---|
| 复杂度 | O(n²d) | O(nd²) | O(nd²) | O(nd²) |
| 记忆管理 | 不需要 | 无(只加) | 标量门(耦合) | 双门(解耦) |
| 长上下文 | 受限 | 差 | 中等 | 强 |
| 性能 | 最强 | 弱 | 中等 | 接近标准 |
从”没有记忆管理”到”标量门控”到”解耦双门”,每一步都是对”如何遗忘”这个问题的更深理解。而 Gated DeltaNet-2 的答案最简洁:给擦除和写入各自一个独立的旋钮,问题就解决了。
基于 arXiv 论文 Gated DeltaNet-2: Decoupling Erase and Write in Linear Attention (NV Labs, 2026-05) 撰写