Memory Reinforcement Learning (MemRL)

Nikola Balic (@nibzard)· proposed

问题

大语言模型(LLMs)受限于稳定性-可塑性困境,难以实现运行时自我演化

  • 微调:计算成本高昂,且易出现灾难性遗忘
  • RAG/记忆系统:依赖语义相似度进行检索,容易引入无效噪声
  • 缺乏效用学习能力:无法区分高价值策略与语义相似但无效的策略

常规检索机制默认“相似即有用”,但这一假设往往不成立。语义相关的过往解决方案,实际上可能是处理当前任务的糟糕方案。

方案

MemRL 为情景记忆添加了习得的“效用分数”,让智能体能够从经验中学习哪些记忆真正能导向成功——无需对模型进行修改。

核心思想:不再仅通过相似度进行检索,而是依据记忆过去的实际表现效果来排序。

记忆三元组结构

  • 意图(Intent):用户的请求内容(已嵌入)
  • 经验(Experience):智能体的尝试内容(解决方案轨迹)
  • 效用(Utility):表现效果的优劣(习得分数,随时间动态更新)

两阶段检索

  1. 阶段A - 语义过滤:查找语义相似的记忆
  2. 阶段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

如何使用

基础实现:

  1. 存储带效用分数的经验

    memory_bank.append({
        "intent": embed(query),
        "experience": solution_trace,
        "utility": 0.5  # 初始分数,随时间迭代学习
    })
    
  2. 基于效用排名进行检索

    # 第一步:按相似度过滤
    candidates = similar_memories(query, threshold=0.7)
    
    # 第二步:按效用重新排序
    ranked = sorted(candidates, key=lambda m: m.utility, reverse=True)
    context = ranked[:k]
    
  3. 基于结果更新效用值

    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
  • 相关研究方向:情景记忆检索与注入、执行日志记忆合成、智能体强化微调

来源摘要

正在获取来源并生成中文摘要…

来源: https://arxiv.org/html/2601.03192v1

← 返回社区