RAGEN 与 StarPO 框架:如何让 LLM 在多轮交互中自我进化?

StarPO框架:多轮交互中LLM自我进化

Wang, Zihan, et al. “Ragen: Understanding self-evolution in llm agents via multi-turn reinforcement learning.” arXiv preprint arXiv:2504.20073 (2025).

在当今的大模型研究中,我们常常看到 LLM 在问答式的单轮任务中表现出色,如解答数学问题或生成代码片段。然而,若想让模型成为一个能在复杂环境中自主决策、自我进化的“智能体”,比如玩转一款游戏,或完成一次完整的在线购物,我们面临的核心挑战便从“单轮静态生成”转向了“多轮动态交互”。

在这篇博客中,我们将深入解读论文《RAGEN: Understanding Self-Evolution in LLM Agents via Multi-Turn Reinforcement Learning》,它系统分析了在多轮任务中 使用现有强化学习技术微调 LLM 的问题,并提出了 StarPO 训练框架作为解决方案。



一、 问题背景:从静态微调到动态交互的范式转变

要理解 RAGEN 的贡献,我们首先需要理解使用强化学习(RL)微调 LLM 的范式。传统的 LLM RL 微调,例如使用 PPO 或 DPO,通常被建模为一个单轮的马尔可夫决策过程。

  • 状态 s t s_t st:用户的 prompt + 当前已输出的前 t 个 token。
  • 动作 a t a_t at:模型预测的下一个 token。
  • 奖励 r t r_t rt:仅提供终局奖励,由一个奖励模型根据 (提示, 回答) 对计算得出。
  • 优化目标:最大化单轮问答的期望奖励。

这种方法在代码生成或数学解题等静态、单轮(single-turn)任务上取得了成功。然而,当我们将 LLM 置于一个多轮交互(multi-turn)的环境,如玩解谜游戏、操作网页时,上述建模方案则没那么合适了。智能体需要根据环境反馈,进行一系列的动作和思考(例如在“推箱子”游戏中,模型需要先观察地图,思考几步计划,执行移动,然后根据新的地图状态再次决策),这就构成了一个多轮轨迹。

RAGEN 论文发现,直接将单轮 RL 应用在多轮任务中,会引发三个核心问题:

  1. 训练不稳定性:多步决策的累积效应,会导致奖励和梯度信号极其不稳定,容易发生“训练崩溃”。
  2. 信用分配难题:一个最终的成功,其功劳应该如何分配给轨迹中早期的思考和动作?稀疏的最终奖励很难指导模型学习到有效的中间步骤。
  3. 推理行为退化:如果环境只奖励最终结果,模型可能会发现“思考”是一种负担,从而退化为不假思索地输出动作,损害其泛化能力。

二、 核心方法:StarPO 框架与稳定化技术

为了应对多轮训练的挑战,RAGEN 论文提出了 StarPO 框架。

2.1 重新定义 MDP:轨迹级优化

StarPO将问题定义为一个完整的、多轮交互的MDP。

  • 状态:是当前的环境观察(例如,游戏的文本界面)加上之前的交互历史。
  • 动作:是模型每一步的结构化输出,格式为 <think>...推理过程...</think><answer>...可执行动作...</answer>。例如,在推箱子游戏中,动作可能是 <think>我需要先把左边的箱子向上推,腾出空间。</think><answer>Left || Up</answer>
  • 轨迹:一个完整的 K 轮交互序列被记为 τ = { s 0 , a 0 , r 0 , s 1 , . . . , s K } \tau = \{s_0, a_{0}, r_0, s_1, ..., s_K\} τ={s0,a0,r0,s1,...,sK},其中每个状态或动作,代表用户给的 prompt 和 LLM 的一次输出结果,奖励信号为原先 MDP 模型中的终局奖励信号。
  • 目标:从最大化单轮奖励,转变为最大化整个轨迹的期望累积奖励 J StarPO ( θ ) = E τ ∼ π θ [ R ( τ ) ] J_{\text{StarPO}}(\theta) = \mathbb{E}_{\tau \sim \pi_{\theta}} [R(\tau)] JStarPO(θ)=Eτπθ[R(τ)]

