MemFold:AI助手为何总记不住你的偏好,问题出在训练方式
你有没有遇到过这种情况:跟一个客服机器人聊了十次,每次都要重新解释一遍自己的需求,它好像从来没真正"认识"过你。更尴尬的是,有时候它明明记住了你说过的话,却在给建议的时候完全没用上。你三月份说过不喜欢戴智能手表,九月份它推荐健身方案的时候,又把智能手表塞回来了。这不是bug,这是整个长期记忆AI领域一直没...
跟客服机器人聊过十次,每次还得从头讲一遍自己要什么,它好像从没真正“认识”过你。更别扭的是,有时它明明把你以前说的话记住了,给建议时却压根没用上。你三月份提过不喜欢戴智能手表,九月份它推健身方案,又把智能手表塞了回来。
这不是bug。长期记忆AI领域一直没解决好的,正是这件事。
记住和用好,是两件事
有件事容易搞混,得先讲明白:一个AI助手能不能把你说过的话存下来,跟它能不能在合适的时候用上这些话,根本是两种不同的能力。
存储这一环,技术上早就不算难。把聊天记录整理成文档,或者用某种压缩算法把历史对话变成一堆数字,都能做到“记住”。真正难的是,用户问“推荐点健身方式”时,AI能不能想起“哦,这个人之前说过讨厌戴智能手表”,并且真的把这条信息用进回答里,而不是嘴上说用了、实际没用。
论文里举了个挺扎心的例子:评测长期记忆能力时,不少AI模型能准确复述用户偏好是怎么变的,甚至能说清变化原因,可一到真要给建议的环节,它完全不受这个偏好约束,该推荐什么还是推荐什么。还有些时候,用户的拒绝不是直接说“我不要”,而是用比较含蓄的方式表达,AI压根识别不出这是在表达反对。更有意思也更让人无奈的是,有研究专门测试AI会不会“忘记该忘记的东西”,结果发现很多agent还在执行用户后来已经明确否定过的指令。
这就好比你雇了个秘书,TA把你说过的每句话都工工整整记在笔记本上,可真正安排你行程的时候,那本笔记一次都没翻过。记忆和行动之间,隔着一条沟。
两种记忆方式,各有各的毛病
要弄懂MemFold做了什么,先得看看现在主流的两种记忆方案长什么样。
第一种叫文本记忆。顾名思义,就是把历史对话原封不动或者简单整理一下存成文字,用户每次提问,再把这堆文字塞进AI的输入里。好处是人能读懂,改起来也方便,但致命问题在于:历史越长,输入就越长。聊了一年的用户,历史记录可能是聊了一周用户的几十倍,AI每次回答都要把这些文字全部重新处理一遍,又慢又贵。
另一种做法是潜在记忆(Latent Memory),即拿一组数量固定的连续向量来指代整段对话历史——无论聊得多长,最终压出来的向量个数都不变。历史越长、向量越多的困境就此消解,接口规模不再随历史长度变化。可新的疑问随之而来:这些被压出来的向量,训练得到底靠不靠谱?
论文点出了一个很关键的地方:现在大多数压缩器的训练方式,是让AI学着用压缩后的向量去“还原”原始文本,或者去模仿一个标准答案。听着挺合理,可这里埋着一个坑:这种训练方式打分用的句子,都不是AI自己生成的,而是人工准备好的参照答案。
这就像训练一个翻译员,考试内容永远是让TA翻译课本上的例句,可实际工作中TA面对的是客户现场脱口而出的大白话。考试成绩好不代表现场发挥好,因为考试从来没让TA真正“上场”过。训练方式不改,压缩出来的记忆向量可能在“复原文本”这件事上表现完美,但AI真正自己说话的时候,该用上记忆的地方照样会漏掉,而这种训练方式根本发现不了这个漏洞,因为它从来没让AI自己说过话。
MemFold的核心思路:让AI自己说话,再去评判说得好不好
MemFold这篇论文的切入点很干脆:评判一份压缩记忆行不行,标准不该是它能否把原文复述回来,而应看AI拿着这份记忆讲出的话,有没有真的把该用的信息用上。
具体怎么做?整个流程分成几步。
整个流程的头一步由一个记忆压缩器(Compressor)承担:它把与当前问题有关的历史内容压成K个连续向量,数量固定(K是事先定好的数,比如256,相当于记忆的“容量预算”,对话历史再长,压出的向量也始终是K个)。AI要读记忆,只能通过这组向量这个唯一入口。
第二步是整套方法里最要紧的环节,名为在线策略优化(on-policy optimization),也就是拿AI自己生成的回答当训练材料,而不是用他人备好的标准答案。做法是:AI先凭压缩后的记忆向量自行生成一批候选回答,再由两种信号对其打分并据此调整。
信号之一是群体相对奖励(group-relative reward)。说白了,就是让AI围绕同一个问题产出多个回答,再比较其中哪个得分更高,以相对高低来指引训练方向——强化学习里常见的GRPO就是这类做法。它管的是“这回答得对不对”,起的是大方向上的指挥作用。
信号之二才是论文的真正新意所在,名叫置信度门控的在线策略蒸馏(confidence-gated on-policy distillation,简称OPD)。它的运行方式是这样:论文设定了一个冻结、不参与训练的“教师模型”,该教师用未经压缩的完整文本记忆去读同一道题,然后对学生(即那个正在训练、使用压缩记忆的AI)自己吐出的每一个词重新评分,看教师在读完整文本时对这个词有几分把握,再与学生凭压缩记忆时的把握相比,谁更笃定。
这里的设计颇见巧思:教师从头到尾不生成任何内容,只对学生的既有表述打分。这样一来,训练自始至终围绕学生自己会说出来的话进行,不会把教师的用词偏好硬灌给学生。
分差越大的地方,说明学生在压缩记忆下形成的理解,与真实文本所支撑的理解相距越远,该词便获得更高的权重,促使训练时更关注这类“压缩记忆没托住”的位置。不过权重设有上限,不会被无限放大,论文称之为“置信度门控”——所谓门控,就是加了一道闸,避免教师在某个词上的判断过度左右整个更新方向。
这个设计要化解的矛盾在哪?过去给一个句子打一个总分,AI根本没法判断究竟是哪个词出了问题。论文举了个很直观的例子:一段回答读下来挺顺,话题也没跑偏,可里面推荐的某个具体选项,偏偏撞上了用户明说过的偏好禁区。整句只给一个分数,AI就只知道这次“不太对”,错在哪一句、哪个词,说不清楚。
打个比方,老师改作文只在卷末写个“65分”,学生看不出是开头跑题、中间论据用错,还是结尾收得太急。OPD逐词打分就不一样,等于老师在每句话旁边都写了批注:“你这里理解得比标准答案差一截。”不这么做,AI只能靠猜,训练效率低不说,还容易学歪,比如把扣分归咎于话说得太长,而不是真的踩了用户偏好。
为什么说这个教师不是“更聪明的老师”而更像是“参照系”
有个地方容易被误读,需要单独讲清楚。
教师模型的准确率,其实比训练到后期的学生还要低。论文专门做了实验来验证。听着挺反直觉:准确率更低的模型,凭什么去指导一个准确率更高的模型?
关键在于,教师的价值不是“给出正确答案”,而是提供一个“读完完整文本会怎么理解”的参照。它和学生本来就是同一个模型的两个版本,一个读压缩后的记忆向量,一个读完整的文本记忆,训练刚起步时两边权重完全一致。教师只负责告诉学生:“你从压缩记忆里读出来的理解,跟我读完整文本的理解比,差在哪儿。”
论文用了一个数学上挺讲究的说法:这套机制在理论期望上等价于一种“反向KL散度”。KL散度是衡量两个概率分布有多不像的数学工具;反向KL散度在这里指学生被拉向教师的方向,但拉力有上限,不会被教师的某个极端判断带跑偏。论文还严格证明了,这种机制不会把教师偏好的用词硬塞给学生,学生从没说过的词,不会因为教师喜欢就凭空涨概率。
换句话说,这不是找个更厉害的老师来抄答案,而是找一个“读了完整资料的自己”,去提醒“读了压缩笔记的自己”哪里理解浅了。
像两个你:一个认真读完整本会议记录,另一个只拿到一页浓缩摘要卡片。读完整记录的那个你,业务能力可能一般,但知道哪些细节在摘要卡里丢了。不设这个对照,只拿摘要卡的那个你根本不知道自己漏了什么,错了也找不着错在哪。
压缩预算K,多大才合适
论文专门做了实验,把记忆向量数量K从64一路加到512,观察准确率和成本怎么变。
结果是一条单峰曲线:K=256效果最好,128到512这个区间差距都不大,只有K=64明显不够用。更有意思的是K=512反而略微下滑。论文作者的解释是,训练流程本身按固定预算设计,没有针对每个K重新调整初始化方式,所以这次下降可能是训练配置的问题,不代表记忆容量越大就天生学得越差。
成本上,K从64加到512,整体token开销几乎没动,变化幅度不到百分之一。原因是增大K带来的输入token增量,在整个处理流程里占比太小。真正的大头,是读取整段用户历史、生成文本记忆这一步,这一步每次都得做,跟压缩预算大小无关。
也就是说,压缩记忆这个设计确实把“接口大小”和“历史长度”脱钩了,但“读一次历史”这笔固定成本没降下来。这个边界值得记住:压缩解决的是接口膨胀,不是读取开销。
实验结果:数字说话
论文在三个不同大小的Qwen系列模型上做了测试,涵盖PersonaMem-32K(偏好追踪基准)
PersonaMem*:这个基准数据集专门用来考察AI能否准确追踪用户偏好随时间发生的变化,分为32K和128K两个版本;版本数字对应对话历史的长度,128K意味着历史记录更长、信息更分散,难度也更大。
和PersonaMem-128K两个版本。结果显示,MemFold在这两个基准上的准确率都是所有对比方法里最高的,而且历史越长,领先优势越明显。举个具体数字,用Qwen2.5-3B,在PersonaMem-128K上MemFold做到88.4%的准确率,同样设置下用传统强化学习方法训练的GRPO只有58.4%,相差整整30个百分点。换成Qwen2.5-7B,MemFold在这个基准上更是达到94.4%,而全文本输入这种最直接的方法只有24.0%。
有个现象特别值得停下来想一想:不少方法在短历史(32K)上表现还不错,历史一拉长到128K,准确率就断崖式下跌。比如xRAG
xRAG*:一种把检索到的内容压缩成单个token的上下文压缩方法。
在32K时表现一般,到128K反而上升到55.8%左右,变化很不规律,说明这类方法对历史长度的适应性不稳定。MemFold在两个长度下都保持高水平,说明它学到的不是某个长度特有的技巧,而是一种更通用的“怎么从记忆里提取有用信息”的能力。
更让人意外的是成本。按理说准确率这么高,应该是靠堆更多计算资源换来的吧?可论文测的端到端token消耗显示,MemFold的平均成本和全文本输入基本持平,加权平均上甚至更低。也就是说,这次的准确率提升不是烧资源堆出来的,是训练方式本身更聪明了。
论文还测了跨数据集的迁移能力:用在PersonaMem-32K上训练好的模型,直接拿到PrefEval
PrefEval*:一个评测AI能否识别隐含表达(而非直接指令)的用户偏好的基准,这里用的是其中的隐式人格子集。
这套测试里,模型压根没在PrefEval上做过针对性训练。MemFold照样守住了相对最好的成绩。PrefEval这个基准本身差距就小,各家整体准确率都偏低,最高的也就十几二十个百分点,难度可见一斑。不过MemFold至少没像部分对比方法那样,掉到什么都不做的全文本基线下面去。
研究团队还把用LoCoMo训练出来的模型拿到另一套基准上跑了一遍。LoCoMo是专门测长期对话记忆能力的数据集。
这套基准叫LongMemEval,覆盖知识更新、多轮会话推理、时间推理、用户偏好回忆等多种长期记忆能力。MemFold在这里同样表现得最稳,不少基于潜在记忆的方法则栽得很惨。
各个组件分别贡献了多少,论文用消融实验拆开来看。
做法很直接:去掉某个组件,观察性能掉多少。
结果里,去掉“读者初始化”这一步掉得最狠。所谓读者初始化,就是先让AI学会怎么读压缩记忆这个接口,再进入后续的强化学习训练。这说明AI得先学会“读”这个新接口,才谈得上用好它。去掉GRPO这个任务奖励信号,表现也跌得厉害。去掉OPD这个逐词置信度信号,同样会下降,但幅度比去掉GRPO小一些。
两个信号的分量并不对等:GRPO管大方向上的“对不对”,是主力;OPD盯细节上“哪里理解浅了”,属于补充,可这个补充确实在起作用,不是摆设。论文还专门设了一个“纯文本空间”对照组,不压缩记忆,直接用完整文本走同样的训练流程。这个对照组的表现跟MemFold差不多,但没能超过它。也就是说,在当前的训练方式下,压缩本身没拖后腿,瓶颈不在“记忆被压缩了多少”,而在“怎么训练AI用好这份记忆”。
论文最后还做了一个挺直白的验证:把AI该用的那份记忆换成随机打乱的,或者干脆不给,准确率立刻大幅下滑。这说明AI确实在依赖专属于当前问题的记忆内容,既不是凭空套模板,也不是无视记忆瞎编。
再看一个具体的失败案例。
论文举的例子很直观。用户此前说过“不喜欢用智能手表和健身追踪设备”,随后问AI怎么监测健身进度。用GRPO训练的模型和用另一种对比方法OPSD训练的模型,回答里都推荐了“使用Fitbit或Apple Watch这类穿戴设备”,正好撞上用户明确表达过的偏好禁区。MemFold训练出来的模型给的是写健身日记、测量身体数据、拍进度对比照片这类不涉及穿戴设备的建议,篇幅还更短,96个词就说清楚了;另外两个方法用了300个词,仍在违反偏好。
问题恰恰出在这儿:从聚合后的准确率上根本看不出来,话题相关性、流畅度这些整体指标都正常,可那个推荐点就是出了问题。只有落到逐词级别的信号,才能把这种藏在通顺表达里的小毛病揪出来并修正。
后续研究往哪走
论文发表之后,研究社群在长期记忆这个方向上还有不少后续探索。同期出现的一些工作,开始琢磨怎么让记忆写入过程本身也通过强化学习来优化,而不只是优化读取方式。照这个趋势,未来可能出现“写”和“读”两端都用在线策略训练的完整闭环系统。也有工作在尝试把置信度门控蒸馏的思路,从单轮回答扩展到多轮连续交互的场景,毕竟真实用户对话很少一问一答就结束。
写在后面
读这篇论文时,有个地方让人反复琢磨:教师模型的准确率比学生还低,却依然能帮着训出更好的学生。这跟常见的“强者教弱者”不是一回事,更像“知情者提醒”——教师唯一的优势是看到了学生看不到的完整信息,而不是判断力更强。这个设计思路值得记一笔:有时候你需要的不是更聪明的参照,而是信息更全的参照,哪怕它本身没那么聪明。
还有个细节挺有意思。论文提到压缩预算从64加到512,成本几乎不变,可准确率在256之后反而掉了一点。研究者没急着解释成“更大的记忆容量天生学得差”,而是坦承这可能是训练流程没针对不同K重新调优。这种谨慎的表态,比硬凑一个漂亮解释更让人信服。
论文最后提到的两个局限也值得多想一步。现在的记忆写入模块依赖一个更强的外部模型来生成初始训练数据,这个外部模型推理时用不上,但训练阶段省不掉。要是哪天没有这种更强模型可用,这套方法还能不能跑起来,是个开放问题。另外,测试的模型规模都在70亿参数以内,更大的模型上这套训练方式是否依然有效,论文也没给出答案。
一个AI要真正记住你,和真正用上记住的东西,这中间的距离可能比想象中更远。
Q&A
Q1:MemFold是什么?
A:MemFold是一种训练方法,让AI助手在长期对话中更好地记住并实际用上用户偏好。它把历史记录压缩成固定数量的向量,再靠AI自己生成的回答来训练,而不是靠还原文本或模仿标准答案来训练。
Q2:MemFold和普通的记忆压缩方法有什么区别?
A:按常规做法训练压缩器,打分靠的是人工备好的参照答案,AI 自己生成的内容压根没被评过。MemFold 换了路子:让 AI 基于压缩记忆自行生成回答,再用任务奖励加一个逐词置信度信号来判断这些回答的质量,训练时和实际用起来是一回事。
Q3:在 MemFold 中,教师模型的准确率为什么反倒不如学生?
A:教师的任务并非输出正确答案,它要做的是给出一种参照理解——读完整文本记忆之后的理解。它只负责告诉学生:用压缩记忆读出来的理解,与用完整文本读出来的理解,差距在哪里。这种提醒作用,跟模型本身答得准不准,是两回事。