Memory Reinforcement Learning (MemRL)
Nikola Balic (@nibzard)· proposed
问题
大语言模型(LLMs)受限于稳定性-可塑性困境,难以实现运行时自我演化:
- 微调:计算成本高昂,且易出现灾难性遗忘
- RAG/记忆系统:依赖语义相似度进行检索,容易引入无效噪声
- 缺乏效用学习能力:无法区分高价值策略与语义相似但无效的策略
常规检索机制默认“相似即有用”,但这一假设往往不成立。语义相关的过往解决方案,实际上可能是处理当前任务的糟糕方案。
方案
MemRL 为情景记忆添加了习得的“效用分数”,让智能体能够从经验中学习哪些记忆真正能导向成功——无需对模型进行修改。
核心思想:不再仅通过相似度进行检索,而是依据记忆过去的实际表现效果来排序。
记忆三元组结构:
- 意图(Intent):用户的请求内容(已嵌入)
- 经验(Experience):智能体的尝试内容(解决方案轨迹)
- 效用(Utility):表现效果的优劣(习得分数,随时间动态更新)
两阶段检索:
- 阶段A - 语义过滤:查找语义相似的记忆
- 阶段B - 效用排序:基于习得的效用分数重新排序
这一机制能过滤掉那些看似相关,但从历史记录来看会产生不良结果的“干扰性记忆”。
graph LR
A[查询] --> B[查找相似记忆]
B --> C[按效用分数排序]
C --> D[使用排名靠前的记忆]
D --> E[获取结果]
E --> F[更新效用分数]
F --> G[存储新经验]
style C fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
style F fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
如何使用
基础实现:
-
存储带效用分数的经验
memory_bank.append({ "intent": embed(query), "experience": solution_trace, "utility": 0.5 # 初始分数,随时间迭代学习 }) -
基于效用排名进行检索
# 第一步:按相似度过滤 candidates = similar_memories(query, threshold=0.7) # 第二步:按效用重新排序 ranked = sorted(candidates, key=lambda m: m.utility, reverse=True) context = ranked[:k] -
基于结果更新效用值
reward = 1 if success else 0 for mem in retrieved_contexts: mem.utility += learning_rate * (reward - mem.utility)
设计优势:
- 成功经验的分数会提升,被检索的频率更高
- 失败经验会被降权,即使其语义相似度较高
- 冻结的LLM保持稳定;仅记忆的效用值随时间演进
- Agent通过运行时经验实现自我迭代提升
权衡
优势:
- 无灾难性遗忘(LLM处于冻结状态)
- 可从经验中实现自我提升
- 过滤掉“相似型”不良解决方案
- 无需重新训练
劣势:
- 需要可靠的成功/失败信号
- 内存开销会随时间增长
- 冷启动问题:需要多轮任务片段来学习
- 比基础RAG更复杂
适用场景:
- 带有明确成功信号的多步骤任务
- 存在可复用问题解决模式的场景
- 无法承担微调成本的情况
不适用场景:
- 单轮查询场景
- 无明确奖励信号的情况
- 任务高度多样化(无固定模式)的场景
参考文献
关键词:
围绕自进化智能体技术展开,核心是借助情景记忆的运行时强化学习实现智能体进化,关联情景记忆检索与注入、执行日志记忆合成、智能体强化微调等研究方向。
直译:
- 《基于情景记忆运行时强化学习的自进化智能体》- 张胜涛、王佳倩 等(2025) 链接:https://arxiv.org/html/2601.03192v1
- 相关研究方向:情景记忆检索与注入、执行日志记忆合成、智能体强化微调
来源摘要
正在获取来源并生成中文摘要…