1. 问题与统一记号
问题: 名字太多, 边界不清. 长上下文方法的命名来自不同的社区. 状态空间模型 (SSM) 来自控制和信号处理, 线性注意力来自 Transformer 的近似, fast weights 和 delta rule 来自 1990 年代的神经网络研究, TTT 来自视觉里的分布偏移, RWKV 来自开源社区对 RNN 的重新设计. 同一个数学对象常被不同论文叫成不同名字, 不同的对象又常被放在同一个名字下.
例如「线性注意力」既可以指 Katharopoulos 等 (2020) 带特征映射和归一化的版本, 也可以指去掉这两项的最简版本, 还常被用来泛指所有矩阵状态的线性 RNN. 「TTT」在第 4 章指在测试样本上做自监督更新, 在本章指一种序列层或一种长上下文方法. 「Titans」有时被说成 Transformer 的替代, 它的主架构 MAC 里其实有注意力.
这些方法可以沿四个问题比较: 状态是什么, 写入时擦掉什么、写入什么, 读出时如何查询, 以及状态的生命周期有多长.
统一记号. 设第 个 token 投影出 query , key , value , 维度都取 . 状态记 , 输出记 . 矩阵状态的方法用列向量约定, , 读出 .
一个方法由三件事确定: 的形状 (随长度增长还是固定), 写入 , 读出 . TTT layer 的论文把所有序列层拆成初始状态, 更新规则, 输出规则三部分, 这里沿用的就是这个拆法.
从不压缩到先擦后写. 全注意力: 不压缩的状态. 全注意力的状态是到目前为止所有的 , 即 KV cache. 写入是追加, 读出是
每个历史 token 都原样保留, 读出时用 softmax 权重从中检索. 它什么都不丢, 所以精确检索强. 代价是状态大小和每个 token 的读出开销都随 线性增长, prefill 总计算 .
手算 KV cache 的大小. 设一个 32 层, 隐维 4096, 不用 GQA 的模型, FP16 存储. 每个 token 每层存 和 两个 4096 维向量:
128K token 的上下文就是 , 而且这只是一条序列. GQA, MLA 一类方法压缩的是这个数, 不改变它随长度线性增长的性质.
FlashAttention 经常被误归到「高效注意力」里和线性方法并列. 它是精确注意力的一种实现: 通过分块和重计算, 避免把 的注意力矩阵写到显存, 额外显存从 降到 , 显存读写次数也大幅减少, 计算量仍是 , 输出与式 (1) 完全一致. 它不压缩状态, 不改变模型.
滑动窗口: 截断的状态. Longformer 等使用的滑动窗口注意力只保留最近 个 token 的 KV. 状态大小固定为 个 token, 每个 token 的开销 , prefill 总计算 , 对 是线性的. 写入是追加加淘汰最旧的一个, 丢掉的是窗口外的全部信息, 一点不剩. 多层堆叠时感受野可以超过 , 但信息要逐层传递.
滑动窗口在本章出现了很多次: LaCT 和 TTT-E2E 都用它处理块内依赖, Gated DeltaNet 和 Mamba-2 的混合版本也用它. 原因是它在局部精确, 在远程完全缺失, 正好和压缩类状态的特性互补.
线性注意力: 只写不擦. 去掉 softmax, 式 (1) 变成 . 交换求和与乘法的顺序:
历史被压成一个 的矩阵, 写入是加一个外积, 读出是一次矩阵乘. 每个 token 的开销 , 与长度无关. 5.1 的定理 1 证明了 TTT-Linear 用 batch GD 时就是式 (2).
式 (2) 是最简版本. Katharopoulos 等的原始写法保留了核函数和归一化: 把 换成特征映射的内积 , 取 保证非负, 输出是
分子是式 (2) 的矩阵状态, 分母多维护一个 维向量 , 作用是 softmax 分母的替代, 让各个 value 的权重之和为 1. 状态从一个矩阵变成一个矩阵加一个向量, 写入和读出仍是 . 论文报告在很长序列的自回归预测上比 softmax 注意力快到 4000 倍. 后来的 GLA, DeltaNet 等工作大多去掉了 和分母, 改用对 做归一化来控制数值范围, 所以下文都从式 (2) 出发.
Schlag, Irie & Schmidhuber (2021) 指出式 (2) 就是 fast weight programmer: 是 fast weights, 外积是写入. 他们同时分析了容量. 若所有 key 两两正交且单位长度, 在 时恰好返回 , 但 维空间里最多只有 个两两正交的向量. 写入超过 对关联后, key 之间必然有非零内积, 读出就会混入其他 value. 5.1 的手算里同一个 key 写两次, 读出 , 就是这种干扰的最极端情况.
1.1. 固定状态有多大
和前面 KV cache 的手算对照. 仍取 32 层, 隐维 4096 的模型, 实际实现里矩阵状态按 head 分开: 设 32 个 head, 每个 head 维度 , 每个 head 的状态是 个数. 每层 32 个 head 共 个数, FP16 下 1 MB; 32 层合计 32 MB. 这个数与上下文长度无关.
KV cache 每个 token 0.5 MB, 所以长度到 个 token 时两者一样大; 到 128K 时, KV cache 是矩阵状态的 2048 倍. 反过来看, 128K 个 token 的全部信息要挤进 32 MB, 平均每个 token 只分到 256 字节, 约 128 个 FP16 数, 远小于一个 4096 维的隐向量. 有损是必然的, 问题只在丢什么.
按 head 切分还有一个容量上的后果: 每个 head 的 key 只有 维, 上一段说的「最多 对无干扰关联」在这里是每个 head 128 对. 这也是 5.2 里 LaCT 强调状态大小 (每块最大 , 占参数 40%), TTT-E2E 选择更新完整 MLP 而不是多头小 MLP 的原因之一.
再算 decode 时每个 token 在这一层上的计算. 全注意力: 算 个分数 要 次乘加, 加权求和 又是 次, 合计约 次乘加. 按 head 切分的线性注意力: 每个 head 写入一个外积 是 次乘加, 读出 又是 次, 个 head 合计 次. 两者相等时 . 也就是说, 只看这一层, 上下文超过 128 个 token 后线性注意力每个 token 就更省, 到 128K 时省 1000 倍. 投影矩阵和 MLP 的计算两者相同, 不随 变, 所以整个网络的差距比这一层小. TTT-MLP 和 TTT-E2E 的写入是一次反向传播, 常数比 大得多, 交叉点相应后移.
门控: 先衰减再写. 给旧状态乘一个衰减, 让早期信息逐渐淡出, 为新信息腾出容量. Gated DeltaNet 论文 Table 1 把几种方法的写入规则列在一起 (这里统一成列向量约定):
| 方法 | 写入规则 |
|---|---|
| 线性注意力 | |
| Mamba-2 | |
| DeltaNet | |
| Gated DeltaNet |
是由输入决定的衰减 (门), 是由输入决定的写入强度.
Mamba-2 的 是每个 head 一个标量; GLA 的衰减是对角矩阵 , 每个维度一个衰减率 (5.2 的 LaCT 对照表里列了它的写入规则). RetNet 用的是与输入无关的固定衰减: 每个 head 一个常数 , 按 ( 是 head 编号) 取值, 编号小的 head 衰减快, 只看近处, 编号大的 head 衰减慢, 能看得更远. 因为 不依赖输入, 一个 token 进来时状态被衰减多少是预先定好的, 与它的内容无关. 门控解决了「状态被写满」的问题, 代价是衰减对所有旧信息一视同仁: 一个重要的早期关联和一个无关的早期关联以同样速率淡出.
Mamba: 从 SSM 出发. Mamba (Gu & Dao, 2023) 的出发点是状态空间模型. 它对每个输入通道维护一个 维状态 (默认 ), 离散化后的递推是 , 输出 , 其中 , 步长 和 都由当前输入决定, 这就是「选择性」. 是对角的, 所以 是逐元素的衰减. 把所有通道的状态并起来, 它也是一个矩阵状态, 写入是「衰减加外积」的形式, 只是 key 和 query 的角色由 和 扮演. Mamba-2 把 限制成标量乘单位阵, 证明了这种 SSM 与一类带掩码的线性注意力等价 (structured state space duality), 于是得到上表里的形式.
选择性有一个工程代价. 随输入变化后, 原先 S4 一类 SSM 可以把递推展开成一个固定卷积核做 FFT 的办法用不了, 只能按时间递推. Mamba 的做法是写一个硬件感知的并行扫描: 把 读进 GPU 的片上 SRAM, 在 SRAM 里完成离散化和扫描, 只把输出 写回显存, 中间状态 不落显存, 反向时重算. 论文报告推理吞吐是同规模 Transformer 的 5 倍, Mamba-3B 在语言建模上好于同规模 Transformer, 与两倍规模的 Transformer 相当. 这些数字的口径是论文里的预训练困惑度和零样本常识类下游任务, 长文检索类任务不在其中.
5.1 里 TTT layer 论文对照的就是 Mamba: 在 Books 上 16k 之后 Mamba 的逐位置困惑度变平. 门控衰减让早期信息淡出是一个可能的原因, 下一节 Gated DeltaNet 论文对 Mamba-2 检索结果的解释也是「衰减历史太快」.
delta rule: 先擦后写. DeltaNet 的写入规则可以展开成
是当前状态对 的预测, 是预测误差. 写入量与误差成正比: 状态已经存了正确的 , 就不写; 存了错的, 就按误差修正. 5.1 的式 (5) 已经说明, 式 (3) 就是 TTT-Linear 在 上走一步梯度, . DeltaNet 的并行训练算法见 Yang 等 (2024).
Gated DeltaNet 把衰减和 delta rule 合在一起. 论文给出的理由是两者互补: 门控能快速整体清空记忆, delta rule 能针对单个关联精确修改. 论文用 RULER 的 S-NIAH 做了一个 1.3B 的案例分析 (Table 2), 三个观察:
- S-NIAH-1 (重复的合成上下文, 考长期保持): DeltaNet 在所有长度上接近满分; Mamba-2 在 2K 之后明显下降, 因为它衰减历史太快; Gated DeltaNet 下降较少.
- S-NIAH-2/3 (真实文章做上下文, 要存很多可能有用的信息): DeltaNet 在长序列上大幅下降, 原因是不会清空, 固定状态里的信息互相叠加, 难以区分; Mamba-2 和 Gated DeltaNet 好得多.
- S-NIAH-3 (value 从数字换成 UUID, 考复杂模式的记忆): Mamba-2 下降快, Gated DeltaNet 更好, 说明 delta rule 记忆能力更强.
这三条把写入规则的差别落到了可测的现象上: 只衰减, 记不久; 只擦写不衰减, 装满后互相干扰; 两者都有, 在两类任务上都不差.
在线学习的视角. Gated DeltaNet 论文还按 Liu 等 (2024, Longhorn) 的框架, 把每条写入规则写成对某个在线学习目标的一步最优化. 例如 DeltaNet 的目标是 , 前一项要求新状态别离旧状态太远, 后一项要求新状态对 的输出往误差方向移动. 线性注意力的目标里第二项是 , 不含误差, 所以只写不擦. 论文还指出, Gated DeltaNet 的 相当于在 SGD 更新里加了一个自适应的权重衰减, 并提到同期的 Titans 在 RNN 的推理阶段 SGD 更新里加了权重衰减.
这个视角把「门控 RNN」和「推理阶段做梯度下降」放进了同一个框架. 下一节的 TTT 和 Titans 就是把这里的 换成非线性模型.
RWKV: 从按通道衰减到广义 delta rule. RWKV 的几个版本跨越了上面好几类. RWKV-4 (Peng 等, 2023) 的时间混合是按通道指数衰减的加权平均, 状态是每个通道上的累积量, 属于向量状态加固定衰减. RWKV-5/6 (Eagle 和 Finch) 改成矩阵状态, RWKV-6 的衰减由输入决定, 与 GLA 同属门控一类.
RWKV-7 (Peng 等, 2025) 的写入规则是 (论文的行向量约定)
是由输入决定的向量衰减 (比 Gated DeltaNet 的标量更细), 是一个秩一的修正项, 承担 delta rule 里擦除旧值的作用. 论文把它称为广义 delta rule: 衰减按通道, 学习率按通道 (向量值的 in-context learning rate), 擦除用的 key 与写入用的 key 可以不同. 转移矩阵仍是「对角加秩一」, 所以可以沿用 DeltaNet 的并行算法. 论文证明 RWKV-7 能做状态追踪, 能识别所有正则语言, 在标准复杂度猜想下超过了 Transformer 所属的 类. 模型规模 0.19B 到 2.9B, 训练语料 3.1T token. 论文报告 2.9B 模型在多语言任务上取得 3B 规模的新最好成绩, 英文下游任务与当时 3B 最好水平持平, 而训练用的 token 明显少于对照模型.
所以「RWKV」指的机制随版本变化, 讨论时要说是哪一版.
梯度下降写入: TTT, Titans, LaCT, TTT-E2E. ### 1.2. TTT-Linear 与 TTT-MLP
5.1 已经说明: 是线性的, 不加 LN 和残差, 块大小 1, 就是 DeltaNet. TTT-Linear 在此基础上加了 LN 和残差 (让 变成非线性), 块大小 16, 可学习的初始化和学习率. TTT-MLP 把 换成两层 MLP, 状态不再是一个矩阵, 而是一个小网络的全部权重. 到这里, 写入规则不再能写成「对角加低秩」的矩阵递推, 上面那些线性 RNN 的并行算法不再适用, 只能靠 mini-batch 和 dual form.
两个变体的状态大小可以直接算. TTT-MLP 的隐层是输入的 4 倍, 每个头的状态是 和 两个矩阵, 共 个元素 (不计偏置), 是 TTT-Linear 的 的 8 倍. 5.1 的实验里, 在匹配训练 FLOPs 的条件下, TTT-MLP 在短上下文比 TTT-Linear 差, 在长上下文更好; 但 MLP 结构让墙钟时间比 FLOPs 涨得快, Sun 等把内存 I/O 列为 TTT-MLP 的主要问题. 状态变大换来的容量, 只有在上下文足够长时才用得上.
Titans. Titans (Behrouz, Zhong & Mirrokni, 2024) 来自 Google Research. 它的长期记忆模块 是一个 层的 MLP, 在推理阶段学习 key-value 关联, 损失是
最朴素的写入是 , 论文把梯度叫做「惊讶度」: 输入与过去越不同, 梯度越大, 越值得记. 只用当前梯度有一个问题: 连续几个惊讶的 token 之后梯度可能变得很小, 紧随其后的重要信息会被错过. Titans 把惊讶度拆成「过去的惊讶」和「此刻的惊讶」, 再加遗忘:
就是带动量的梯度下降里的动量项, 控制过去惊讶的衰减, 控制此刻惊讶的比重, 是遗忘门 ( 不遗忘, 清空), 三者都由输入决定. 读出不更新权重, 只做前向: , . 并行训练的做法与 TTT 的 mini-batch 相同: 块内梯度都相对块开始时的权重求, 动量项是以块内梯度为输入的线性递推, 可以用并行扫描算.
把式 (6) 退化到矩阵记忆 , 不用动量 (), 对照 Gated DeltaNet. 代入式 (5) 的梯度 :
Gated DeltaNet 是 (这里 是保留率). 令 , , 两者的擦除项对上了, 写入项差一个系数 : Gated DeltaNet 的衰减只作用在旧状态上, 新写入的 不衰减; 式 (7) 的写入强度 与擦除强度绑在一起. 所以矩阵版, 无动量的 Titans 与 Gated DeltaNet 是同一族写入规则, 参数化略有不同. Titans 多出来的是动量和深层 MLP 记忆, 论文认为矩阵记忆等价于在线线性回归, 只能拟合线性依赖, 深层记忆 () 表达力更强.
Titans 在长期记忆之外还有 persistent memory: 一组与输入无关的可学习向量, 拼在序列开头, 推理阶段固定, 存的是任务相关的知识. 长期记忆怎么接进架构, 论文给了三种:
- MAC (memory as context): 序列分段, 每段内用全因果注意力; 用当前段的 query 从长期记忆里读出历史信息, 和 persistent memory 一起拼在段前作为注意力的上下文. 注意力再决定哪些信息写进长期记忆.
- MAG (memory as gate): 滑动窗口注意力当短期记忆, 神经记忆当长期记忆, 两路用门控合并.
- MAL (memory as layer): 把记忆模块当作一层, 与注意力层串联.
论文报告 Titans 在语言建模, 常识推理, 需要回忆的任务, needle-in-a-haystack, 时间序列和 DNA 建模上好于 Transformer 和现代线性 RNN 及其混合版本, 并能扩展到超过 2M 的上下文. TTT-E2E 论文把 Titans 归入与 TTT-KVB 相同的构造: 每层一个以 KV 重建为损失的可更新模块, 加滑动窗口注意力.
LaCT 与 TTT-E2E. LaCT …11577 tokens truncated… token。线性无门状态允许代数减外积,带衰减要乘上后续转移,非线性梯度记忆通常只能重放。
比较真实运行与删除反事实,得到单条 token 对最终输出的因果贡献。它比梯度热图更接近「这条信息是否被使用」。代价随重放长度增长,可在评测样本上离线完成。
交换读取与写入组件. 混合模型常同时有窗口 attention 与压缩状态。关闭写入但保留状态读出,观察已有历史还能服务多久;关闭读出但继续写入,随后重新打开,检查信息是否确实存下。若关闭读出期间的 token 在重新打开后可被查询,写入通道独立工作;若不能,写入可能依赖读出反馈。
对 TTT/Titans,还可固定内损失、随机化 query 投影,或保留 query、打乱训练 target。前者破坏读取地址,后者破坏写入内容。性能下降模式能把「学会写」与「学会读」拆开。
谱视角下的记忆时间与干扰. 线性递推的记忆由传播矩阵决定. 对一般线性时变状态 ,位置 的写入传播到 的系数为 。该乘积的奇异值描述不同方向保存或放大的程度。所有奇异值都快速衰减,模型只有短记忆;少数方向接近一,状态保留低维长期摘要;方向大于一,微小误差与噪声也会被放大。
特征值只适合固定且正规矩阵。数据依赖 一般不对易,逐步特征值都小于一也可能出现瞬态放大。长序列稳定性更应估计实际矩阵乘积的最大奇异值,或用随机向量连续乘 Jacobian。SSM、RWKV 与门控 delta 网络都能放在这个传播框架下;TTT/Titans 则把 换成优化更新对参数状态的 Jacobian。
多个时间尺度对应多组衰减接近一的方向。若任务要求同时保存句内、段落与文档级信息,单一标量衰减很难兼顾。通道化衰减、复数模态和输入选择门提供更丰富的谱。时间尺度丰富仍不等于随机访问:模型知道某个方向保留很久,不代表能从同一方向分离许多相似事实。
delta 擦除是方向选择性遗忘. 线性 delta 更新可写成 。旧状态右乘 ,只削弱键方向,正交方向保持不变。与全局标量衰减相比,它能在更新某个地址时少伤害无关地址。
若键归一化且 , 方向的旧预测被完全擦除,再写入新值; 只做部分替换。键相关时,擦除方向也覆盖其他关联。连续键 形成一串投影乘积,顺序会影响最终状态,因为这些投影一般不对易。
这条式子解释了 Gated DeltaNet、现代 RWKV 矩阵状态和 TTT-Linear 的共同核心,也指出它们的差别来源。门控 delta 直接生成 ;TTT 用损失梯度得到等价项;带额外衰减的方法还在方向擦除外施加全局遗忘。对比实验若没有匹配这些门与衰减,只匹配矩阵大小,机制仍未对齐。
动量引入第二个传播系统. Titans 或带动量 TTT 的状态包含 。线性化后,它是一个分块递推系统:
参数记忆与动量互相耦合,稳定性由整个分块矩阵决定。 大会延长梯度方向的寿命,也可能形成复特征值和振荡; 拉回参数,却未直接消除动量。只分析 的范数会漏掉一半动力学。
可对固定小网络显式计算局部 Jacobian 谱,再用长序列实测验证。若谱预测稳定而实际爆炸,非线性轨迹已离开局部区域;若局部就存在大于一的方向,降低学习率、动量或增加遗忘具有直接依据。
不同路线还需要在上下文长度扫描中寻找交叉点. 短序列上 exact attention 的 kernel 更成熟, 固定状态的理论复杂度优势未必转化为延迟;长度扩大后 KV 与二次计算成为主要成本, 递归状态才逐渐占优. 同时画 loss、精确检索、状态字节和端到端速度, 能避免用单一复杂度符号决定架构选择.
参考文献
- Sun, Y., Li, X., Dalal, K., et al. (2024). Learning to (Learn at Test Time): RNNs with Expressive Hidden States. arXiv:2407.04620.
- Behrouz, A., Zhong, P., & Mirrokni, V. (2024). Titans: Learning to Memorize at Test Time. arXiv:2501.00663.
- Yang, S., Kautz, J., & Hatamizadeh, A. (2025). Gated Delta Networks: Improving Mamba2 with Delta Rule. ICLR 2025.
- Yang, S., Wang, B., Zhang, Y., Shen, Y., & Kim, Y. (2024). Parallelizing Linear Transformers with the Delta Rule over Sequence Length. NeurIPS 2024.
- Katharopoulos, A., Vyas, A., Pappas, N., & Fleuret, F. (2020). Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention. ICML 2020.
- Schlag, I., Irie, K., & Schmidhuber, J. (2021). Linear Transformers Are Secretly Fast Weight Programmers. ICML 2021.
- Gu, A., & Dao, T. (2023). Mamba: Linear-Time Sequence Modeling with Selective State Spaces. arXiv:2312.00752.
- Dao, T., & Gu, A. (2024). Transformers are SSMs: Generalized Models and Efficient Algorithms Through Structured State Space Duality. ICML 2024.
- Yang, S., Wang, B., Shen, Y., Panda, R., & Kim, Y. (2024). Gated Linear Attention Transformers with Hardware-Efficient Training. ICML 2024.
- Sun, Y., Dong, L., Huang, S., Ma, S., Xia, Y., Xue, J., Wang, J., & Wei, F. (2023). Retentive Network: A Successor to Transformer for Large Language Models. arXiv:2307.08621.
- Peng, B., et al. (2023). RWKV: Reinventing RNNs for the Transformer Era. Findings of EMNLP 2023.
- Peng, B., et al. (2024). Eagle and Finch: RWKV with Matrix-Valued States and Dynamic Recurrence. arXiv:2404.05892.
- Peng, B., Zhang, R., Goldstein, D., et al. (2025). RWKV-7 "Goose" with Expressive Dynamic State Evolution. arXiv:2503.14456.
- Dao, T., Fu, D. Y., Ermon, S., Rudra, A., & Ré, C. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. NeurIPS 2022.
- Beltagy, I., Peters, M. E., & Cohan, A. (2020). Longformer: The Long-Document Transformer. arXiv:2004.05150.
- Tandon, A., Dalal, K., Li, X., et al. (2025). End-to-End Test-Time Training for Long Context. arXiv:2512.23675.
- Zhang, T., Bi, S., Hong, Y., et al. (2025). Test-Time Training Done Right. arXiv:2505.23884.