2.2 StarPO 如何与 PPO / GRPO 协同工作

StarPO 不是一个全新的 RL 算法,而是一个框架,它将 PPO 或 GRPO 等具体优化算法应用在轨迹级别,将整个 multi-turn 的 reward 信号全部计算进去:

2.2.1 PPO + StarPO:

  • PPO 需要一个 critic 估计每个状态的价值。
  • 对于轨迹中的每个时间步,它使用广义优势估计(GAE, 相关参考博客 1 2)来计算优势 A t A_t At。这个 A t A_t At 综合考虑了当前和未来的奖励,从而衡量在该时间步做出决策(包括推理和动作)的好坏。
  • 然后,PPO 的目标函数被应用于轨迹中的每一个 token(包括 <think><answer> 里的所有 token),但每个 token 使用的优势值是其对应时间步的 A t A_t At

2.2.2 GRPO + StarPO:

  • GRPO 是一种无 critic 的简化方法。
  • 它为每个完整的轨迹 τ i \tau_i τi 计算一个标量的、归一化的优势: A ^ i = ( R ( τ i ) − mean ) / std \hat{A}_i = (R(\tau_i) - \text{mean}) / \text{std} A^i=(R(τi)mean)/std
  • 然后,这个标量优势 A ^ i \hat{A}_i A^i 会被分配给生成该轨迹的每一个 token。这意味着,同一个轨迹里所有的token,无论其贡献大小,在本次更新中共享相同的优势信号。

2.3 应对不稳定性:StarPO-S

RAGEN 通过实验发现,多轮 RL 训练极易陷入一种称为 “回声陷阱(Echo Trap)” 的不稳定模式:LLM 的推理变得重复单一,奖励方差崩溃,梯度爆炸,最终导致性能显著下降。为此,他们提出了添加稳定化技术的变体 StarPO-S,主要技术包括:

  • 不确定性轨迹过滤:在每轮训练中,只保留那些奖励方差最高的前 25% 的轨迹。这个直觉类似于主动学习,让模型专注于学习最不确定、信息量最大的样本。
  • KL 项移除:从 PPO 目标中移除 KL 散度惩罚,减少对初始模型的约束,鼓励更多探索。
  • 非对称裁剪:对 PPO 的裁剪范围进行修改,使用 ϵ l o w = 0.2 , ϵ h i g h = 0.28 \epsilon_{low}=0.2, \epsilon_{high}=0.28 ϵlow=0.2,ϵhigh=0.28,允许模型更积极地从高奖励轨迹中学习。

三、实验设置:全面评估 LLM 能力

论文在四个精心设计的环境中评估 LLM:

  1. Bandit:单轮随机选择任务。LLM 需根据选项的符号名称(如“Dragon” vs “Phoenix”)推断其奖励分布并选择。测试符号推理和风险感知。
  2. Sokoban:经典推箱子游戏。LLM 需在网格中规划多步动作推动箱子到目标。特点是动作不可逆,测试长程规划能力。
  3. FrozenLake:网格导航任务。LLM 需到达目标,但每一步都因“冰面”而可能滑向非预期方向。测试在随机环境下的稳健决策。
  4. WebShop:真实的网页购物任务。LLM 需根据用户自然语言指令,通过搜索、点击等操作找到并购买商品。测试语言理解与真实世界交互。

评价指标,不仅包括成功率,还特别关注训练动态:

  • 奖励标准差:行为多样性的早期指标,下降预示“回声陷阱”。
  • 梯度范数:训练稳定性的直接反映,尖峰常预示崩溃。
  • 输出熵:策略的随机性,稳定下降代表健康学习。
  • 推理长度:<think>块的平均 token 数。

