← 返回资料站  /  Continuous Learning
论文 记忆机制

Memory-R1: Enhancing Large Language Model Agents to Manage and Utilize Memories via Reinforcement Learning

Memory-R1:用 RL 训练 LLM 学会增删改记忆
一句话把外部记忆的管理(ADD/UPDATE/DELETE/NOOP)和使用(先筛选再作答)各训练成一个 RL agent,只用 152 条 QA 就在 LoCoMo 上比 Mem0/MemoryOS 等基线(作者重实现版)高出约 20-35% 相对值;但发布满一年代码仍未开源,所有基线数字都是作者自己重新实现的。

这是什么

LLM 本质上是无状态的,靠外部 memory bank 做长程对话记忆是当前主流做法(Mem0、A-Mem、MemoryOS 等)。但这些系统的记忆写入策略基本是 prompt 里写死的启发式规则:什么时候新增、什么时候合并、什么时候删除,全靠模型 in-context 自己拿捏。论文用一个很直观的例子说明这有多脆弱——用户先说领养了狗 Buddy,后来又说领养了 Scout,vanilla 管理器把两条信息当成矛盾,DELETE 掉 Buddy 再 ADD Scout,导致'领养了几只狗'这种问题答错。

Memory-R1 的做法是不再手写规则,而是用 outcome-driven RL 把记忆策略学出来:训练两个专门的 agent——Memory Manager 负责对每条新信息选择 ADD/UPDATE/DELETE/NOOP 并输出改写后的记忆内容,Answer Agent 负责从检索到的 60 条候选记忆里先做 memory distillation(过滤噪声)再作答。奖励信号只有一个:最终答案的 Exact Match,不需要任何人工标注的记忆操作标签。

这篇是 2025 下半年'用 RL 学记忆策略'路线的代表作(arXiv 2025-08,后被 ACL 2026 接收,S2 引用已 180+),作者来自 LMU Munich / TUM / Cambridge 等。它把 memory 管线从'工程设计问题'转成了'策略学习问题',这个 framing 影响了一批后续工作(如 Memory-R2)。

两阶段管线。上(蓝):记忆构建——对话逐 turn 抽取信息、检索旧记忆,Memory Manager 选择 ADD/UPDATE/DELETE/NOOP 维护 memory bank;下(绿):回答——RAG 检索 60 条候选,Answer Agent 先做 memory distillation 过滤再生成答案。两个 agent 都用 PPO/GRPO 以最终答案 EM 为 reward 微调。
两阶段管线。上(蓝):记忆构建——对话逐 turn 抽取信息、检索旧记忆,Memory Manager 选择 ADD/UPDATE/DELETE/NOOP 维护 memory bank;下(绿):回答——RAG 检索 60 条候选,Answer Agent 先做 memory distillation 过滤再生成答案。两个 agent 都用 PPO/GRPO 以最终答案 EM 为 reward 微调。

机制与做法

两个 agent、一个 EM 奖励

整条管线分两阶段(见 pipeline 图)。阶段一记忆构建:每个对话 turn 先做信息抽取,再检索 memory bank 里的相关旧条目,Memory Manager 以 (新信息 x, 检索到的旧记忆 M_old) 为输入,输出操作 o 和新内容 m'。阶段二回答:对每个问题用相似度 RAG 检索 60 条候选记忆(沿用 Mem0 的设置),Answer Agent 先显式列出'有用的记忆'再生成答案。

训练 Memory Manager 时把 Answer Agent 冻结:Manager 执行操作后把更新过的 memory bank 交给冻结的 Answer Agent 答题,答案 EM 对错就是 Manager 的 reward。也就是说记忆操作的好坏完全由下游 QA 结果间接评判,没有对操作本身的监督。作者也试过给 Answer Agent 加中间监督(用 <memory> 标签对齐 gold 记忆),没有稳定收益,最后就用纯 EM。

动机案例:用户先后领养 Buddy 和 Scout 两只狗。中列 vanilla in-context 管理器把新信息误判为矛盾,DELETE 旧记忆再 ADD,导致答'1 只狗';右列 RL 微调后的 Manager 用一次 UPDATE 合并两条事实,Answer Agent 过滤 60 条检索噪声后答对'2 只'。
动机案例:用户先后领养 Buddy 和 Scout 两只狗。中列 vanilla in-context 管理器把新信息误判为矛盾,DELETE 旧记忆再 ADD,导致答'1 只狗';右列 RL 微调后的 Manager 用一次 UPDATE 合并两条事实,Answer Agent 过滤 60 条检索噪声后答对'2 只'。

PPO vs GRPO,以及 SFT 对照

两个 agent 各自用 PPO 和 GRPO 训了两个版本,基于 VERL 框架,4 张 H100(14B 用 8 张),lr 1e-6,训练时温度 1.0、评测时贪心解码。GRPO 版整体更强:LLaMA-3.1-8B 上 overall F1/B1/J 达 45.0/37.5/62.7,PPO 版 41.1/32.9/57.5;训练曲线上 GRPO 收敛更快但最终 reward 相近。

一个有意思的对照是 Memory-SFT:同架构同数据,但改成对 GPT-5 生成的轨迹做 behavior cloning。结果 SFT(overall J 58.8)输给 GRPO(62.7)——有强 teacher 的模仿学习仍不如结果驱动的 RL,这是论文对'为什么非要 RL'的直接回答。

reward 设计消融也值得注意:用 LLM-as-a-Judge 当 reward 会把 J 分刷到 63.6,但模型学会输出冗长答案,F1/B1 反而崩(33.7/23.4),所以最终选了 EM。这提醒我们这套评测里 J 指标是可以被答案长度 game 的。

数据效率与泛化

