Skip to content

Agent-RL 相关算法

📅 发表于 2025/11/18
🔄 更新于 2025/11/18
👁️ -- 次访问
📝 0 字
0 分钟
agentrl
#agentrl

(2506) ARPO

问题背景

❓问题背景

问题背景

核心方法

📕核心方法

核心方法

算法实验

实验设置

✍️实验设置

实验设置

关键结果

🍑关键结果

关键结果

未来方向

⛳未来方向

未来方向

(2502) Leave-One-Out PPO

摘要

问题背景

❓问题背景

LLM Agent真实任务效果不行

问题背景

LLM Agent处理真实任务效果不行

  • AppWorld
    • 单任务:agent和python环境可能交互40轮32k长度
    • 特点:
      • stateful多领域多app环境API交互
      • 跨应用、长序列规划、动态适应、上下文长。
  • 现有模型效果不好
    • 开源Qwen2.5仅40%,GPT4o 仅50%成功率。

RLOO 缺点

  • 同策略算法样本效率低
  • Trajetory-Level 建模,但Token-Level 通常更稳定一些。

基础RL算法相关问题

基础RL算法

RL建模

主流算法

  • REINFORCE优势AC算法

    • 策略梯度,优势决定更新方向。优势大于0,鼓励;优势小于0,抑制。
  • PPO:标准PPO,复杂有点贵。

    • 异策略算法提升样本效率重要性采样修正权重;Clip信任域 限制更新幅度,保证稳定。

    • PPO 建模方式

      • Per-Trajectory:把整个序列看成1个动作,计算1个总的重要性权重

        θJGSPO(θ)=ExD,{yi}i=1Gπθold(|x)[1Gi=1Gsi(θ)ISA^iθlogsi(θ)]
      • Per-Token:把每个词看成1个动作,为每个词计算重要性权重更稳定、平滑

        θJGRPO(θ)=ExD,{yi}i=1Gπθold(|x)[1Gi=1G1|yi|t=1|yi|πθ(yi,t|x,yi,<t)πθold(yi,t|x,yi,<t)token重要性权重A^i,ttoken优势θlogπθ(yi,t|x,yi,<t)token梯度]
    • PPO Loss 计算方式

      Lppo(θ)=1Gi=1G1|oi|t=1|ot|序列内平均min(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t)A^i,t,clip(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t),1ϵ,1+ϵ)A^i,t)LDAPO(θ)=1i=1G|oi|i=1Gt=1|ot|所有Token直接做平均min(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t)A^i,t,clip(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t),1ϵ,1+ϵ)A^i,t)
  • RLOOREINFORCE+留一法计算优势,无需Critic和Ref模型。

  • GRPO:组内计算优势基线,无需Critic。

  • 本文LOOP:RLOO + 异策略,具体引入PPO信任域,提升样本效率

  • 其他非RL:迭代式SFT,通过不断筛选好样本,来微调模型。

AppWorld 场景

Agent RL 相关场景+AppWorld

场景任务工作

  • 相关:text-games(2015,2023), webshop(2022), 导航(2022), 手机控制(2024)
  • WebShop:
    • Yao(2022):REINFORCE + 可学习baseline
    • ArCHer(2024):结合off-policy + on-policy 训练
    • AgentQ(2024):DPO + Tree搜索
    • 场景:买东西1个app8个动作,每回合最多1个参数

AppWorld

  • 场景:多样化复杂逻辑9个真实app457个API调用,单API最多17个参数
    • 邮件、支付、音乐、购物、打电话、文件系统等。
  • 难度:1-3档
  • 每个任务有一套单元测试,三个维度
    • 事情已完成:任务所要求的环境状态成功执行
    • 无副作用:没有对环境或APP造成额外的修改
    • 答案正确:agent最终答案和标准答案一致
  • 数据量:
    • 整体:250个场景,每个场景有3个任务,总计750个任务。
    • 训练35个场景,105个任务
    • Dev20场景,60任务
    • Test-Normal56场景,168任务
    • Test-Challenge:139场景,417任务。复杂、新APP。
  • 评估指标
    • TGC:Task-Goal-Completion,任务目标完成率
    • SGC:Scenario-Goal-Completion,场景目标完成率
      • 1场景有3任务,3个任务全部完成,才算场景完成。

核心方法

部分可观测马尔可夫决策过程建模

POMDP

状态

  • 初始隐藏状态:Python REPL状态、模拟数据库等,智能体看不见

  • 上下文user prompt

  • 所有token序列大模型生成token + 环境返回token,是agent可观察的历史信息。

    [s0,c,x1:t]

动作

  • Agent生成下一个tokenpθ(c,x1:t)