实验主要内容是 StarPO 框架自身的消融实验,即对比 StarPO (PPO)、StarPO (GRPO) 和加入了稳定技术的 StarPO-S。

  • 模型:主实验使用 Qwen2.5-0.5B/3B。
  • 硬件:在 NVIDIA H100/A100 GPU上,使用 FSDP 进行分布式训练,并利用 vLLM 加速轨迹生成。

关键超参数:

  • Rollout:每步从8个初始状态各采样16条轨迹。
  • 更新:批量大小32,Adam优化器。
  • GAE:γ=1.0, λ=1.0(无折扣,全轨迹优化)。
  • 熵奖励:β=0.001,鼓励探索。
  • 格式惩罚:-0.1,强制模型使用结构化输出

四、核心实验结果与发现

4.1 训练不稳定性与“回声陷阱”

  • 现象:在多轮 RL 中,智能体极易陷入“回声陷阱”,即,智能体输出内容模板趋同,行为多样性崩溃,奖励方差骤降,梯度出现尖峰,最终性能断崖式下跌。
  • 例子:在 Bandit 任务中,训练初期的模型会多样地解读“Dragon”和“Phoenix”的象征意义;训练后期,模型输出全部收敛为千篇一律的“我选择Dragon”,不再进行实质推理。
  • 相关指标:1 奖励变异性崩溃:从同一初始状态出发,不同 rollout 获得的奖励标准差急剧下降,表明策略行为变得单一、重复。2 梯度范数尖峰:在训练后期出现梯度爆炸,标志着参数更新极度不稳定,通常意味着性能的不可逆崩溃。
  • 实验结果:StarPO-S 能显著延迟或完全避免崩溃,尤其是在符号环境中。

4.2 PPO 与 GRPO 的优劣

  • PPO:在确定性环境(如 Bandit, Sokoban)中更稳定,可能因为 critic 提供了更平滑的优势估计。
  • GRPO:在高度随机环境(如 FrozenLake)中表现更好,因为其免受了不准确的价值估计影响。
  • WebShop:因任务复杂且初始性能高,两种方法都能有效学习。

4.3 推理行为在 multi-turn 任务中不会自然涌现,且容易退化

  • 单轮任务(如 Bandit):显式的推理能显著提升模型在陌生变体任务上的泛化能力。
  • 多轮任务:推理行为会随着训练逐渐退化(<think> 块变短),除非有细粒度的、针对推理本身的奖励信号。否则,在多轮、稀疏奖励的设置下,如果任务成功与否的最终奖励无法区分“通过正确推理成功”和“通过试错巧合成功”,那么对于模型而言,“不思考”直接试错就是一种更节能的策略。

4.4 规模效应与泛化

  • 大模型在语言丰富的任务(Bandit, WebShop)上优势明显,能利用更强的先验知识。
  • 小模型在符号性任务(Sokoban, FrozenLake)上,通过精心设计的 RL 训练,可以达到与零样本 GPT-4o 相近的性能,这凸显了方法本身的有效性。
  • 泛化测试:在 SokobanNewVocab(新符号)和 LargeSokoban(更大网格)上的测试表明,高任务多样性(更多不同的初始状态)和适中的每轮动作预算(5-6 个)对泛化至关重要。任务多样性优于深度采样:在固定的计算预算下,使用更多不同的初始状态(Prompt),并为每个状态生成较少(如 4 个)的响应,比在少数状态上大量采样更能促进泛化。

4.5 实用技巧与资源考量

  • LoRA 微调:论文证明,使用 LoRA 进行参数高效微调,能达到与全参数微调相近的性能,同时GPU内存消耗降低 50% 以上,为资源有限的研究者提供了可行路径。
  • 在线 Rollout:使用最新策略频繁收集轨迹(Online-1)相比重复利用旧轨迹,能带来更快收敛和更好性能,确保了训练数据与当前策略的对齐。