训练数据小得惊人:LoCoMo 按 1:1:8 切分,只有 152 条训练 QA、81 条验证、1307 条测试(去掉了 adversarial 子集)。只在 LoCoMo 上训,零样本迁移到 MSC 和 LongMemEval 也有一致提升;换 Qwen-2.5 的 3B/7B/14B backbone 结论都成立。

消融显示三个组件都有贡献(LLaMA + GRPO):去掉 RL 训练的 Memory Manager,F1 从 45.0 掉到 37.5;去掉 RL 训练的 Answer Agent 掉到 33.0;去掉 memory distillation 掉到 41.0。另外 Answer Agent 的收益随 Manager 质量放大——把 Manager 换成 GPT-4o-mini,Answer Agent 的 F1 增益从 +10.1 涨到 +19.7,说明两级质量是复利关系。

关键结果

实证核查

有水分方法和消融本身做得规矩,还中了 ACL 2026;但发布一年后代码仍未开源(官方 repo 只有 README),全部基线数字是作者用小模型自行重实现的、明显低于各基线论文原报数字,结果无法被第三方核验。
官方 GitHub repo(yansikuan/memory-r1,124 stars)自 2025-09 起挂着 'Code coming soon',论文称框架基于 VERL 实现、结果可复现。
截至 2026-08-30,repo 内容只有 README.md + LICENSE + assets(gh api contents 验证),最后一次 push 是 2025-09-10。全部 6 个 open issue 里 5 个在要代码(#1、#3-#6,时间跨度 2025-09 到 2026-06)。作者 2026-07-31 在 #6 回复:代码在公司内部服务器上开发,开源审批流程未过。没有代码、没有 checkpoint、没有训练数据构造脚本,任何数字都无法独立验证。
'consistently sets a new state of the art',大幅超过 Mem0、MemoryOS 等基线。
所有基线都是作者用 LLaMA-3.1-8B / Qwen-2.5-7B 重新实现的(tex 源码 Experiments 节明说 're-implemented all baselines')。这些系统原论文用的是 gpt-4o-mini 等更强 backbone——论文源码里被注释掉的段落自己写着 Mem0 原报 LoCoMo J=66.9、Zep J=78.27,均高于本文 Memory-R1-GRPO 的 62.7。换 backbone 重测有公平性理由(要能 RL 微调),但'SOTA'只在'8B 开源模型 + 作者复现'这个口径内成立。另外 v1 版 README 至今宣传 '+48% F1 over prior best'(对比对象是弱的 Mem0 复现),而论文正文最终口径是对 MemoryOS 相对 +28.5%。
152 条 QA 训练即可,且泛化到 MSC、LongMemEval。
训练/测试都来自 LoCoMo(1:1:8 切分),152 条训练样本与 1307 条测试题共享同一批长对话的分布;LoCoMo 本身只有约 10 段对话,train/test 是否按对话隔离论文正文没写清(细节在附录 D)。跨数据集迁移结果只在雷达图和附录中给出,无原始数字表可查。第三方后续工作 Memory-R2(ahmedehabb/Memory-R2,已全量开源代码+HF checkpoint)在同一 setting 下指出 vanilla GRPO 在多 session 记忆任务里存在 rollout-divergence 的 credit assignment 偏差——间接说明本文的单步 GRPO 训练方式有已知缺陷。
被 ACL 2026 接收,S2 引用 180+。
接收信息来自 repo issue #6 中他人祝贺及作者确认(2026-07),S2 venue 字段也显示 ACL;引用数 180(S2, 2026-08)。学术影响力属实,这是 verdict 没有更低的主要原因——但引用高不等于结果被复现过,目前未检索到任何独立复现报告。

与我们方向的关系

对 continual-learning 方向,这篇的核心启发是:记忆管理策略可以不用手工设计,用最终任务的 outcome 信号端到端学出来,而且样本效率可以很高(百级 QA)。'冻结下游 agent、用其表现作为上游操作 reward' 的训练拆分方式,以及 EM 优于 LLM-judge reward 的消融,都可以直接搬到我们自己的记忆/工具管线实验里。

但要复现或跟进,起点不该是这篇(无代码),而是开源的 Memory-R2(github.com/ahmedehabb/Memory-R2,含训练/评测全管线和 7B checkpoint),它同时修了 GRPO 在多 session 场景的 credit assignment 问题。另外注意 LoCoMo 这个基准很小(测试仅 1307 题、对话约 10 段),各家在上面的数字口径混乱(backbone、是否去 adversarial 子集、judge 模型都不统一),横向比较要非常小心。

阅读笔记

论文 Limitations 自认:两个 agent 分开训是为了稀疏 reward 下的稳定性,端到端 multi-agent RL 留作 future work。Memory Manager 的训练数据构造(哪些 turn 配哪些 QA)细节全在附录 D,正文一笔带过。Answer Agent 检索固定 60 条候选沿用 Mem0 设置。延迟方面附录有 latency-accuracy 分析图,RL 版相比 in-context 版没有显著额外开销(同样是一次前向)。

材料清单

TeX 源码
已存档:Raw/memory-r1/source/
官方 repo(仅 README)github.com/yansikuan/memory-r1
124 stars;截至 2026-08 无代码,5 个 issue 在催,作者称卡在公司开源审批
开源替代:Memory-R2github.com/ahmedehabb/Memory-R2
第三方后续工作,全量开源训练/评测管线 + HF 7B checkpoint,并修正 GRPO 在多 session 记忆任务的 credit assignment 偏差;想动手做实验从这里开始
LoCoMo 基准github.com/snap-research/locomo
本文的训练与主评测集;规模很小(约 10 段长对话),注意各论文口径差异

同类条目