状态转移

  • 状态追加 LLM生成token xt+1 + 环境返回tokenxt+2:t+1+k[s0,c,x1:t][s0,c,x1:t+1+k]

轨迹概率

  • Token 概率乘积
  • 指示函数I:轨迹和初始状态一致,则为1;否则为0。
pθ(xs0,c)=I(s0,c)t=1Tpθ(xtc,x1:t1)

优化目标

  • 最大化累积期望奖励Lθ(s0,c)=Expθ(s0,c)[R(s0,c,x)]

Leave-One-Out PPO 算法

📕核心方法

核心方法

PPO Off-Policy & PPO-Clip

  • Off-Policy策略,提高样本效率。

    • 多轮次训练:缓冲区数据,全部进行Nepoch轮训练。

      • 使用重要性权重来做分布修正
    • 小批量学习:把缓冲区数据随机打乱,分成多个mini-batch

    • PPO梯度更新PPO目标函数更新参数,PPO-Clip 限制更新幅度保证稳定

ri=πθ(xs0,c)πθold(xs0,c)=t=1Tπθ(xtc,x<t)πθold(xtc,x<t)
  • 如果Nepoch=1,则LOOP退化成RLOO

留一法优势估计

  • 同一个prompt,采样k次,使用其余k-1次的平均值作为baseline

  • RLOO 留一法

    A(x,yi)=R(x,yi)1K1j=1,jiKR(x,yj)A(x,yi)=KK1(R(x,yi)1Kj=1KR(x,yj))
A(x,yi)R(x,yi)mean(R)
  • LOOP vs GRPO
    • GRPO:除以标准差
    • LOOP:不除以标准差
    • 标准差
      • 不稳定的任务上,标准差大
      • 除以标准差,会削弱或抑制那些偶然成功的高奖励学习信号
    • LOOP实验不归一化更好,能更有效地从不稳定的、探索性的行为中学习

PPo 裁剪粒度

  • per-trajectory:一条轨迹计算1个IS权重。

    • 缺点:非常不稳定。
  • per-turn:为每个回合计算一个IS权重。

    • 优点:
  • per-token:为每个token单独计算一个IS权重。

    • 优点:最精细。

算法实验

实验设置

✍️实验设置

实验配置

模型

  • Qwen2.5-32B

算法

  • LOOP, LORA训练

任务-AppWorld

  • 训练数据(AppWorld筛选)

    • 去掉难度3,只用难度1和2:35 -> 30。使用难度3会降低性能
    • 去掉6个场景:30 -> 24。
    • 最终:24个场景数据 作为训练集,共72个任务
  • 评估数据

    • AppWorld Test-normal, Test-Challenge

超参设置

  • 交互最大轮次:训练40轮测试50轮
  • Rollout:6次。
  • Batch:40个任务、每次学习40*6=240条序列
  • 固定学习率:5e-5
  • Prompt:ReACT Prompt
  • 长度:LLM单次 1500 token;环境单次:3000 token
  • 训练90轮,取最好的checkpoint。
  • 2*8H100,训练42小时。

奖励函数

  • [0, 1],单元测试通过比例no sparse

关键结果

🍑关键结果

关键结果
  • LOOP 在APPWorld 上达到SOTA

    • Test-N(TGC指标):LOOP > GPT-4o > Qwen2.5-32B,71.3 > 61.9 > 39.2
    • Test-C(TGC指标):LOOP > GPT-4o > Qwen2.5-32B,45.7 > 36.7 > 21.0%
    • SGC指标:均超过其他方法,Test-N 53.6Test-C 26.6
  • 关键消融实验

    • per-token > per-turn > per-traj,71.3 > 64.1 > 53.3

    • 组内std归一化降低9pt71.3 -> 61.9

    • 移除KL惩罚有效果:Test-C TGC 从 22.4 -> 26.6

    • LOOP vs GRPO71.3 > 58,13pt

      • LOOP 非归一化 优于 GRPO 归一化,
    • LOOP vs PPO71.3 > 50.8

      • Critic 不好训啊,容易引入误差
  • 涌现出优秀行为:

    • 莽撞到谨慎:不必要代码执行减少6倍,避免了次优loop
    • 想当然到查文档:调用特定APP接口时,API文档查询增加60%
    • 瞎猜到求证:毫无根据的假设减少了30倍,虚构密码等重要位置减少了6倍
    • 脆弱到坚韧:失败后放弃次数减少3倍

未来方向

⛳未来方向

未来方向
  • 性能还不够好,提升成功率。目前仅70%完成。
  • 环境太理想化,需提升真实复杂情况
    • 不确定性、暂时性故障、模棱两可的任务、对抗性场景、与用户主动交互、与真人其他agent交互等等。
  • 多模态能力:看懂网页截图、图表等。
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025