← 返回资料站  /  Continuous Learning
论文 测试时学习

Dynamic Cheatsheet: Test-Time Learning with Adaptive Memory

动态小抄:用一份自我维护的记忆做测试时学习
一句话Stanford 组给黑盒 LLM 外挂一份跨查询持续读写的文本"小抄":每答完一题就让模型自己提炼可复用的策略/代码进小抄,后续查询带着小抄推理。无梯度、无标签,GPT-4o 在 Game of 24 从 10% 升到 99%,Claude 3.5 Sonnet 在 AIME 2024 从 23.3% 升到 50%。

这是什么

LLM 部署后每个查询都是孤立事件:上一题刚推导出的技巧、刚踩过的坑,下一题全部重来。Dynamic Cheatsheet(DC)针对这一点提出一个非常轻量的方案——给模型配一份外部文本记忆(cheatsheet),在推理过程中由模型自己往里写、自己修剪,不动模型参数、不需要 ground-truth 标签或人工反馈,对 GPT-4o/Claude 这类只有 API 的黑盒模型直接可用。

整个框架就是两个 prompt 角色:generator 带着当前 cheatsheet 答题,curator 看完这轮问答后更新 cheatsheet(留下可迁移的策略和代码片段,删掉错的、合并冗余的)。作者在 AIME、GPQA-Diamond、Game of 24、Math Equation Balancer、MMLU-Pro(工程/物理)上测了 GPT-4o、Claude 3.5 Sonnet 及其小型号,2025-04 挂 arXiv,S2 显示被引 107 次,代码仓库 276 star、仍在维护(2026-03 还有 push,已支持 Gemini/Grok/DeepSeek/Ollama 等)。

DC-Cu 的完整流程:左边 generator 拿当前 cheatsheet + 输入查询生成答案;右边 memory curator(同一个 LM、不同 prompt)评估这轮输出,把有用、可泛化的策略写回 cheatsheet,更新后的小抄传给下一个查询。全程没有梯度更新,也没有 ground-truth 标签。
DC-Cu 的完整流程:左边 generator 拿当前 cheatsheet + 输入查询生成答案;右边 memory curator(同一个 LM、不同 prompt)评估这轮输出,把有用、可泛化的策略写回 cheatsheet,更新后的小抄传给下一个查询。全程没有梯度更新,也没有 ground-truth 标签。

机制与做法

DC-Cu:生成 + 事后策展的累积记忆

基础版 DC-Cumulative 是一个两步循环:第 i 题时 generator 拿到 (x_i, M_i) 生成答案 ỹ_i;然后 curator 拿 (M_i, x_i, ỹ_i) 产出 M_{i+1}。curator 没有标准答案,要自己判断这轮解法是否正确、是否值得泛化成条目,同时负责改写/删除旧条目、保持整份记忆紧凑。生成和策展用同一个模型、不同 prompt 即可。

这与"把全部历史对话塞进 context"(FH 基线)是两回事:FH 在 AIME 2024 上让 GPT-4o 从 20% 掉到 13.3%(上下文膨胀、噪声淹没要点),而 DC 靠策展把有用的东西压缩成短条目,同任务 DC-RS 拿到 40%。

主结果概览。读法:每组三根柱依次是最弱基线 BL、公平基线 DC-∅(同样的结构化 prompt+代码执行但无记忆)、最佳 DC 变体。看"记忆"的净贡献要比后两根:AIME 2024 上 Claude 是 36.7→50.0,Game of 24 上 GPT-4o 是 19→99(记忆贡献确实巨大),而 Math Eqn. Balancer 的 56.4→97.8 之外,44.8→56.4 那截其实是 prompt 的功劳。
主结果概览。读法:每组三根柱依次是最弱基线 BL、公平基线 DC-∅(同样的结构化 prompt+代码执行但无记忆)、最佳 DC 变体。看"记忆"的净贡献要比后两根:AIME 2024 上 Claude 是 36.7→50.0,Game of 24 上 GPT-4o 是 19→99(记忆贡献确实巨大),而 Math Eqn. Balancer 的 56.4→97.8 之外,44.8→56.4 那截其实是 prompt 的功劳。

DC-RS:先检索合成再答题

DC-Cu 有两个短板:记忆在答题之后才更新(当前题的信息用不上),且不保留历史 input-output 对。DC-RS 改成三步:先用 text-embedding-3-small 按 cosine 相似度检索 top-3 条最相近的历史问答,curator 把它们与现有记忆合成出本题专用的 cheatsheet,然后 generator 再答题。在题目分布多样的基准(GPQA-Diamond)上 DC-RS 明显好于 DC-Cu(Claude:68.7% vs 61.1%);在题型高度同构的序列任务上 DC-Cu 反而常是最优(AIME 2024/2025)。

对照组设计值得注意:除了裸 prompt 基线 BL,还有 DC-∅(同样的结构化 generator prompt + Python 代码执行,但记忆恒为空)、DR(只检索原文不合成)、FH(全历史拼接)。DC-∅ 用来剥离"记忆"本身的贡献——这一点在读数字时很关键,见 reality。

什么时候有效、什么时候没用

生效的典型模式是"发现一次、复用到底":GPT-4o 在 Game of 24 前几题里发现 Python 暴力枚举解法并存入小抄,之后每题直接取用,10% → 99%;Math Equation Balancer 同理(两家模型都到 98-100%)。也就是说 DC 吃两个前提:测试序列内题目结构相似,且基础模型有能力产出值得存的正确解。

