TokMem: One-Token Procedural Memory for Large Language Models¶
会议: ICLR 2026
arXiv: 2510.00444
代码: https://github.com/MANGA-UOFA/TokMem
领域: 信息检索
关键词: 程序性记忆, 记忆 token, 持续学习, 上下文压缩, 工具调用
一句话总结¶
提出 TokMem,将可复用的任务程序编译为单个可训练记忆 token,既作为程序索引又作为生成控制信号,无需长 prompt 即可高效调用 1000+ 任务程序,且支持无遗忘的持续扩展。
研究背景与动机¶
- 长 prompt 的效率瓶颈: 现代 LLM 依赖 prompt 控制行为,但长 prompt 构造成本高、自注意力平方级计算开销大、占用上下文窗口导致截断
- 检索增强的局限: RAG 等方法虽外部化了 prompt,但检索内容仍以文本形式占用上下文窗口,且常用程序每次都需重新解读
- 认知科学启发: 人类的程序性记忆(如骑自行车)通过练习编译为高效技能,无需每次重新读取陈述性知识
- 核心思想: 将频繁使用的任务程序"压缩"存储到专用记忆 token 中,实现常量开销的程序调用
方法详解¶
整体框架¶
TokMem 在 LLM 词表中添加 \(l\) 个特殊 token 作为记忆库:
\[M = \begin{bmatrix} \bm{m}_1^\top \\ \vdots \\ \bm{m}_l^\top \end{bmatrix} \in \mathbb{R}^{l \times d}\]
每个 \(\bm{m}_i\) 是可训练向量,代表一个唯一程序,无直接文本形式。
关键设计 1: 记忆 Token 训练¶
训练序列包含程序-响应对,记忆 token 与文本 token 交替排列:
\[\bm{a} = (q_1, \ldots, q_k, \underbrace{a_{m_i}, a_{r_{i1}}, a_{r_{i2}}, \ldots}_{\text{程序-响应对}}, \underbrace{a_{m_j}, a_{r_{j1}}, \ldots}_{\text{程序-响应对}}, \ldots)\]
使用标准 next-token prediction 损失训练,仅更新记忆嵌入,骨干 LLM 和原始 token 嵌入完全冻结:
\[\mathcal{L}(\bm{a}; M) = -\sum_{i>k} \log \Pr(a_i \mid \bm{a}_{<i}; M)\]
关键设计 2: 推理时记忆路由¶
给定查询 \(q\),模型从最终隐状态 \(h_k\) 预测记忆 token 分布:
\[P(a_{m_i} \mid q) \propto \exp(\text{logit}(m_i \mid h_k))\]
- 选择概率最高的记忆 token 附加到查询后,自回归生成响应
- 支持多步程序链接:生成一段响应后预测下一个记忆 token
- 若无匹配程序,所有记忆 logit 保持低值,自动回退到普通文本生成
关键设计 3: 重正则化(Renormalization)¶
持续学习中新嵌入易出现 norm 膨胀,压制旧记忆。解决方案:
\[\bm{m}_i \leftarrow \bm{m}_i \cdot \frac{\bar{n}_I}{\|\bm{m}_i\|_2 + \varepsilon}, \quad i \in A\]
其中 \(\bar{n}_I = \text{mean}_{j \in I} \|\bm{m}_j\|_2\) 为已有记忆的典型范数。保持新嵌入方向不变,仅对齐其幅度,计算开销 \(O(|A| d)\) 可忽略。
参数隔离特性¶
- 每个程序的知识完全存储在独立 token 嵌入中
- 新程序可持续添加而不干扰现有程序
- 天然支持持续学习,无灾难性遗忘
实验¶
原子记忆召回:Super-Natural Instructions(ROUGE-L)¶
| 模型 | 方法 | 10任务 | 200任务 | 1000任务 | 平均 |
|---|---|---|---|---|---|
| Qwen 0.5B | RAG | 50.4 | 38.8 | 34.7 | 40.7 |
| Qwen 0.5B | Fine-Tuning | 52.4 | 40.6 | 43.2 | 45.2 |
| Qwen 0.5B | Replay Memory | 52.4 | 47.2 | 46.7 | 48.7 |
| Qwen 0.5B | TokMem | 52.8 | 49.3 | 50.0 | 50.7 |
| Llama 3.2 3B | RAG | 60.0 | 45.8 | 39.9 | 47.3 |
| Llama 3.2 3B | TokMem | 68.0 | 61.2 | 61.5 | 62.9 |
| Llama 3.1 8B | TokMem | 75.4 | 65.1 | 64.8 | 67.0 |
记忆路由准确率¶
| 方法 | 10任务 | 200任务 | 1000任务 |
|---|---|---|---|
| Sentence-BERT (RAG) | 99.6 | 88.7 | 79.7 |
| TokMem (Qwen 0.5B) | 99.4 | 97.4 | 94.7 |
| TokMem (Llama 8B) | 99.8 | 98.9 | 97.5 |
组合记忆召回:工具调用(APIGen)¶
| 模型 | 方法 | 参数量 | 工具选择 Avg | 参数 F1 Avg |
|---|---|---|---|---|
| Llama 1B | ICL | - | 16.4 | 0.4 |
| Llama 1B | RAG | - | 16.9 | 2.7 |
| Llama 1B | Fine-Tuning | 0.85M | 9.0 | 68.6 |
| Llama 1B | TokMem | 0.10M | 86.2 | 68.9 |
关键发现¶
- TokMem 在 1000 任务时仍保持 94.7% 路由准确率(最小模型),远超 RAG 的 79.7%
- 训练效率极高:仅 10 个样本即可超越 RAG 的 500 样本性能
- 可训练参数量远少于 LoRA 微调(0.10M vs 0.85M),但性能相当或更优
- 持续学习中无灾难性遗忘,性能随任务增加仅缓慢下降
- 支持多步程序链接,在工具调用场景中可依次召回 parse→search→format
亮点¶
- 概念优雅: 将程序性知识压缩为单个 token,认知科学和工程实现完美结合
- 参数隔离: 每个程序独立存储,天然无遗忘,完美适配持续学习场景
- 极致高效: 常量大小的记忆开销,消除了长 prompt 的平方级计算成本
- 路由准确率惊人: 即使在 0.5B 模型上管理 1000 个任务也保持 94.7% 准确率
局限性¶
- 程序需要预先定义和训练,不支持零样本程序创建
- 单个 token 的信息容量有限,复杂程序可能无法完全编码
- 嵌入空间的容量上限未知——当程序数量极大时路由可能退化
- 重正则化是后处理操作,可能无法完全解决持续学习中的分布漂移
- 仅在 QA 和工具调用场景验证,对创意生成、长文本等任务的适用性未探索
相关工作¶
- 上下文工程: CoT、RAG、MemGPT——均以文本扩展 prompt,占用上下文窗口
- 参数高效微调: LoRA、Adapter——更新骨干参数,可能遗忘
- 软提示: Prompt tuning、Prefix tuning——训练连续提示向量,但通常不建模为独立记忆单元
- 认知科学: ACT-R 理论中的程序性记忆——技能通过练习编译为高效模块
- TokMem: 首次将 NLP 中的 token 化思想应用于程序性记忆管理
评分¶
| 维度 | 分数 |
|---|---|
| 创新性 | ★★★★★ |
| 理论深度 | ★★★☆☆ |
| 实验充分性 | ★★★★☆ |
| 实用价值 | ★★★★☆ |
| 写作质量 | ★★★★☆ |