线性注意力把整段历史压成一个矩阵记忆。Mamba2 会给所有记忆均匀衰减,DeltaNet 能精确替换单条记忆——但两者各自都有一种场景直接失灵。 这篇论文把它们合成一条规则,并配了一套能在 GPU 上跑得动的分块并行算法。
线性注意力的状态 S 本质是一张 key→value 关联表,容量受模型维度限制;序列一长,不同的 key 就会挤进同一片空间,论文称之为 memory collision。
Mamba2 每步把所有关联乘上一个衰减系数——想只忘掉其中一条,做不到,只能「全部一起淡出」。
DeltaNet 能精确地把某条 key 的旧 value 擦掉再写新的——但上下文切换时想整片清空,它也做不到。
Gated DeltaNet 的做法是:先乘 α 做全局缩放,再按 β 做定向擦写。α=0 就是清空,β 控制替换强度,一条公式覆盖两者的全部行为。
先把这个「矩阵记忆」讲清楚,后面的两条路才看得懂。
标准注意力的代价是 KV cache 随序列长度线性增长。线性注意力换了个思路:把历史压进一个固定大小的状态矩阵,用一次矩阵乘法读出。
关键在于:v kᵀ 是一个秩 1 的关联。状态 S 就是这些关联的叠加,能存下多少条互不干扰的关联,取决于 S 的秩上限,也就是模型维度 d。
当需要记住的 key-value 对多于 d,它们无法再保持正交,只能叠在同一个方向上。此时再查询某个 key,取回的是多条关联的混合值——检索精度直接崩掉。这不是训练不够,是结构性的容量上限。
于是问题变成:如何在固定大小的状态里,尽量少地发生碰撞?论文的答案是——让模型学会「什么时候该整体淡出,什么时候该精确擦除某一条」。这就引出后面两种机制。
这是全文最关键的一张对照:两者的强项,恰好是对方的盲区。
每步把所有关联统一乘上衰减系数 αt,再叠加新的 v·kᵀ。
强项:能快速整体淡出,换话题时干净利落。
盲区:它不区分哪条关联重要。想只丢掉过期的那一条?做不到——只能连有用的信息一起衰减。
先沿当前 key 方向擦掉旧值,再写入新值,写入强度由 β 控制。
强项:单条关联可以精确替换,不会被旧值污染。
盲区:它没有全局清空能力。上下文切换时,上一段的内容会长期残留在状态里,干扰后续检索。
S-NIAH 是「针在草堆里」的检索任务:上下文里埋一个 key-value 对,最后用 key 问 value。论文设计了三个变体,分别压测三种能力。切换下方基准,可以看到谁在哪一栏塌掉。
三条结论正好对应上面两张卡片的盲区:
论文的全部创新,就是下面这一行。
拆开看就是三步:
论文从在线学习的角度给了它一个统一解释:这个更新等价于带自适应权重衰减的测试时 SGD。α 就是权重衰减项,β 就是学习率。Mamba2 只有衰减没有回归目标,DeltaNet 只有回归没有衰减——Gated DeltaNet 两者都有。
下面是一个最简化的记忆模拟。四个槽位代表四条 key 的关联,每个槽位存一个二维 value。切换规则、拖动 α / β,点按钮写入。
建议按这个顺序试:
模拟里四个 key 取的是正交的 one-hot 向量,所以「槽位」和「维度」一一对应,擦除项 (I − β k kᵀ) 恰好只作用于目标槽位。
真实模型里 key 是稠密向量,不会严格正交——擦除一个方向时,会不可避免地轻微影响其他方向,这正是「近似擦除」的含义,也是碰撞问题的根源。模拟保留了机制层面的因果,省略了这种交叉干扰。
另外,论文里 α 和 β 都是由当前输入动态生成的标量(经过线性投影 + 激活),不是全局常数;模拟里用滑块代替,是为了让你手动感受它们的作用范围。
逐 token 递推意味着训练必须串行,等于放弃 GPU。论文的第二个贡献是一个分块并行算法。
递推式 St = f(St-1) 天然是串行的:训练时无法像注意力那样把一个 batch 的整条序列并行算完。论文的解法和线性注意力圈的通用做法一致——分块(chunkwise):
块内递推里反复出现 (I − β k kᵀ) 的连乘。论文用 WY 表示把它整理成一个三角矩阵求逆的形式(UT 变换),从而把整个块的计算改写成几次标准矩阵乘法——这才是 GPU 真正擅长的形状。
附录 A 给了扩展 WY 表示在门控情形下的推导,这是让「门控 + delta」不至于比纯 delta 慢太多的原因。
结果就是论文报告的吞吐:Gated DeltaNet 与 DeltaNet 几乎同速,说明加入门控的额外开销很小;两者都比 Mamba2 慢 2–3K tokens/s,代价来自更复杂的转移矩阵。混合架构(把部分层换成滑窗注意力)反而比纯线性层更快,所以在他们的最终模型里用了混合。
论文 Figure 1:两种混合排布 + 单个 block 的内部结构。
值得注意的是,这个 block 的宏结构几乎照搬 Llama:仍是「token mixer + SwiGLU MLP」的堆叠,只是把 self-attention 换成了 gated delta rule。这意味着它可以作为一个即插即用的替换层,而不需要重新设计整个网络。
所有模型同为 1.3B 参数、100B tokens 的 FineWeb-Edu,条件完全对齐。
| 模型 | Wiki ppl ↓ | LMB ppl ↓ | 常识推理 avg ↑ | LongBench ↑ |
|---|---|---|---|---|
| Mamba2 | 16.56 | 12.56 | 54.89 | 13.5 |
| DeltaNet | 17.71 | 16.88 | 52.14 | 13.6 |
| Gated DeltaNet | 16.42 | 12.17 | 55.32 | 16.6 |
| Transformer++ | 18.53 | 18.32 | 52.25 | 11.0 |
| Gated DeltaNet-H1 | 16.07 | 12.12 | 56.40 | — |
| Gated DeltaNet-H2 | 15.91 | 12.55 | 56.18 | — |
几个值得注意的点:
论文自己的数据里,就能读出三条边界。
S-NIAH-2 在 8K 时 Gated DeltaNet 只有 29.6,S-NIAH-3 在 4K 只有 27.6。门控和 delta 优化的是有限容量内的信息管理,并没有扩大容量本身。序列继续变长,碰撞依然会发生。
从 Table 3 看,H1 / H2 在几乎所有指标上都优于纯 Gated DeltaNet。也就是说,局部精确检索这一点,还是得靠少量真注意力兜底。工程上直接上纯线性层并不是最优解。
门控几乎不增加开销(与 DeltaNet 同速),但整体仍比 Mamba2 慢 2–3K tokens/s,因为转移矩阵更复杂。如果场景对吞吐极度敏感、且不要求强检索,Mamba2 仍有优势。
一句话总结:Gated DeltaNet 解决的是「同样的记忆容量下,怎么管得更好」,而不是「把容量做大」。这也是为什么 Qwen3-Next、Kimi Linear 这类模型选择把它当作混合架构里的「线性那几层」,而不是完全取代注意力。