反例作者也写得很清楚:小模型(GPT-4o-mini、Claude 3.5 Haiku)本来就很少答对,记忆里堆的是错误策略,DC-Cu/RS 在 GPT-4o-mini 的 AIME 2024 上甚至低于基线;DeepSeek R1、o1 这类 reasoning 模型输出太冗长,收益也很小或不稳定。GPT-4o 在 MMLU-Pro 上还出现了退化(工程题 53.2% → DC-RS 51.2%)。另外 curator 有时偷懒写"Previous content [...] preserved"而不完整重写记忆,长期会让小抄质量退化——这是 LLM 长文本生成弱于理解的老问题。

关键结果

实证核查

扎实代码、prompt、数据和逐题运行日志基本全部公开,论文自己就把"水分来源"(DC-∅ 基线、小模型失败、GPT-4o 退化案例)摆在正文表格里,失败模式写得比多数论文诚实。要注意的是头条数字都是与最弱基线比,且旗舰 Game of 24 结果的运行日志恰好没在仓库里。
论文脚注称 "We release all our data, results, and code"。
大体属实:仓库 data/ 与 results/ 下有 AIME(3 套)、GPQA_Diamond、MMLU_Pro 两科、MathEquationBalancer 共 7 个任务的逐题 JSONL(如 results/AIME_2024/ 含 claude-3-5-sonnet / gpt-4o 各 5 种方法的完整运行记录),prompt 模板也全在 prompts/。但例外是最出名的 Game of 24(10%→99%):全仓库与它相关的只有 embeddings/GameOf24.csv,data/ 和 results/ 里都没有它的输入或运行日志,这条头条数字无法直接从仓库复核。
摘要头条:GPT-4o 在 Game of 24 上 10%→99%、Claude 在 AIME 上"准确率翻倍以上"。
这些对比的分母都是最弱的 minimal-prompt 基线(BL)。论文自己的 Table 1 显示,换成公平的 DC-∅ 基线(同样的结构化 prompt + Python 代码执行、只是没有记忆)后收益明显缩水:Math Eqn Balancer 上 GPT-4o 是 BL 50→DC-∅ 88→DC 100,即 50 分提升里 38 分来自 prompt+代码执行而非记忆;AIME 2020-24 上 Claude 是 6.7→30.1→40.6,大头同样来自 DC-∅。记忆本身的净贡献真实存在(Game of 24 DC-∅ 19% vs DC-RS 99% 差距确实主要归记忆),但摘要/README 引用的倍数是按最有利口径算的。
DC 是普适的测试时学习方法。
论文正文自己给了反证据(这点值得肯定):GPT-4o-mini 在 AIME 2024 上 DC-Cu/RS 低于基线,GPT-4o 在 MMLU-Pro 工程/物理上也退化,R1/o1 收益极小(均见 Table 3 与 Sec 5)。另外所有实验是 temperature=0 的单次运行,AIME 每套只有 30 题,没有方差报告,且效果依赖题目顺序(作者在 Sec 4.6 承认顺序/课程会影响结果)。GitHub issues 共 5 条、无复现失败报告,但也说明尚无严肃第三方复现记录;S2 被引 107 次、后续 memory/test-time learning 文献(如各类 agent memory 综述)普遍将其作为基线引用。

与我们方向的关系

对 continual-learning 方向,这篇是"无梯度测试时学习"最简洁的参照系:整个方法就是两个 prompt + 一段外部文本,却把该范式的核心矛盾全暴露出来了——curator 没有标签、只能自我判断对错,所以记忆质量完全受制于基础模型能力(小模型会把错误策略越攒越多);记忆更新是串行的、每题重写整份小抄,token 成本 5 倍于基线且难并行。后续工作(各类 agentic memory、经验库方法)基本都在回应这几个问题,读它能快速建立坐标。

可直接借鉴的点:(1) DC-∅ 这种"同 prompt 无记忆"的消融基线设计,做任何 memory 类实验都应该抄——不设它很容易把 scaffold 的功劳算进记忆头上;(2) "发现一次、复用到底"说明这类方法在题型同构的流式场景收益最大,评测时要区分同构序列与多样分布(DC-Cu vs DC-RS 的分工正对应这两种场景);(3) curator 偷懒截断记忆("[...] preserved")是我们自己做 LLM 维护长记忆时必然会撞上的坑,值得在实现里显式防御(结构化外部库而非整段重写)。

阅读笔记

论文写作上 headline 数字全按 BL 口径,读的时候一律先去 Table 1 对 DC-∅ 那一列。仓库 README 比论文新:已支持 claude-sonnet-4-5、grok-4-1、gemini-2.5 等 2025-2026 的新模型,想跑实验直接用 run_benchmark.py 即可,但注意 Game of 24 的数据要从 meta-prompting(Suzgun & Kalai 2024)那边拿。S2 显示 venue 为 EACL(应为后续录用),arXiv 版本标注 ICML 2025 模板 accepted 选项。

材料清单

TeX 源码
已存档:Raw/dynamic-cheatsheet/source/
代码仓库github.com/suzgunmirac/dynamic-cheatsheet
276★ · 最近推送 2026-03-12
逐题运行日志github.com/suzgunmirac/dynamic-cheatsheet/tree/main/results
7 个任务 × 各模型 × 各方法的完整 JSONL,可直接复核 Table 1(Game of 24 除外)
Prompt 模板github.com/suzgunmirac/dynamic-cheatsheet/tree/main/prompts
generator 与 curator 的全部 prompt,想移植 DC 到自己任务上主要就是改这几个文件
Game of 24 数据来源github.com/suzgunmirac/meta-prompting
论文用的 100 道 Game of 24 题来自作者此前的 meta-prompting 工作

同类条目