Transformer 把上下文窗口越做越长,却解不开平方级计算成本的死结:每多 1k token,显存就翻四倍。Google 在 NeurIPS 2025 抛出的 Titans 架构换了一条思路 ——不再硬撑注意力矩阵,而是让模型在推理阶段 “长” 出一块可写的神经长期记忆,用增量更新的方式把百万级上下文压进一个 MLP,召回率还能稳在 90% 以上。
1. 神经长期记忆模块:一块会 “动” 的 MLP
Titans 的核心不是外挂向量库,而是在模型内部新增一个完全独立的 MLP,参数规模仅为主模型的 2%–4%。关键区别在 “生命周期”:
| 组件 | 训练后 | 推理时 |
|---|---|---|
| 主模型权重 | 固定 | 固定 |
| 记忆 MLP | 初始化 | 实时更新 |
推理阶段每来一个新 token,先算「惊奇度」—— 记忆 MLP 对输入的梯度范数。梯度越大,说明信息越出乎意料,优先写入长期记忆;预期之内的噪音直接走滑动窗口注意力,不进记忆。写入方式不是插向量,而是用小批量梯度下降就地调整 MLP 权重,学习率 1e-4 左右,单步更新仅耗时 0.3 ms(A100 上 4k 隐状态)。
2. 压缩与遗忘:把 “日记” 变成 “年鉴”
记忆 MLP 的权重随序列线性增长,如果不加控制,显存照样爆掉。Titans 给了两道阀门:
- 动量累积:把最近 64 步的梯度做指数移动平均,避免偶发噪音把记忆带偏。
- 自适应遗忘门:对每条隐状态维护一个衰减系数 λ∈[0.96,0.999],按「上次被检索到的时间」指数衰减;λ 低于阈值 0.01 时直接清零。实验显示,遗忘系数 0.94 能在 200 万 token 后把有效记忆量压回初始大小的 1.3 倍,实现近无损压缩。
3. 三种接入姿势,为什么 MAC 最适合百万召回
记忆模块产出的是一段固定长度的「历史摘要向量」。Titans 给出三种融合方案:
- MAC(Memory as Context)—— 把摘要向量直接拼接到当前 K/V,交给注意力。
- MAG(Memory as Gate)—— 用门控把摘要向量与滑动窗口输出加权求和。
- MAL(Memory as Layer)—— 把记忆 MLP 当成独立层,先压缩历史再进注意力。
在 200 万 token「大海捞针」任务里,MAC 召回率 92%,MAG 85%,MAL 80%。原因也直白:MAC 让注意力一次性看到全量历史摘要,不需要额外门控再学一遍融合权重;序列越长,摘要信息越密集,MAC 的优势越明显。
4. 直接可落地的工程参数
如果你打算在 7B 模型上复现 MAC 方案,以下参数可直接抄:
- 记忆 MLP:2 层,隐状态 2^18(≈262k),参数量 ≈ 190 M,占主模型 2.7%。
- 惊奇度阈值:梯度范数 Top-20% 才写入,控制写入频率 ≈ 12%。
- 更新学习率:1e-4,动量 0.9,批大小 1(单 token 在线更新)。
- 遗忘系数:λ=0.94,每 1k token 做一次衰减清零检查。
- 显存占用:每 1k token 新增 0.8 MB,200 万 token 约 1.6 GB,线性可控。
训练阶段用 PyTorch 的 torch.func.functional_call 把记忆 MLP 单独抽出来,推理时把更新后的权重用 state_dict 回写即可;若需跨会话持久,直接序列化记忆 MLP 的 state_dict,体积仅 750 MB,可秒级加载。
5. 风险与局限
- 硬件上限:论文实验最长到 2M token,再往上遗忘曲线是否仍成立尚未验证;显存虽线性,但 8M token 仍需 ≈6 GB 专属显存。
- 跨会话持久:目前仅验证单次推理,若要做多轮 Agent,需要额外工程把记忆权重存盘并重载,且不同任务之间需做「记忆隔离」防止污染。
- 写入放大:极端场景(每 token 都高惊喜)会把更新频率拉到 100%,吞吐下降 35%;需结合业务阈值调低灵敏度。
6. 结论:把记忆从外挂 RAG 变成内生参数更新
Titans 用一块可写的 MLP 告诉业界:长期记忆不必依赖外部向量库,也不必重新训练主模型。推理阶段就地更新、选择性遗忘、线性成本扩展,让「百万 token 无损召回」第一次在大规模场景里跑通。对于需要超长上下文的法律、金融、代码仓库级 Agent,MAC 方案提供了即插即用的底座—— 只要会保存和加载一个 190 M 的「记忆包」,就能让模型在下一秒「记得」两年前的那次对话。
参考资料
[1] 36Kr,《谷歌祭出 Transformer 杀手,8 年首次大突破》,2025-12-08。
[2] 量子位,《谷歌新架构突破 Transformer 超长上下文瓶颈》,2025-12-05。