
别再手工调Prompt!Memory-R1把60条噪音记忆压缩成3条,准确率飙升
大型语言模型(LLM)目前在聊天机器人、编码助手、问题解答、创意写作等等应用方面取得了巨大的成功。
但是,每个查询到达LLM之前没有记忆的,固定上下文窗口(context windows),意味着他们无法在长时间的对话或多会话任务中积累持久的知识,并且很难推理复杂的历史。
最近的解决方案,如检索增强生成(RAG),将过去的信息附加到提示中,但这通常会导致嘈杂的,未经过滤的上下文,用太多无关的细节或缺失的关键事实淹没模型
Memory-R1框架,通过LLM代理学习主动管理和利用外部内存,决定在回答问题时添加、更新、删除或忽略什么,并过滤掉噪音。
为什么学习记忆
在RAG系统检索信息过程中,不相关的条目会污染推理,模型被噪音分散注意力。
相比之下,人类广泛检索,随后有选择地过滤重要的东西,才是我们需要的信息。
然而大多数人工智能记忆系统是静态的,是依靠手工制作的启发式来记住什么,而不是从反馈中学习,这带来了巨大的局限性。
Memory-R1 框架
Memory-R1 围绕两个专门的 RL 微调代理构建:
- 内存管理器:决定每次对话转动后要执行哪些内存操作(ADD、UPDATE、DELETE、NOOP) , 动态更新外部内存库。
- 答案代理:对于每个用户问题,检索多达60个候选记忆,distills将它们提炼成最相关的子集,然后通过此过滤上下文来生成答案。
这两个组件都使用强化学习RL(使用近端策略优化(PPO)或组相对策略优化(GRPO))进行训练,仅以问题回答正确性为奖励信号。这意味着:代理不需要手动标记的内存操作,而是通过试错来学习,优化最终任务性能。
内存管理器:学习编辑知识
每次对话后,LLM都会提取关键事实。然后内存管理器从内存库中检索相关条目,并选择操作:
- 添加: 插入尚未存在的新信息。
- 更新:在现有记忆中合并新细节,当它们详细阐述或提炼以前的事实时。
- 删除:删除过时或矛盾的信息。
- NOOP:如果添加任何相关内容,则保持内存不变。
内存管理器根据答案代理从新编辑的内存库生成的答题质量进行更新。如果内存操作使 Answer Agent 能够准确响应,则内存管理器将获得正值奖励。outcome-driven reward这种结果驱动的奖励消除了对内存操作进行昂贵的手动注释的需求。
示例 :当用户第一次提到收养一只名叫Buddy的狗时,然后补充说他们收养了另一只名为Scout的狗,系统可能会删除“Buddy”并添加“Scout”,将其视为矛盾。然而,updates RL训练的内存管理器更新了内存:“收养了两只狗,Buddy和Scout”,保持了一个连贯的,不断发展的知识库。
答案代理:选择性推理
对于每个问题,系统使用RAG检索多达60个候选记忆。但是,答案代理并没有将所有这些内容都输入到LLM。 首先蒸馏了该集合,只保留最相关的条目。只有这样,它才能产生答案。
训练 : 答案代理也使用RL进行训练exact match,使用其答案和标准答案之间的精确匹配作为奖励。filtering out noise这鼓励它专注于过滤噪音和推理在高质量的上下文。
示例 : 询问“约翰住在海滩或山脉附近吗 ? ” , 香草LLM可能会输出“山 ” , 受到不相关记忆的影响。然而,Memory-R1的Answer Agent在回答之前只显示与海滩相关的条目,从而得出正确的“海滩”响应。
本文转载自CourseAI,作者:CourseAI