五、 总结与展望

RAGEN 系统揭示了多轮场景下 LLM 强化学习训练中的独特挑战(如回声陷阱、推理退化),并提出了行之有效的解决方案 StarPO-S,使用轨迹级优化、基于轨迹奖励不确定性的轨迹过滤等技术。

将 LLM 训练成多轮交互的智能体,绝非简单地将单轮 RL 算法套用到多轮场景,而是要求我们:

  1. 采用轨迹级的优化视角。
  2. 积极应对由此带来的梯度不稳定和信用分配难题。
  3. 精心设计训练数据和奖励信号,以引导和保持有益的推理行为。

这项工作表明,要训练出真正智能、稳健且可信赖的 LLM 智能体,我们不仅需要更强大的基础模型,更需要精心设计其学习过程。未来方向可能包括更精细的奖励设计、更稳定的多轮RL算法,以及将这些原则扩展到更复杂的现实世界任务中。

要使用LLM Agent玩推箱子游戏,需要构建一个能够理解环境状态、做出决策并执行动作的系统。以下是实现这一目标的关键步骤和方法: ### 环境设置 首先,需要定义或获取一个推箱子游戏的环境。这个环境可以是一个简单的文本界面,也可以是一个图形化的界面。在RAGEN的研究中,推箱子被描述为一个确定性的多回合谜题,其中Agent需要将箱子推到目标位置[^1]。 ```python import gym # 创建推箱子环境(这里假设有一个可用的gym环境) env = gym.make('Sokoban-v0') observation = env.reset() ``` ### LLM Agent的设计 LLM Agent需要具备以下几个核心组件: - **感知模块**:用于解析环境的状态信息。 - **决策模块**:基于当前状态生成下一步的动作。 - **执行模块**:将决策转化为具体的动作执行。 在RAGEN框架中,这些组件通过多轮次Rollout、轨迹级奖励分配和策略更新来优化Agent的表现[^3]。 ### 感知模块 感知模块负责从环境中提取有用的信息。对于推箱子游戏,这可能包括玩家的位置、箱子的位置以及目标位置。可以通过预处理将这些信息转换为LLM可以理解的形式。 ```python def parse_observation(obs): # 解析观察值,返回结构化的状态表示 return structured_state ``` ### 决策模块 决策模块利用LLM来生成下一步的动作。这个过程通常涉及到对当前状态的理解,并根据历史经验选择最优动作。 ```python from transformers import pipeline # 初始化一个文本生成模型 text_generator = pipeline("text-generation", model="distilgpt2") def decide_action(state): prompt = f"Given the current state: {state}, what should be the next move?" response = text_generator(prompt, max_new_tokens=50) action = extract_action_from_response(response) return action ``` ### 执行模块 执行模块将决策模块生成的动作应用到环境中。这一步骤需要注意动作的有效性检查,以避免无效操作导致的游戏失败。 ```python def execute_action(env, action): if is_valid_action(action): observation, reward, done, info = env.step(action) return observation, reward, done, info else: # Handle invalid action pass ``` ### 训练优化 为了使LLM Agent更好地适应推箱子游戏,可以通过强化学习的方法对其进行训练。RAGEN框架提供了一个通用的Agent RL框架,支持多轮次Rollout、轨迹级奖励分配和策略更新[^3]。 ```python def train_agent(episodes=1000): for episode in range(episodes): observation = env.reset() while True: action = decide_action(observation) next_observation, reward, done, info = execute_action(env, action) update_policy(observation, action, reward, next_observation) observation = next_observation if done: break ``` ### 总结 通过上述步骤,可以构建一个基本的LLM Agent来玩推箱子游戏。需要注意的是,实际实现可能会更加复杂,特别是在感知和决策模块的设计上。此外,为了提高Agent的表现,可能还需要大量的训练和调优工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值