MemFold: Learning Compact Soft Memory for Long-Context Personalization via On-Policy Optimization
Jingxuan Wu, Yuzhe Yang, Yiqiao Huang, Chengzhi Liu, Qingni Wang, Chengxuan Qian, Shutong Wu, Jiawei Zhang, Xin Eric Wang
cs.CL
2026-09-29
MemFold将长对话压缩为256个固定向量,用GRPO和教师重打分直接训练生成行为,128K场景准确率从约24%升至94%。
长期陪伴用户的助手得记住用户说过什么、哪些偏好还成立、哪些已经被推翻。把历史存成文字(textual memory)会让输入随对话变长,每轮都要重新编码;把历史压缩成固定数量的连续向量(soft memory)能固定接口大小,但以往的压缩器只是被训练去还原原文或模仿参考答案,这两种目标打分的对象都是模型自己没生成过的句子。压缩器学会了保留信息,却没人检验 reader 拿着压缩后的记忆到底会不会把偏好用到真实回答里。论文举的失败例子很直接:某个回答整体通顺、话题也对,但其中一句推荐违反了用户明确表达过的偏好,这种局部错误用整段打分的 reward 根本定位不到。
MemFold 分两部分。第一步把可变长的对话历史 C,在给定当前问题 x 的条件下,由带 LoRA 的 backbone 写成一段贴合问题的文字记忆 M;再用 Perceiver 风格的压缩器,用 K 个可学习的 latent query 把 M 聚合成固定的 K 个连续向量 Z,作为 reader 实际读取的记忆接口,接口大小和历史长度无关。
第二步训练 reader 怎么用这 K 个向量,而不是怎么重建它们。训练用两个信号配合:
两个信号加权相加训练同一个 LoRA adapter,压缩器和教师全程冻结;推理阶段教师被整个拿掉,模型只靠 (x, Z) 回答。
在 Qwen2.5-3B-Instruct、Qwen2.5-7B-Instruct、Qwen3-4B 三个 backbone 上,MemFold 在 PersonaMem-32K 和 PersonaMem-128K 上准确率全部拿到第一,优势随历史变长而扩大:
| Backbone | 设置 | Full Text | 最强基线 | MemFold |
| Qwen2.5-7B-Instruct | PersonaMem-128K | 24.0 | MemGen 78.5 | 94.4 |
| Qwen2.5-3B-Instruct | PersonaMem-128K | 4.3 | xRAG 65.2 | 89.4 |
| Qwen3-4B | PersonaMem-128K | 21.9 | MemGen 58.4 | 88.4 |
全文本基线在 128K 这种长历史下反而崩了(Qwen2.5-3B 只剩 4.3%),说明单纯把所有文字塞进去对这类模型并不管用。迁移到没训练过的 PrefEval 和 LongMemEval 上,MemFold 同样保持最高或持平最高,比如 Qwen3-4B 在 PrefEval 上 19.9% 对 MemGen 的 13.3%,LongMemEval 上 32.4% 对 GRPO 的 26.0%。token 开销方面,MemFold 和全文本基线基本持平甚至更低,因为 writer 仍要通读一次历史来生成 M,真正的省钱点不在 token 数,而在 reader 侧的行为更准。
消融实验显示:去掉 reader 初始化这一步损失最大(128K 上 Mean 准确率从 87.9 掉到 46.2);去掉 GRPO 比去掉 OPD 掉得更多(87.9→70.2 vs 87.9→86.9),说明任务收益主要来自 GRPO,OPD 是较小的补充增益。把软记忆换成直接喂文字记忆的「Text-Space Control」效果和 MemFold 相近但没有超过它,说明在这套训练流程下,固定预算压缩本身不是主要瓶颈。内存干预实验把匹配的软记忆换成打乱顺序或清空的记忆,准确率大幅下降,说明 reader 确实依赖这条记忆的具体内容作答,而不是单靠任务先验蒙对。
对需要做长期记忆助手的团队,这篇提供了一个可执行的信号:压缩记忆要不要用强化学习训练,直接看训练完的 reader 能不能用它答对题,而不是看压缩器能不能把原文还原出来。固定 K 个向量的做法意味着上下文越长、接口开销越不敏感,这对 128K 级别的长会话场景尤其有用,因为全文本方案在这个长度上精度明显掉队。教师蒸馏部分不需要额外采样、只对学生已采的 token 重打分,训练成本增量有限,工程上比标准知识蒸馏更便宜。
PrefEval 上历史本身很短,压缩省下的 token 不够抵消构造记忆的开销,这个场景里 MemFold 的优势也最窄(在 Qwen2.5-7B 上只打平最强基线)。教师并不是准确率的 oracle,它自己在任务上的准确率明显低于训练完成后的学生,论文靠「有界的单 token 影响力」来防止教师的错误被整体继承,但没有进一步量化教师犯错的 token 具体被放大了多少。记忆干预实验证明 reader 依赖记忆内容,但论文自己也说明它没有证明 reader 真的能在历史里有多次偏好修订时,分辨出哪个版本是当前生效的。K 从 128 到 512 的扫描曲线整体偏平,K=512 时效果还下降,论文把这归因于压缩器和 reader 按固定预算初始化、没有针对每个 K 重新调参,留了一个没有彻底排除的混淆因素。评测用 Gemini 模型做 judge 打分,引入了评测模型本身的误差来源。