Hexo

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

NLP——RLAnything

注:本文包含 AI 辅助创作

  • 参考链接:
    • 原始论文:RLAnything: Forge Environment, Policy, and Reward Model in Completely Dynamic RL System, Princeton, 20260202, Yinjie Wang

Paper Summary

  • 整体总结:
    • RLAnything 是一个针对任意 LLM 或 Agentic 场景都可以做 RL 训练的框架
    • RLAnything 使用整合的监督训练策略,并通过一致性反馈改进奖励模型,在整个训练过程中提供更强、更可靠的信号
    • RLAnything 包含了 策略 和 奖励模型 的同时学习
      • 奖励模型的训练是通过奖励信号学习的
    • 整合了 Step-wise 和 Outcome 的反馈信号
    • 号称通过本文方法优化 的奖励模型信号 优于 人工标注的结果信号(注:这一点其实存疑)
    • 本文还会动态调整训练环境:
      • 本文证明了一个结论:对于任何目标策略来说,过于简单或者过于复杂的环境都不适合做这个策略的 RL 训练
    • In Summary,RLAnything 使环境、策略和奖励模型能够相互提供反馈,从而增强学习信号并改进整个系统
  • 具体描述:
    • RLAnything 通过 Closed-loop Optimization 动态地优化环境 、策略 和奖励模型 ,放大学习信号并增强整个 RL 系统在任意 LLM 或智能体场景下的能力
    • 本文包含多个 Features,实验对各种做了详细的 Ablation
    • OSWorld 上, Qwen3-VL-8B-Thinking 的性能提升了 \(9.1%\)
    • AlfWorld 和 LiveBench 上,分别将 Qwen2.5-7B-Instruct 的性能提升了 \(18.7%\) 和 \(11.9%\)
  • 图 1:RLAnything 框架的总结性实验结果和关键 Insight
    • 1)联合优化奖励模型和环境,反过来有益于策略的学习曲线,从而获得更高的收敛精度
    • 2)来自优化后奖励模型的 Step-wise 信号优于人工标注的结果信号
      • 此外,还可以观察到整合后的反馈对于长轨迹任务至关重要
    • 3)RLAnything 在多种现实应用中的验证
    • 4)新的环境任务呈线性扩展,奖励模型在评估当前步骤的正确性和对结果的影响方面都变得更强大

Introduction and Discussion

  • 背景:
    • RLVR 效果不错,但在策略与环境进行长轨迹的迭代交互时,仅靠二元结果奖励提供的监督是不足的 (2023; 2025; 2024)
    • Step-wise 信号通常由生成式奖励模型提供,这些模型通过利用语言模型的推理能力,往往优于基于标量的模型 (2025; 2024)
      • 但训练这些模型通常需要收集高质量的、特定于任务的监督数据 (2025; 2025)
    • 结论:需要一个更自动化方法和可扩展的监督
  • 环境的质量对于扩展强化学习也很重要
    • 举例1:将任务难度与模型当前能力对齐已知能改善训练动态 (2025; 2025)
      • 在 RLVR 中,在优化过程中调整任务难度可以改善策略训练 (2025)
    • 举例2:在现实世界的环境中,探索的范围很大程度上由任务定义
      • 例如用于 GUI 智能体的计算机 (2025a; 2024) 或用于机器人的物理世界 (2013),
      • 通过增加任务多样性来扩展环境可以进一步促进策略在更广泛场景下的泛化能力 (2025; 2025; 2020; 2025; 2026; 2021)
  • 核心问题提出:是否存在一个可以联合优化环境、策略和奖励模型的 RL 系统,能用于放大学习信号并强化整个系统?
  • RLAnything 就是这样一个动态的 RL 框架,可以在闭环系统中 Forge 环境、策略和奖励模型
    • 每个组件持续接收来自其他组件的反馈,在各种复杂的 LLM 或智能体场景中放大学习信号
    • 策略训练:使用整合后的反馈进行训练
      • 该反馈结合了可验证的结果奖励和奖励模型提供的 Step-wise 信号
    • 奖励模型训练:通过基于结果和自洽性(self-consistency)的一致性反馈进行联合优化
      • 这样可产生可靠的 Step-wise 监督,这反过来又改善了策略学习
    • 奖励模型训练改进:
      • 基于理论结果分析得到结论:平衡任务难度不仅有益于策略训练,也有益于 RL 系统中的奖励模型训练
    • 环境任务调整:
      • 基于来自策略和奖励模型的 Critic 反馈来调整环境任务,实现精确和自动的任务调整
      • 将奖励模型总结出的、捕捉策略失败原因的信息输入到一个语言模型中,以扰动任务,为如何修改任务提供具体指导
  • RLAnything 是通用的,在多种场景中进行了验证:
    • Compute use (2024)
    • Text-based Interactive Games (2018; 2020)
    • Coding LLM 场景
  • 主要贡献总结:
    • (个人补充)作者通过大量实验观察到了一些关键 Insight
    • 作者提出了动态 RL 系统 RLAnything,通过闭环优化 Forge 环境、策略和奖励模型,以放大学习信号并强化整个系统
    • 作者多个场景(Compute-use Agent、Text-based LLM 智能体和 Coding LLM)实验中,展示了每个添加的动态组件都持续地有益于整个系统,并提升了 OOD 性能
    • 实验指标显著提升:
      • 在 OSWorld 上,Qwen3-VL-8B-Thinking 的性能提升了 \(9.1%\)
      • 在 AlfWorld 和 LiveBench 上,Qwen2.5-7B-Instruct 的性能分别提升了 \(18.7%\) 和 \(11.9%\)
    • 展示了广泛的适用性: Optimized RM 信号优于依赖人工标注的结果信号,使得从经验中主动学习(active learning)和环境扩展成为可能

RLAnything

  • RLAnything(参见算法 1)将策略模型、奖励模型和环境紧密结合,以实现联合优化
  • 具体方法:
    • 使用整合后的反馈(第 2.1 节中的公式 1)来训练策略
      • 反馈结合了来自奖励模型的 Step-wise 信号和 Trajectory-level 的结果信号
    • 通过将策略的轨迹视为环境任务,并通过公式 2 分配一致性反馈来训练奖励模型
      • 作者在第 2.3 节中证明,这个目标也能提高奖励模型预测最终结果的准确性
    • 随着奖励模型变得更准确,它反过来为策略提供了更强、更具信息量的学习信号
    • 调整环境任务的难度不仅有益于策略训练,也有益于奖励模型训练
  • 为了实现自动化和有针对性的调整,具体的任务修改由从奖励模型的评估响应中总结出的 Critic 反馈来指导(第 2.4 节)

Integration Feedback for Policy

  • 给定一个任务 \(q \in Q\) 和一个策略 \(\pi\),采样一个轨迹 \(\tau \sim \pi(\cdot | q)\) 并获得一个最终结果奖励
    $$ O_{\tau} \in \{- 1, 1\} $$
  • 对于第 \(i\) 步 \(\tau_{i}\),独立用奖励模型进行 \(m\) 次打分 ,得到
    $$S_{\tau_{i,j} } \in \{- 1, 1\}$$
    • 其中 \(j = 1, \ldots , m\),这里的 \(-1\) 表示未向最终目标推进或是一个 Step-wise 错误
  • 本文将步骤奖励定义为:
    $$R_{\tau_i} = O_{\tau} + \frac{\lambda}{m}\sum_{j = 1}^{m}S_{\tau_{i,j} } \tag {1}$$
    • 该公式将结果信号与细致的 Step-wise 反馈结合起来
    • 默认情况下设 \(\lambda = 1\)
    • 理解:当前设置下, Step-wise 的反馈奖励 和 Outcome 奖励各占一半融合(注,Step-wise 是 \(m\) 次采样得到的)
  • 通过在相同步骤索引 \(i\) 上的轨迹集合(即 \(\{R_{\tau_i}: \tau \sim \pi(\cdot | q)\}\))中对奖励进行标准化来计算优势(advantages)
    • 补充理解:这也是后来在 OpenClaw-RL 中使用的 Step-level 归一化方法(可能存在归一化时状态不一致的问题,理论上最优的归一化方式是在相同的 状态下才可以)
    • 注意:这里起始的状态是相同的(即 \(q\) 相同),但中间步骤的状态会不同
      • 若果 \(q\) 不同是不行的,状态差异太大了

Consistency Feedback for Reward Model

  • 对于轨迹的第 \(i\) 步 \(\tau_{i}\),奖励模型 \(r_{\phi}\) 的第 \(j\) 次打分(总共 \(m\) 次)为 Step-wise 标签 \(S_{\tau_{i,j} }\),并接收以下奖励信号:
    $$R_{\tau_{i,j} } = R_{\tau_{i} }\cdot S_{\tau_{i,j} } \tag {2}$$
    • 注:前一节中可以知道:
      • \(R_{\tau_i} = O_{\tau} + \frac{\lambda}{m}\sum_{j = 1}^{m}S_{\tau_{i,j} }\) 是包含了 Step-wise 和 Outcome 的融合奖励
      • \(S_{\tau_{i,j} } \in \{- 1, 1\}\) 是 Step \(i\) 下,奖励模型第 \(j\) 次打分得到的结果
    • \(R_{\tau_{i} }\in [- 1,1]\) ,反映了步骤 \(\tau_{i}\) 的整体质量
      • \(R_{\tau_{i} }< 0\) 表示质量差
      • \(R_{\tau_{i} } > 0\) 表示质量好
      • \(R_{\tau_{i} }\) 的值越接近 0,表示对该步骤的不确定性越大(可能好也可能坏,不好区分)
    • 这个 Step-wise 信号与第 \(j\) 次评估之间的一致性由 \(R_{\tau_{i} }\cdot S_{\tau_{i,j} }\) 捕获,本文将其用作该评估的监督信号
      • 问题:这里的表述不太清晰,如何理解这里的一致性?
  • 在策略优化过程中,策略的轨迹也充当奖励模型的训练环境(即 RM 也是动态更新优化的)
    • Refined 奖励模型为策略提供更强的奖励信号,并为指导环境任务调整提供更准确的反馈,这反过来又促进了策略和奖励模型的训练

Adaptation of Environment Benefits Both Policy and Reward Models,环境调整有益于策略和奖励模型

  • (本节中作者证明了优化上一节的这个目标可以提高奖励模型预测未来结果的准确性,并且本文的环境调整进一步促进了这种优化)
  • 本节目标:证明 对于任何目标策略来说,过于简单或者过于复杂的环境都不适合做这个策略的 RL 训练
  • 奖励模型信号的质量不仅取决于单个步骤的逻辑正确性,还取决于它预测该步骤未来影响的能力
  • 本文希望优化以下奖励精度:
    $$\mathcal{A} = P(S_{\tau_{i}^{+} } > S_{\tau_{i}^{-} }|O_{\tau^{+} } = 1,O_{\tau^{-} } = -1),$$
    • 其中 \(S_{\tau_{i} } = \frac{\sum_{j = 1}^{m} S_{\tau_{i,j} }}{m}\) 是由 \(r_{\phi}\) 分配的平均过程奖励
    • 理解:这个指标 \(\mathcal{A} > 0\) 的本质是:最终成功的轨迹的 Step-wise 奖励 大于 最终失败的轨迹的 Step-wise 奖励(这里使用概率来表达)
  • 定理 1 证明了这个奖励精度可以转化为一个可以通过本文的奖励设计来近似的目标:
    $$\mu \triangleq p_{+} + p_{- }$$
    • 其中 \(p_{+} = P(S_{\tau_{i}^{+},j} = 1)\) 和 \(p_{- } = P(S_{\tau_{i}^{-},j} = -1)\)
    • 注:这个精度是用于衡量环境是否合适的(不同策略下,需要用不同的环境训练,即最适配策略优化的环境应该是在训练过程中动态变化的)
  • Theorem 1
    • 当 \(m \rightarrow \infty\) 时,当且仅当 \(\mu > 1\) ,有 \(\mathcal{A} \rightarrow 1\)
    • 当 \(\mu > 1\) 时,\(\mathcal{A} \geq 1 - e^{- m(\mu - 1)^{2} / 4}\)
    • 目标 \(\mu = p_{+} + p_{- }\) 表明,用于估计 \(p_{+}\) 和 \(p_{- }\) 的采样密度应该平衡,而不是严重偏向某一侧;
      • 否则,估计器可能被单一类别主导,导致评估偏差
    • 然而,当由策略轨迹诱导的奖励模型训练环境在任务难度上不平衡时,这种平衡就可能被打破
  • Theorem 2
    • 目标如下:
      $$\mathbb{E}_{\tau \sim \pi_{\theta}(\cdot |q)}\mathbb{E}_{S_{\tau_{i,j} }\sim r_{\phi}(\cdot |\tau_{i})}[R_{S_{\tau_{i,j} } }] = 4\mathbb{E}_{q\sim Q}[\langle p_{+},f_{+}\rangle + \langle p_{-},f_{-}\rangle ] + C,$$
      • \(f_{+} \geq 0\) 和 \(f_{- } \geq 0\) 是 \(\tau\) 的重要性权重函数
      • \(\langle \cdot , \cdot \rangle\) 表示在 \(\tau \sim \pi_{\theta}(\cdot | q)\) 上的 \(L^{2}\) 内积
        • 问题:如何理解这里的内积含义?【这里写的晦涩难懂,符号也不太清晰,后续可以回来重新看看】
      • \(C\) 是与 \(\phi\) 无关的常数,且 \(| \cdot |\) 是 \(L^{2}\) 范数
    • 上式左边 :
      • 是奖励模型的 RL 目标
    • 上式右边 :
      • 【来自原文的奇怪描述】当 \(\lambda = 1\) 时,有右边的式子:
      • 理解:这里的 \(\lambda\) 是公式 1 中提到的 Step-wise 奖励与 Outcome-wise 奖励的加权系数
      • 当 \(P(O_{\tau} = - 1 | q, \pi_{\theta}) \rightarrow 1\):重要性权重的范数比 \(\frac{| f_{+} |}{| f_{- } |} \rightarrow 0\)
      • 当 \(P(O_{\tau} = 1 | q, \pi_{\theta}) \rightarrow 1\):\(\frac{| f_{+} |}{| f_{- } |} \rightarrow \infty\)
  • 这证明:
    • 当一个任务 \(q\) 对于策略模型来说过于困难(即 \(P(O_{\tau} = - 1 | q, \pi_{\theta}) \rightarrow 1\))或过于容易(即 \(P(O_{\tau} = 1 | q, \pi_{\theta}) \rightarrow 1\))时
      • \(p_{+}\) 和 \(p_{- }\) 之间的重要性采样变得极度不平衡,违反了定理 1 中建立的奖励精度目标 \(p_{+} + p_{- }\)
    • 基于这一 Insight,在本文的奖励系统中, 调节任务 \(q\) 的难度不仅可以促进策略训练,还可以改善过程奖励模型的训练

Critic Feedback for Environment Tasks

  • 本文使用策略的 Rollout 准确率来估计任务难度
    • 当准确率落在预设的阈值(\(\alpha_{\mathrm{low} }\) 和 \(\alpha_{\mathrm{high} }\))之外时
      • 会 Prompt 一个语言模型来修改任务,使其更难或更容易,同时保留原始任务的本质(参见附录 C.7 中的提示词)
    • 具体的修改由从奖励模型 \(r_{\tau_{i,j} }\) 总结出的评估痕迹(evaluative traces)来指导,这些痕迹是在获得 \(S_{\tau_{i,j} }\) 时生成的
  • 本文只总结那些表现出潜在失败的步骤 \(\tau_{i}\),即对于某些 \(j\) 满足 \(S_{\tau_{i,j} } = - 1\) 的步骤,以捕获策略可能的错误模式(附录 C.6)
    • 因此,任务调整依赖于准确的 Critic 反馈,并反过来产生更有效的调整,使策略和奖励模型都受益
  • 作者还对修改后的任务实施质量控制
    • 如果目标是使原始任务 \(q\) 更难,仅在 满足下面准确率 时接受修改后的任务 \(q^{\prime}\)
      $$ \alpha_{\mathrm{low} }< \mathrm{acc}(q^{\prime})< \mathrm{acc}(q) $$
    • 如果目标是使其更容易,仅在 满足下面准确率 时接受 \(q^{\prime}\)
      $$ \mathrm{acc}(q)< \mathrm{acc}(q^{\prime})< \alpha_{\mathrm{high} } $$
    • 这有助于确保新任务的有效性和调整的有效性(算法 1)
  • 然后将原始任务替换为任务集 \(Q\) 中被接受的任务 \(q^{\prime}\)

Experiments

  • 本节重点关注两种现实世界的智能体设置:
    • Compute use 代理和基于文本的交互式游戏,其中大型语言模型既用作策略也用作奖励模型,并且作者执行自动环境适应
  • 此外,还验证了 RLAnything 框架在 RLVR 编码任务上的有效性
    • 注:该任务中没有可用的交互环境

Experiment Settings

Models and Optimizations
  • 对于 OSWorld (2024) 上的 GUI 代理
    • 使用 Qwen3-VL-8B-Thinking 作为策略和奖励模型
    • 将评估的最大交互步数设置为 50,将 RL Rollout 的最大步数设置为 30
    • 在每个 RL 步骤中,采样 12 个任务,每个任务有 8 个独立的 Rollout 轨迹
    • 对于奖励模型,对每个策略 Response 执行 3 次评估
    • 使用 Qwen3-4B (2025) 进行任务适应
  • 对于 AlfWorld (2018; 2020) 上的 LLM 代理
    • 使用 Qwen2.5-7B-Instruct 作为策略模型
    • 使用 Qwen2.5-14B-Instruct 作为奖励模型 (2024a)
    • 使用 Qwen3-4B (2025) 进行任务适应
    • 将评估的最大步数设置为 60,将 RL Rollout 的最大步数设置为 40
    • 在每个 RL 步骤中,采样 16 个任务,每个任务有 8 个独立的 Rollout
  • 对于 Coding LLM
    • 使用与 AlfWorld 设置中相同的模型组合
    • 在每个 RL 步骤中,采样 64 个任务,每个任务有 32 个独立的代码解决方案生成和 32 个独立的单元测试生成
Training and Evaluation Datasets
  • 在每个设置中,使用单独的训练和测试数据集
  • 对于 GUI 代理,划分 OSWorld-verified 数据集,使得训练集排除 “Multiple Apps” 和 “Chrome” 任务类别,将其视为最终评估中的 OOD 任务
    • 在 230 个域内任务和 139 个 OOD 任务上进行评估
  • 对于 AlfWorld,遵循官方设置:
    • 任务被划分为 3.5k 个训练任务、140 个域内评估任务和 134 个 OOD 评估任务
  • 对于 Coding LLM ,使用 LiveCodeBench-V2 (2024)、CodeContests (2022) 和 LiveBench (2024) 进行评估,并使用 CodeContests (2022) 进行训练
    • Specificlly 对于 CodeContests,提取难度级别 \(\le 2\) 的任务,并将其随机划分为包含 4.5k 个样本的训练集和包含 200 个样本的评估集
Reward Modeling
  • 对于奖励建模,使用 LLM 作为生成式奖励模型:
    • Prompt LLM 评估每个步骤的质量及其对最终结果的潜在影响,然后在推理后输出 1 或 -1(附录 C.5)
  • 对于 GUI 代理,提供先前操作的摘要、最近的两张图像以及要评估的这两张图像之间的操作作为上下文
  • 对于 AlfWorld,总结了先前的操作及其观察到的结果
  • 在 Coding-LLM 设置中,使用单元测试生成器作为奖励模型,其中每个新生成的测试评估代码的一个方面
  • 在本文所有的实验中,奖励模型为每个策略步骤生成 3 个独立的评估(即 \(m = 3\))
Environment Task Adaptation
  • 在环境适应之前
    • 首先总结奖励模型的输出,这些输出针对被标记为潜在错误的步骤,定义为至少有一个最终得分为 -1 的步骤(附录 C.6)
    • 然后将此 Critic 反馈输入到语言模型中,以根据目标扰动重写任务,使其更容易或更难(附录 C.7)
  • 在 Coding-LLM 设置中,Critic 反馈仅仅是代码在生成的单元测试上的评估结果
  • 在 AlfWorld 设置中,环境模型使用 Critic 反馈和对当前环境的结构化摘要(包括对象位置和属性)重写任务
  • 在编码设置中,环境模型生成一个新任务以及相应的单元测试
  • 在 GUI 设置中,除了使用 Critic 反馈添加或移除提示来调整难度外,适应不同的目标需要创建新的验证文件
  • 本文为 230 个训练任务中的 47 个预先创建了额外的扰动版本(附录 C.8)
    • 每个扰动版本都包含其对应的评估器和验证器文件
  • 这些任务被包含在本文实验中所有训练设置中,以确保公平比较

Results and Insights

RLAnything Facilitates Policy Training,RLAnything 能促进策略训练
  • 图 4 中报告了三个训练曲线,其中每个方法都添加了一个额外的动态组件
    • 图 4 展示了每个动态组件都能持续改进策略优化
  • 对于曲线上的中间评估,将 OSWorld 的最大交互步数设置为 30,将 AlfWorld 的最大交互步数设置为 60
  • 可以发现,使奖励模型和环境都保持动态能产生更强的优化和更高的收敛点
    • 具体来说,联合优化奖励模型改善了监督信号,这反过来又有利于策略训练
  • 此外,环境适应不仅有利于策略,也有利于奖励模型(第 3.2.2 节),从而为策略训练带来三倍的增益
    • 表 1 中报告了域内和 OOD 任务的最终评估结果
    • 在 OOD 任务上的显著改进突显了作者优化框架更强的泛化能力
RLAnything Produces a Stronger Reward Model,产生更强的奖励模型
  • 从表 1 中可得出两个结论
    • 第一,本文的奖励设计(公式 2)有效地改进了奖励模型
    • 第二,适应环境任务进一步促进了奖励模型的训练,支持了本文的理论结果
  • 为了评估奖励模型的改进,本文考虑两个方面:
    • (i) 其评估步骤质量的能力(过程准确性)
    • (ii) 其预测步骤对最终结果影响的能力(结果准确性)
  • 标签来源:
    • 结果准确性的真实标签来自可验证的结果
    • 步骤质量标签是通过对提示评估步骤质量的更强推理模型进行多数投票获得的
    • 详情见附录 C.2
  • 从表 1 中,可以发现这两个准确性指标在所有设置优化后都有所提高,并且环境适应进一步提升了它们
  • 此外,本文还使用不同的监督模型进行了消融研究,结果见附录 B.1,显示了类似的结果
Adaptation of Environments Enables Active Learning from Experience,环境 Adaptation 允许从经验中 主动学习
  • 作者的环境适应是自动化的,并明确由奖励模型的 Critic 反馈指导,该反馈诊断策略在给定任务上可能出现的错误
  • 本节提供示例,展示这种有针对性的适应如何促进更主动的策略学习
  • 在图 3 的示例中
    • GUI 代理在独立的 Rollout 中未能获得任何成功的轨迹
      • 奖励模型指出了策略在此任务上犯的两个具体错误,其输出作为重写任务的诊断反馈
      • 修改后的提示添加了有针对性的提示,使策略能够实现成功的 Rollout 并更有效地学习,而不是依赖随机探索
      • 注:任务也可以向相反方向调整,以鼓励更具挑战性的探索
    • 在交互式文本游戏示例中,策略在所有轨迹中都成功了,但花费了大部分步骤来搜索对象
      • 模型通过用出现频率较低的目标对象替换当前对象来增加难度
      • 参见附录 B.2 中的其他示例
State-of-the-Art Performance of the Optimized Multimodal GUI Agent,优化后的多模态 GUI Agent 到达 SOTA 性能
  • 本文进一步扩展了 GUI 代理的 RLAnything 优化(图 8,左),并将其与开源基线进行比较,包括 UI-TARS1.5-7B (2025)、OpenCUA-7B (2025b) 和 Qwen3-VL-8B-Thinking (2025)
    • 注:图 8 左给出的是训练 ACC 曲线,可以看到训练过程中 ACC 指标是一直在涨的
  • 如图 5 所示,优化后的模型在所有 OSWorld 任务类别中都取得了显著性能,突显了作者优化框架的有效性
    • 优化后的模型在 OSWorld 上的准确率提高了 9.1%
    • 在分布外任务上,模型也提高了 5.2%
Advantages of Integrating Step-wise and Outcome Rewards for Policy Training,整合 Step-wise 和 Outcome 奖励
  • 在复杂的现实世界环境中,策略必须与环境交互,在长轨迹上进行充分探索(见图 6(b)), Outcome Reward 过于稀疏,无法提供有效的训练信号
  • 将常用的 Outcome-only Reward 与本文的整合奖励设计(公式 1)在 LLM 代理和 GUI 代理设置的 RL 训练曲线(图 6(a))上进行了比较
    • 问题:这里最优的方案是 Optimized Step-wise Reward Only,但是没有非常明确给出这个奖励的定义,是 Step-wise 标准化以后得到的奖励吗?
  • 结果突显了整合奖励的必要性,它将细微的逐步信号与可验证的最终结果的忠实监督相结合
Optimized Reward Model Supervision Outperforms Human-Labeled Outcome Supervision,Optimized RM 超过人工打标的 Outcome 监督
  • 在 Compute use 任务等复杂的现实世界环境中,定义可验证的结果通常需要人工努力
  • 特别是,GUI 评估器通常实现为人工编写的评估脚本,这限制了用于探索和训练的环境扩展
  • 本文提议仅使用 Optimized RM 提供的逐步信号,该模型可以评估当前操作及其未来影响
    • 具体来说,仅使用本文的 Optimized RM 进行逐步监督来训练策略,而不使用来自评估器脚本的任何 Outcome Reward
    • 令人惊讶的是,这种设置甚至优于使用可验证 Outcome Reward 的训练(见图 6(a)),展示了本文的框架在改进奖励模型方面的有效性,以及其在计算机等现实世界环境中实现大规模、自我进化代理的潜力
Also Works for Single-Turn Coding Tasks,单轮 Coding 任务也 Work
  • 除了交互式设置外,RLAnything 也适用于 RLVR 风格的编码任务:
    • 策略奖励是代码在单元测试上的通过率
  • 按如下方式为每个生成的单元测试分配奖励
    • 如果一个生成的代码通过了数据集提供的所有真实单元测试,作者将其标记为真实代码
    • 如果一个生成的单元测试在所有真实代码上都能通过,将其标记为真实单元测试
      • 一个真实单元测试获得的奖励等于它导致失败的非真实代码的数量
      • 否则,它获得的奖励等于它错误地让其通过的非真实代码的数量的负数
  • 本文附录 A.2 中展示了这与本文通用框架的等价性
  • 为了评估奖励模型,本文作者测量了生成的单元测试的正确性及其在检测代码正确性方面的准确性(附录 C.2)
  • 总体而言,表 1 显示,通过联合单元测试训练和环境适应,编码性能和单元测试生成质量都得到了提高
Trade-off Between Outcome and Self-consistency Supervision in Optimization
  • 在整合奖励设计 \(R_{\tau_i}\) 中,来自最终结果 \(O_{\tau}\) 的监督与聚合的逐步信号 \(\lambda \sum_{j = 1}^{m}S_{\tau_{i,j} } / m\) 由超参数 \(\lambda\) 平衡
  • 除了对策略的影响外,\(\lambda\) 也影响奖励模型的监督:
    • 较大的 \(\lambda\) 更强调 Step-wise 质量,而较少强调预测结果影响
  • 本文在 AlfWorld 设置中对 \(\lambda\) 进行了消融研究,进行了 100 个 RL 训练步骤,评估了策略和奖励模型
    • 为了研究对奖励模型的影响,本文在 \(R_{\tau_i}\) 中固定 \(\lambda = 1\),并在 \(R_{\tau_i}\) 中改变 \(\lambda\)
    • 为了研究对策略的影响,本文在 \(R_{\tau_i}\) 中固定 \(\lambda = 1\),并在 \(R_{\tau_i}\) 中改变 \(\lambda\)
  • 如表 2 所示,\(\lambda\) 确实在基于结果和基于自洽性的监督之间进行了权衡,策略优化在 \(\lambda = 1\) 时表现最佳,这是本文默认使用的
  • 报告的数字是训练曲线上最后三次评估的平均值,每次评估都是三次独立运行的平均值
  • 本文附录 A.2 中讨论了 \(\lambda\) 如何影响理论结果
Dynamics of Accepted New Tasks
  • 本节分析了优化过程中接受的任务(见图 7(a))
    • 1)接受的任务数量随训练步数近似线性增长,表明了环境扩展的潜力
    • 2)本文使用 策略在这些接受任务上的准确率 来表征任务难度
      • 由于初始样本有限,准确率早期有所波动,但很快稳定在中等水平
        • 也就是说训练过程中,任务难度始终保持在中间水位
      • 收敛值低于 0.5,因为原始任务对策略来说大多具有挑战性
    • 3)本文使用更强的推理模型(GUI 设置使用 Qwen3-VL-32B-Thinking,AlfWorld 和编码设置使用 Qwen3-32B)评估接受任务的质量,每个任务运行 16 次独立试验,并报告至少一次成功运行的比率
    • 得到的至少一次通过率分别为 96.0%、96.7% 和 94.2%
  • 这些结果证明了作者接受机制在过滤错误合成任务方面的有效性
Application on Agentic Coding
  • 本文在多种代理编码方法下评估了优化后的编码模型,包括 MPSC (2024)、AlphaCodium (2024)、\(S^{\star}\) (2025a) 和 Best of N 方法(附录 C.3)
  • 从图 8(右)中,可以发现优化后的模型显著提高了各种方法下的代理编码性能
Response Length on AlfWorld
  • 作者还研究了 AlfWorld 设置中的响应长度和推理模式(图 7(b))
    • 优化前,策略模型 (Qwen2.5-7B-Instruct) 在采取行动前通常无法产生足够的推理
    • 优化后,其思维链长度迅速增加,到训练结束时,响应变得更加稳定和高效,同时仍保持足够的推理能力

Related Works

Reinforcement Learning of Large Language Models

  • RL 已被用于增强语言模型的推理能力,并已应用于包括编码任务 和 RAG 任务 等场景
  • 随着 Agentic AI 的广泛采用,RL 也已扩展到多轮设置,策略模型在长轨迹上与环境交互
  • 但奖励稀疏性 (2023; 2024) 和现有环境的有限规模 仍然是关键挑战

Reward Modeling and Environments

  • RM(尤其是 GRM),在使 RL 变得实用方面发挥着重要作用
  • RLVR Setting 中,单一的 Outcome Reward 可以联合优化奖励模型和策略,但由于缺乏逐步监督,这并不能直接扩展到多轮设置
  • 环境质量对于有效的 RL 也至关重要 (2024; 2022; 2023)
  • 先前的工作表明,调整任务难度可以改善策略训练 (2025; 2025),这激发了生成或修改任务以增强学习信号的方法 (2025b; 2025a; 2025; 2024)
    • 例如,Zeng 等人 (2025) 构建了一个 RLVR 引擎,其中每个任务都有多个难度级别
    • Xue 等人 (2026) 通过可验证的自动化任务合成扩展了这一方向
    • 但这些系统缺乏长时程交互任务所需的逐步信号
  • 相比之下,本文作者证明了环境、策略和奖励模型的耦合优化能为整个系统产生更强的信号

附录 A:Proof of Theorems

  • 详情暂见原文(待补充)
    • 包含对 Theorem 1 和 Theorem 2 的证明

附录 B:Additional Experimental Results

B.1. Ablation Studies on Using Different Models for Reward Model Evaluation,不同模型进行奖励模型评估的消融研究

  • 本节展示了使用不同的监督模型来评估分配步骤奖励的准确性会得出相同的结论
    • 在附录 C.2 中提供了这种评估方法的细节
  • 在 GUI 设置中使用 OpenCUA-72B,在 LLM 智能体设置中使用 gpt-oss-20b (OpenAI, 2025) 进行了消融研究
  • 此外,本文作者还改变了用于生成奖励模型评估的轨迹的模型:
    • 在 GUI 设置中使用 OpenCUA-7B,在 LLM 智能体设置中使用 LLaMA-3.1-8B-Instruct (2024)
  • 结果(表 3 和表 4)与表 1 中的主要结果一致,验证了本文使用 LLM-as-a-judge 进行评估的方法

B.2. Examples of Environment Adaptation,Environment Adaptation 的示例和分析

  • 下面的 GUI 智能体示例说明了环境模型如何使用总结的错误模式向任务 Prompt 中添加 Tips,从而使策略更容易完成任务

    • 策略在此任务上的准确率从 0 提高到 0.125
  • 原始任务对于策略来说太难了,没有产生任何成功的轨迹,因此无法从成功案例中获得训练信号

  • 添加 Tips 简化任务后,策略偶尔会成功,提供学习信号,使其能够逐渐解决任务

  • GUI Task Adaptation Example 1 (Target: Easier)

    1
    2
    3
    4
    **template**: Using the Pivot Table feature, summarize the total revenue for each promotion type in a new sheet (’Sheet2’), with the promotion names as the column headers.
    **old task prompt**: Summarize the total revenue for each promotion type in a new sheet (Sheet2) with the promotion names as the column headers using the Pivot Table feature.
    **new task prompt**: Using the Pivot Table feature, summarize the total revenue for each promotion type in a new sheet (’Sheet2’), with the promotion names as column headers. Ensure ’Promotion’ is in Column Fields and use ’Insert’, ’PivotTable’ for correct setup. Verify field names to avoid confusion between ’Date’ and ’Promotion’.
    **policy accuracy change**: 0 → 0.125 (easier for the policy)
    • 中文版:
      1
      2
      3
      4
      * **模板** : 使用数据透视表功能,在一个新工作表('Sheet2')中汇总每种促销类型的总收入,促销名称作为列标题
      * **旧任务提示** : 使用数据透视表功能,在一个新工作表(Sheet2)中汇总每种促销类型的总收入,促销名称作为列标题
      * **新任务提示** : 使用数据透视表功能,在一个新工作表('Sheet2')中汇总每种促销类型的总收入,促销名称作为列标题。确保将“促销”放在列字段中,并使用“插入”、“数据透视表”进行正确设置。验证字段名称以避免“日期”和“促销”混淆
      * **策略准确率变化** : \\(0 \rightarrow 0.125\\) (对策略来说更容易)
  • 下面的示例展示了 GUI 任务对策略模型来说太容易的情况,因此扰动通过切换到更具挑战性的任务模板使任务更难

  • GUI Task Adaptation Example 2 (Target: Harder)

    1
    2
    3
    4
    5
    6
    **template candidates**:
    • template1: Copy the “Revenue” column along with the header to a new sheet named “Sheet2”.
    • template2: Copy the “Revenue” column along with the header to a new sheet named “Sheet2”. Then rename this “Revenue” column in “Sheet2” to “Profit”.
    **old task prompt**: Copy the “Revenue” column along with the header to a new sheet named “Sheet2”.
    **new task prompt**: Copy the “Revenue” column along with the header to a new sheet named “Sheet2”. Then rename this “Revenue” column in “Sheet2” to “Profit”.
    **policy accuracy change**: 1.0 → 0.625 (harder for the policy)
    • 中文版:
      1
      2
      3
      4
      5
      6
      * **模板候选** :
      - 模板 1: 将“收入”列及其标题复制到名为“Sheet2”的新工作表中
      - 模板 2: 将“收入”列及其标题复制到名为“Sheet2”的新工作表中,然后将“Sheet2”中的此“收入”列重命名为“利润”
      * **旧任务提示** : 将“收入”列及其标题复制到名为“Sheet2”的新工作表中
      * **新任务提示** : 将“收入”列及其标题复制到名为“Sheet2”的新工作表中,然后将“Sheet2”中的此“收入”列重命名为“利润”
      * **策略准确率变化** : \\(1.0 \rightarrow 0.625\\) (对策略来说更难)
  • 以下两个示例通过改变涉及的对象数量来调整任务难度

  • ALFWorld Task Adaptation Example 1 (Target: Easier)

    • 英文版见原论文
    • 中文版:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      * **任务** : 修改目标词元 (对象类型,容器类型) 以使任务更容易,同时保留原始目标框架
      * **响应** : 我需要找到一对满足约束且更有可能在当前状态下成功完成的对象和容器类型。查看“可清洁”列表,许多对象都是可清洁的。“可容纳”列表显示,许多容器可以容纳许多对象
      原始目标是清洁马铃薯类型并将其放入微波炉类型。虽然有效,但成功可能性较低,因为:
      1. 马铃薯类型只有 2 个实例 (potato1, potato2)
      2. 微波炉类型只能容纳某些对象 (AppleType, BowlType, BreadType, CupType, EggType, MugType, PlateType, PotatoType, TomatoType)
      3. 智能体在 loc32,这可能不在微波炉附近
      一个更好的选择是具有更多实例的对象和可以容纳它的容器。查看“可清洁”列表,“CupType”有 3 个实例 (cup1, cup2, cup3),并且可以放置在包括微波炉类型在内的许多容器中
      目标“清洁 CupType 然后放入 MicrowaveType”将:
      - 由于实例更多,更有可能成功
      - 有效,因为 CupType 是可清洁的,并且 MicrowaveType 可以容纳它
      - 遵循清洁对象并将其放入容器中的框架
      **最终答案**
      CupType, MicrowaveType
      * **策略准确率变化** : 0.125 \\(\rightarrow\\) 0.5
  • ALFWorld Task Adaptation Example 2 (Target: Harder)

    • 英文版见原轮文
    • 中文版:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      * **任务** : 修改目标词元 (对象类型,容器类型) 以使任务更难,同时保留原始目标框架
      * **响应** : 让我分析创建更难目标的要求
      原始目标是将 RemoteControlType 放入 ArmChairType。这是可行的,因为 (ArmChairType, RemoteControlType) 在 canContain 列表中
      为了使其更难,我需要:
      1. 选择实例更少的对象类型
      2. 选择可以容纳它但实例更少的容器类型
      3. 确保该对是有效的 (满足 canContain)
      查看对象类型:
      - WatchType 有 3 个实例 (watch1, watch2, watch3)
      - KeyChainType 有 3 个实例 (keychain1, keychain2, keychain3)
      - CreditCardType 有 1 个实例 (creditcard1)
      查看容器类型:
      - ArmChairType 有 2 个实例 (armchair1, armchair2)
      - CoffeeTableType 有 2 个实例 (coffeetable1, coffeetable2)
      - DiningTableType 有 1 个实例 (diningtable1)
      - SofaType 有 1 个实例 (sofa1)
      对 (KeyChainType, ArmChairType) 是有效的 (在 canContain 中),并且:
      - KeyChainType 有 3 个实例
      - ArmChairType 有 2 个实例
      这是一个有效的对,但它并不比原始目标更难
      让作者试试 (CreditCardType, ArmChairType):
      - CreditCardType 有 1 个实例
      - ArmChairType 有 2 个实例
      - (ArmChairType, CreditCardType) 在 canContain 中
      这对是有效的,并且实例更少,使其更难
      所以更难的目标将是:
      **最终答案**
      CreditCardType, ArmChairType
      * **策略准确率变化** : 1.0 \\(\rightarrow\\) 0.25

附录 C:Experimental Details

C.1. Models and Settings

  • 对于应用于 OSWorld (2024) 的 GUI 智能体
    • 本文在实验中使用了 Qwen3-VL-8B-Thinking (2025)、UI-TARS1.5-7B (2025) 和 OpenCUA-7B (2025b)
    • 在最终评估中,本文将最大步数设置为 50,温度设置为 0,并报告 3 次独立运行的平均准确率
    • 在 RL 优化期间,将最大步数设置为 30,并对策略模型使用温度 1.0,对过程奖励模型使用温度 0.8
    • 对于策略模型,在每个 RL 步骤中,作者采样 12 个任务,每个任务有 8 条独立的 Rollout 轨迹
    • 上下文管理遵循标准的 OSWorld 流程 (2024),包括最近的三张图像 ,并将所有先前的操作总结为上下文
    • 当使用 OpenCUA 时,将其 CoT 级别设置为 2,遵循其默认设置
      • 对于奖励模型,使用 Qwen3-VL-8B-Thinking 作为基座模型,并对每个策略 Response 进行 3 次评估
      • 奖励上下文通过总结所有先前的操作、包含最近的两张图像以及这两张图像之间作者要求奖励模型评估的操作来构建
      • 本文使用 Qwen3-4B (2025) 来调整任务
    • 在优化期间,本文将执行后等待时间(截图前)设置为 0 以保持训练效率,而在评估期间则设置为 5 秒
      • 本文使用 12 个节点进行训练
  • 对于应用于 AlfWorld (2018; 2020) 的 LLM 智能体
    • 使用 Qwen2.5-7B-Instruct 作为策略模型,Qwen2.5-14B-Instruct 作为奖励模型 (2024a),并使用 Qwen3-4B (2025) 来调整任务
    • 在最终评估中,本文将最大步数设置为 60,温度设置为 0.8,并报告 3 次独立运行的平均准确率
    • 在 RL 优化期间,本文将最大步数设置为 40,并对策略模型和过程奖励模型使用温度 0.8
    • 在每个 RL 步骤中,采样 16 个任务,每个任务有 8 条独立的 Rollout
    • 通过总结所有先前的操作及其相应的观察,并包含最近要选择的动作来构建策略模型上下文
    • 使用 8 个节点进行训练
  • 对于 Coding LLM ,使用与上述 LLM 智能体设置中相同的模型组合
    • 在每个 RL 步骤中,采样 64 个任务,每个任务有 32 次独立的代码解决方案生成和 32 次独立的单元测试生成
    • 使用 4 个节点进行训练
  • 在所有 RL 训练过程中
    • 在策略目标中使用以下标准超参数:裁剪阈值 \(\epsilon = 0.2\) (2017),KL 散度权重 \(\beta = 0.01\) ,学习率为 \(1 \times 10^{-6}\)
    • 使用 k3 KL 估计器,并使用 AdamW (2017) 进行优化
    • 为 GUI 智能体训练 240 步,为 LLM 智能体训练 200 步,为 Coding LLM 训练 300 步,以获得表 1 中报告的最终模型

C.2. Evaluation for Reward Models

  • 对于 OSWorld 和 AlfWorld 设置,本文评估了 Step-level 质量(过程准确率)和预测某一步骤对最终结果影响的能力(结果准确率)
    • 对于结果准确率,其 Ground Truth 标签就是可验证的结果
    • 对于过程准确率,标签由一个 比所使用的奖励模型更强的推理模型提供(这不够准确吧?)
  • 在 OSWorld 设置中
    • 使用 Qwen3-VL-32B-Thinking 对每个策略 Response 提供八次独立的评估,使用的 Prompt 见 C.5 节,并将多数投票结果(1 或 \(-1\))作为 Ground Truth 标签
    • 策略 Response 由 Qwen3-VL-8B-Thinking 在 OSWorld 的多个应用任务上生成:
      • 对于每个任务,策略采样 16 条独立的 Rollout,每个任务产生 16 条轨迹
  • 在 AlfWorld 设置中
    • 使用 Qwen3-32B 进行评估,并使用 Qwen2.5-7B-Instruct 在 AlfWorld OOD 评估集(第 3.1.2 节)上生成轨迹,使用与 OSWorld 设置相同的协议和超参数
  • 在编码 Setting 中
    • 使用 Qwen2.5-7B-Instruct 作为策略模型,为评估数据集(LiveCodeBench、CodeContests 或 LiveBench)中的每个任务生成 16 个独立的代码解决方案,并使用 Qwen2.5-14B-Instruct 作为奖励模型,为每个任务生成 32 个独立的单元测试
    • 如果一个生成的解决方案通过了所有数据集提供的单元测试,则被标记为 Ground Truth 正确
    • 如果一个生成的单元测试通过了所有 Ground Truth 正确的解决方案,则该单元测试是正确的
      • 如果它是正确的,并且能拒绝所有非 Ground Truth 的解决方案(即导致它们失败),那么它是完美的
      • 本文使用正确率和完美率来评估奖励模型,其中完美率对应表 1 中报告的检测准确率

C.3. Agentic Coding Applications

  • 在多种智能体编码方法下评估优化后的编码模型,包括 MPSC (2024)、AlphaCodium (2024) 和 \(S^{\star}\) (2025a)
  • 在 MPSC 中
    • 为每个任务生成 8 个代码、单元测试和规范样本
    • 一个规范是一对函数(前置条件和后置条件),它定义了程序的有效输入空间和预期的输入输出行为,作为其预期功能的形式化描述
    • 然后遵循迭代优化过程计算一致性分数,用于识别最佳的代码解决方案
  • 在 AlphaCodium 中
    • 为每个任务使用对公开测试的推理生成 8 个代码解决方案,以及 8 个对应的单元测试
    • 每个解决方案根据在公开测试上的执行结果进行两次优化迭代,然后根据在生成的单元测试上的执行结果再进行两次迭代
    • 具体来说,每个优化步骤都以单元测试、当前代码和执行日志为条件,并决定是否以及如何更新解决方案
  • 在 \(S^{\star}\) 中
    • 生成 8 个代码解决方案,并应用四轮使用公开测试的自调试,以获得 8 个优化版本
    • 由于调试依赖于 Ground Truth 单元测试的执行结果,本文直接在测试失败时提示模型修改代码
    • 最终的解决方案使用它们的成对比较方法选择,以生成的单元测试作为评估信号
  • 本文作者还考虑了最简单的测试时扩展方法,即最佳 N 选一
    • 具体来说,独立生成 8 个代码和 8 个单元测试,并选择通过最多生成单元测试的代码作为最终解决方案

C.4. Policy Prompt Templates

  • 在 RL 采样和最终评估中都使用这些模板进行上下文管理

  • 对于 OpenCUA 和 UI-TARS,遵循标准的 OSWorld 流程,该流程总结先前的操作,同时保留最近的三张图像作为上下文

  • GUI Agent Prompt Templates (Qwen3-VL-8B-Thinking)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    **Tool-Calling; System Prompt**
    ’’’<|im_start|>system
    # Tools
    You may call one or more functions to assist with the user query.
    You are provided with function signatures within <tools></tools> XML tags:
    <tools>
    {{tools_def}}
    </tools>
    For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
    <tool_call>
    {"name": <function-name>, "arguments": <args-json-object>}
    </tool_call>
    # Response format
    Response format for every step:
    1) Action: a short imperative describing what to do in the UI.
    2) A single <tool_call>...</tool_call> block containing only the JSON:
    {"name": <function-name>, "arguments": <args-json-object>}.
    Rules:
    - Output exactly in the order: Action, <tool_call>.
    - Be brief: one sentence for Action.
    - Do not output anything else outside those parts.
    - If finishing, use action=terminate in the tool call.
    <|im_end|>
    ’’’
    Message Construction
    # We construct a multimodal message list as follows:
    # 1) A system message containing the tool-calling specification and the tool schema.
    # 2) For historical context, we keep:
    # - All past actions as a text-only history (Step 1: ..., Step 2: ..., ...).
    # - At most the most recent 3 screenshots (image-only history).
    # 3) For each retained past step i:
    # - Append a user message with the screenshot i.
    # - Append an assistant message with the model’s response at step i (Action + < tool_call>).
    # 4) For the current step:
    # - Append a user message containing the current screenshot + the instruction prompt
    # (which includes the instruction and the full action history).
    # Variables used in the paper template:
    # - tools_def: JSON string of tool definitions (i.e., json.dumps(tools_def))
    # - step_index: current step id (0-based)
    # - screenshots[i]: base64-encoded PNG screenshot at step i (string without the data: prefix)
    # - responses[i]: assistant response text at step i (Action + <tool_call>)
    # - actions: list of action strings taken so far (for the text-only action history)
    # - instruction: the current task instruction (string)

    messages = [{"role": "system", "content": [{"type": "text", "text": "system_prompt"}]}]

    # Keep at most the last 3 screenshots
    start_i = max(0, step_index - 3 + 1)
    for i in range(start_i, step_index):
    # 历史截图 i
    img_url_i = f"data:image/png;base64,{screenshots[i]}"
    messages.append({"role": "user", "content": [{"type": "image_url", "image_url": {"url": img_url_i} }]})
    # 历史助手响应 i (Action + <tool_call>)
    messages.append({"role": "assistant", "content": [{"type": "text", "text": responses[i]}]})

    # Text-only full action history
    previous_actions_str = "None" if len(actions) == 0 else "\n".join([f"Step {k+1}: {a}" for k, a in enumerate(actions)])
    instruction_prompt = f"""
    请根据UI截图、指令和之前的操作,生成下一步
    指令:{instruction}
    之前的操作:{previous_actions_str}
    """
    # Current screenshot + instruction prompt
    curr_img_url = f"data:image/png;base64,{screenshots[step_index]}"
    messages.append(
    {"role": "user", "content": [
    {"type": "image_url", "image_url": {"url": curr_img_url} },
    {"type": "text", "text": instruction_prompt},
    ]}
    )
  • LLM Agent Prompt Templates (ALFWorld)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    **Guide Prompt)**
    guide = {
    "You are playing a text game. Your objective is to complete the task as soon as possible.\n"
    "Below is your trajectory so far and current candidate actions.\n"
    "You need to think step by step then put the integer (the index of your chosen action) in \\boxed{}. \n"
    }

    **Trajectory Rendering; summarized history**

    # The trajectory is summarized into alternating observation/action lines

    def_render_traj(traj):
    lines = []
    for t in traj:
    if "obs" in t and t["obs"] is not None:
    lines.append(f"observation: {t['obs']}")
    if t.get("act") is not None:
    lines.append(f"you took action: {t['act']}")
    return "\n".join(lines)

    trajectory_history =_render_traj(traj)

    **Full Prompt Template**

    '''<|im_start|>system
    You are a helpful assistant.<|im_end|>
    <|im_start|>user
    { {guide} }<|im_start|>system
    You need to think step by step then choose one action by number:<|action_options|><|im_end|>
    <|im_start|>assistant
    '''
    { {trajectory_history} }

    You need to think step by step then choose one action by number: { {action_options} }<|im_end|>
    <|im_start|>assistant
    '''

    ** Coding LLM Prompt 模板**

    ```python
    '''<|im_start|>system
    You are a helpful assistant that helps the user solve programming problems.<|im_end|>
    <|im_start|>user
    You need to think first then write a Python script.
    You should use input() to read input and print() to produce output in your script.
    This is the problem:
    <|prom|><|prom|><|prom|><|prom|><|prom|><|prom|>
    You should put your code in "python ".
    <|im_end|>
    <|im_start|>assistant
    '''

C.5. Process Reward Model Prompt Templates,PRM Prompt 模板

  • 对于 GUI 智能体 Setting

    • 本文使用 Qwen3-VL-8B-Thinking 作为过程奖励模型来评估每个策略 Response
    • 奖励模型上下文由以下部分组成
      • 所有先前操作的摘要
      • 最近的两张图像
      • 评估的这两张图像之间的操作
  • 对于 AlfWorld 设置

    • 本文提供策略 Prompt 和 Response,并要求 LLM 评判该 Response
  • 在这两种 Setting 中,Prompt 旨在评估 Step-level 质量以及该步骤对最终结果的潜在影响

  • 最终输出的奖励只能是 1 或 -1

    • 对于 Coding LLM 设置,提示 LLM 生成单元测试
    • 这些单元测试的质量可作为对生成代码某些方面的评估信号,并可用作过程奖励的一种特殊形式
  • GUI Agent Rewarding Prompt Templates

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    # We build reward_messages as a multimodal user content list.
    # The reward prompt includes:
    # - A text-only prefix containing "Previous Actions" (older action history).
    # - A short window of recent steps: for each step i in the window,
    # (a) the environment screenshot at step i,
    # (b) the agent action taken at step i.
    # - The current observation screenshot (the state after the most recent action).
    # - A strict evaluation instruction describing the agent objective and the most recent response.
    # Variables used in the paper template:
    # - step_index: current step id (0-based, the "most recent step" is step_index)
    # - actions[i]: action text taken at step i
    # - instruction: task instruction / objective string
    # - response: the agent’s most recent response (reasoning + action/tool call)
    # - reward_messages: chat message list for the reward model
    # - reward_user_content: multimodal user content list (text/image blocks)

    reward_user_content = []

    # 最多为奖励上下文保留最近 2 步(不包括当前 Observation)
    rstart_i = max(0, step_index - 2 + 1)

    # (1) 之前的操作:rstart_i 之前的所有操作
    prev_lines = []
    for i in range(rstart_i):
    prev_lines.append(f"Step {i+1}: {actions[i]}")
    previous_reward_actions_str = "\n".join(prev_lines) if prev_lines else "None"
    reward_user_content.append({"type": "text", "text": f"Previous Actions:\n{previous_reward_actions_str}"})

    # (2) 最近的步骤窗口:对于 [rstart_i, step_index) 范围内的每个步骤 i
    for i in range(rstart_i, step_index):
    reward_user_content.append({"type": "text", "text": "Image of environment:\n"})
    reward_user_content.append({"type": "image", "image": "image"})
    reward_user_content.append({"type": "text", "text": f"\nAction of agent:\nStep {i+1}:\n{actions[i]}\n"})

    # (3) 当前观察图像(执行最近操作后)
    reward_user_content.append({"type": "text", "text": "Agent's current observation:\n"})
    reward_user_content.append({"type": "image", "image": "image"})

    # (4) 评估指令(目标 + 最近响应)
    REWARD_INSTRUCTION_TEMPLATE = r"""
    You are a strict evaluator to evaluate the most recent step of the agent in the following.

    Objective of Agent: {instruction}

    Agent's most recent step (reasoning + action): {response}
    """
    reward_user_content.append({
    "type": "text",
    "text": "\n" + REWARD_INSTRUCTION_TEMPLATE.format(instruction=instruction, response=response)
    })
    reward_messages.append({"role": "user", "content": reward_user_content})
  • 在评估奖励模型预测的 Step-level 质量时,使用以下奖励指令模板并要求 Qwen3-VL-32B-Thinking 提供标签:

  • REWARD_INSTRUCTION_TEMPLATE for evaluating reward model’s step-wise accuracy (OSWorld)

    1
    2
    3
    4
    5
    6
    7
    REWARD_INSTRUCTION_TEMPLATE = r"""
    You are a strict evaluator to evaluate the most recent step of the agent in the following. Focus on the quality of this step.

    Objective of Agent: {instruction}

    Agent's most recent step (reasoning + action): {response}
    """
    • 问题:这里不应该是一个 Meta Evaluator 吗?
  • LLM Agent Rewarding Prompt Templates (ALFWorld)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    '''<|im_start|>system
    You are a helpful assistant.
    <|im_end|>
    <|im_start|>user
    You are a judge for an agent acting in a text-based environment.
    Evaluate ONE step using:
    - the agent's prompt (observation + candidate actions),
    - its response (reasoning + chosen index), and
    - the environment's next observation after executing that action.

    Scoring (binary):
    Score 1 if ALL are true:
    (a) The selected action is appropriate for the current observation and task goal (it reasonably explores, progresses or completes the task);
    (b) The reasoning is present, relevant, and not self-contradictory (no hallucinated objects/locations);
    (c) The chosen index exists in the candidate list, and the resulting next observation is consistent with the described action.
    Otherwise score -1. Cases include: no reasoning provided; index out of range; clearly irrelevant; undoes progress; self-contradictory/hallucinated reasoning; or next observation contradicts the action.

    Important: think first then put the final score in \\boxed{}.

    Agent's prompt:
    { {policy_prompt} }

    Agent's response:
    { {policy_response} }

    Next observation after this action:
    { {next_obs} }
    <|im_end|>
    <|im_start|>assistant
    '''
  • 在评估奖励模型预测的 Step-level 质量(AlfWorld Setting)时,使用以下奖励指令模板并要求 Qwen3-32B 提供标签:

  • Prompt Template for evaluating reward model’s step-wise accuracy (Alf World)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    '''<|im_start|>system
    You are a helpful assistant.
    <|im_end|>
    <|im_start|>user
    You are a judge for an agent acting in a text-based environment.
    Evaluate ONE step using:
    - the agent's prompt (observation + candidate actions),
    - its response (reasoning + chosen index), and
    - the environment's next observation after executing that action.

    Scoring (binary):
    Score 1 if ALL are true:
    (a) The selected action is appropriate for the current observation;
    (b) The reasoning is present, relevant, and not self-contradictory (no hallucinated objects/locations);
    (c) The chosen index exists in the candidate list, and the resulting next observation is consistent with the described action.
    Otherwise score -1. Cases include: no reasoning provided; index out of range; clearly irrelevant; undoes progress; self-contradictory/hallucinated reasoning; or next observation contradicts the action.

    Important: think first then put the final score in \\boxed{}.

    Agent's prompt:
    { {policy_prompt} }

    Agent's response:
    { {policy_response} }

    Next observation after this action:
    { {next_obs} }
    <|im_end|>
    <|im_start|>assistant
    '''
  • Coding LLM Reward Prompt Template

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    REWARD_TEST_PROMPT = r"""<|im_start|>system
    You are a rigorous unit-test designer for coding problems.
    You must produce exactly ONE new test example that is correct and discriminative.
    <|im_end|>
    <|im_start|>user
    You need to provide a new test example. A good test example should be completely
    - accurate and conform to the problem's format requirements, while also
    - possessing enough discriminative power to distinguish correct code from
    - incorrect code.

    Before providing a test example, you must think carefully and reason step by step to
    - derive an input and output you are very confident are correct. For example,
    - start by designing an input you can reliably handle, then compute the output
    - step by step. If you're unsure about the output, revise or re-design the input
    - to ensure accuracy. Directly providing input/output pairs without this
    - process is discouraged, as it often results in low accuracy.

    Finally, after completing these previous thinking and derivation steps (you should
    - not write the final test example unless you have gone through these steps very
    - thoroughly), you MUST put your final test example in the following format:

    **Test Input:**
    '''
    <put the EXACT stdin content here>
    '''
    **Test Output:**
    '''
    <put the EXACT stdout content here>
    '''
    **Explanation:** <brief explanation here>

    IMPORTANT:
    - Output must contain exactly one **Test Input:** block and one **Test Output:** block.
    - Use triple backticks exactly as shown.
    - The test must be self-contained and match the problem format.

    Problem: { {problem} }
    <|im_end|>
    <|im_start|>assistant
    """

C.6. Error Pattern Summarization and Prompt Templates,错误 Pattern 总结

  • 通过总结过程奖励模型输出的思考部分来识别策略可能出错的地方

  • 对于每个任务,获得几个句子来描述策略在解决任务时所犯的错误

  • 对于 GUI 智能体

    • 首先通过聚合至少一个评估分数为 \(-1\)(表示潜在错误)的步骤上的独立评估来进行 Step-level 总结,生成 Step-level 摘要
    • 然后进行 Trajectory-level 总结:
      • 对于每条轨迹,使用 Step-level 摘要作为上下文,并要求模型总结整个轨迹中发生的错误
      • 对于每个任务的每条策略轨迹,获得一个关于策略错误模式的简洁摘要
  • 对于 AlfWorld 上的 LLM 智能体

    • 直接使用完整轨迹(智能体的操作和相应的观察),并突出显示所有评估分数均为 \(-1\) 的步骤作为总结上下文
    • 由于这里的上下文短得多且直接,本文未使用 GUI 智能体设置中采用的两阶段 Step-level 后接 Trajectory-level 总结
  • 本文为 OSWorld 设置使用 Qwen3-VL-8B-Thinking,为 AlfWorld 设置使用 Qwen3-4B

    • 对于 Coding Thinking,诊断信息包括生成的代码未能通过的单元测试
  • OSWorld (GUI Agent) Error Summarization Prompt Templates

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    **Step-wise Summarization (OSWorld GUI)**

    STEP_ERROR_SUMMARY_PROMPT = (
    "you are analyzing one step in a trajectory for an OSWorld/desktop task.\n\n"
    f"step_index: {step_index}\n\n"
    "You are given:\n"
    "- reward_model_responses (multiple candidates)\n"
    "- extracted_reward aligned with responses (+1/-1/0)\n\n"
    "Task:\n"
    "Write ONE high-density summary (<= 2 sentences) explaining why this step was judged negative.\n"
    "Be specific about the failure mode (e.g., wrong assumption, misread UI, inconsistent with instruction, hallucinated value, skipped constraint).\n\n"
    "Rules:\n"
    "- Do NOT repeat the prompt verbatim.\n"
    "- Final answer MUST be in \\boxed{...} ONLY.\n\n"
    "reward_model_responses:\n"
    f"{json.dumps(reward_model_responses, ensure_ascii=False)}\n\n"
    "extracted_reward:\n"
    f"{json.dumps(extracted_reward, ensure_ascii=False)}\n"
    )

    **Trajectory-wise Summarization (OSWorld GUI)**

    TRAJECTORY_ERROR_SUMMARY_PROMPT = (
    "You are given step-level error summaries for ONE trajectory.\n\n"
    "Task:\n"
    "Produce ONE trajectory-level error summary (<= 2 sentences) capturing the main recurring failure modes.\n\n"
    "CRITICAL anti-redundancy rule:\n"
    "- Do NOT repeat the same error across different steps.\n"
    "- If multiple steps share the same failure type, mention it ONCE and, if helpful, note it as recurring.\n"
    "- Keep language concise but high information density.\n\n"
    "- Do reasoning first, then put Final Answer in \\boxed{...} ONLY.\n\n"
    "step_error_summaries (JSON):\n"
    f"{json.dumps(step_summaries, ensure_ascii=False)}\n"
    )
  • Alf World (LLM Agent) Error Summarization Prompt Template

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ALFWORLD_ERROR_SUMMARY_PROMPT = (
    "<|im_start|>You are a helpful assistant. <|im_end|>\n"
    "<|im_start|>user\n"
    "You are analyzing a failed rollout of a policy in a text-based environment.\n"
    f"The rollout did NOT finish the task within {max_steps} interaction steps.\n"
    f"Task (natural language): {task}\n\n"
    "Full trajectory (observation/action sequence):\n"
    f"{traj_text}\n\n"
    f"Some steps that are marked by reward model to be highly possible incorrect: {steps_information}\n\n"
    "In at most TWO sentences, explain the most likely reasons the policy failed to finish in time.\n"
    "Be concrete (e.g., wrong exploration, looping, wrong target/location, inconsistent reasoning, hallucination, etc.).\n"
    "Put the final \\(<= 2\\) sentence summary in \\boxed{ and output NOTHING else.\n"
    "<|im_end|>\n"
    "<|im_start|>assistant"
    )

C.7. Environment Modification and Prompt Templates,环境修改和 Prompt 模板

  • 为了获得能更好地匹配策略当前能力的新任务 ,同时保留原始任务的本质 (以防止任务集偏离原始分布太远)

  • 本文设计以下 Prompt 模板供推理模型使用,以基于关于策略准确率及其在每个任务上具体错误的总结信息来调整任务

  • 对于 GUI 智能体

    • 为每个任务提供一组任务模板 :原始任务始终包含在内,偶尔会添加新的但高度相关的模板
    • 为 230 个训练任务中的 47 个预先创建了额外的任务模板,总共得到 295 个任务模板(示例见附录 C.8)
      • 在本文的消融研究中,所有这些任务都包含在训练集中
    • 本文提供策略在原始任务上可能出错的位置的信息,并要求模型(如果适用)选择一个新任务模板,并根据该模板编写一个新的任务 Prompt
      • 当目标是让任务更容易时,模型可以根据总结的错误模式在 Prompt 中添加 Tips,从而对策略难以处理的任务实现更主动的调整
      • 当目标是让任务更难时,模型可以移除此类 Tips 并使指令更模糊
      • 任务模板的选择也可以取决于目标难度和扰动类型
  • 对于 AlfWorld 上的 LLM 智能体

    • 本文向模型提供策略在任务上的表现,以及基本环境信息(例如,环境包含哪些对象、它们的属性以及它们的位置),以帮助模型决定如何修改任务
    • 例如:
      • 如果子类别“拾取和放置”中的原始任务对于策略来说太难,因为它找不到目标对象,则环境模型将目标替换为更容易找到的对象
      • 如果任务对策略来说太容易,环境模型会使目标对象更难找到
  • GUI Agent Task-Difficulty Adaptation Prompt Template (OSWorld)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    # Variables:
    # - goal: str, target difficulty direction, e.g., "easier" or "harder"
    # - current_task_json: str, JSON string of the current task object
    # - task_template_json: str, JSON string of a mapping evaluator_name -> canonical instruction
    # - traj_summaries_json: str, JSON string of OPTIONAL historical trajectory-level error summaries
    # (each trajectory_summary is already deduplicated across steps)
    SYSTEM_PROMPT = """<|im_start|>You are a helpful assistant. <|im_end|>
    <|im_start|>user
    You will help me adjust the difficulty of an OSWorld/desktop task.
    You are given:
    (1) current_task (JSON)
    (2) task_template: a JSON object mapping evaluator_name -> a canonical instruction for that evaluator.
    (3) previous_rollout_trajectory_summaries: OPTIONAL historical error analyses from earlier rollouts.
    - A task may have multiple trajectories (runs).
    - Each trajectory_summary is already deduplicated across steps (no repeated same error across steps).
    Goal: make the task {{goal}}.
    Rules:
    - You MAY switch to a different evaluator from task_template (by changing the key), OR keep the same evaluator.
    - You MAY rewrite the instruction to increase/decrease hint strength (add hints to make easier, remove hints to make harder).
    - The instruction can NOT be too long.
    - You MUST NOT change the essential task meaning compared to the chosen evaluator’s template. Do NOT invent a new task.
    - Do NOT invent new evaluator names. The output key must be one of the keys in task_template.
    - You SHOULD use previous_rollout_trajectory_summaries to guide how you adjust difficulty:
    - If goal is EASIER: add minimal, targeted clarifying hints addressing recurring failure modes.
    - If goal is HARDER: remove such hints, but still keep the same essential task and stay within the chosen evaluator template.
    - Output MUST be valid JSON ONLY (no markdown, no extra text).
    - Output format MUST be the new current_task JSON object with EXACTLY ONE key:
    {"evaluatorX": "your rewritten instruction"}
    - If you accidentally output other text, ensure the FINAL output segment is the JSON object.
    current_task:
    {{current_task_json}}
    task_template:
    {{task_template_json}}
    previous_rollout_trajectory_summaries:
    {{traj_summaries_json}}
    <|im_end|>
    <|im_start|>assistant
    """
  • Alf World (LLM Agent) Task-Difficulty Adaptation Prompt Template

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    **Environment Summary from INIT**
    # summarize_init_english(problem_text) 返回:
    # (1) summary_text: 一个人类可读的 INIT 事实的英文摘要,包括:
    # - 对象/容器类型 -> 具体实例
    # - 位置
    # - cancontain(type -> type) 约束
    # - 按谓词名称分组的其他实例化谓词
    # (2) S: 一个结构化的已解析事实字典,用于下游约束,包括:
    # - obj2type, rec2type
    # - otype2obj, rtype2recs
    # - cancontain
    # - caps (能力集,如 pickable/toggleable/cleanable/hearable/coolable/sliceable)

    summary_text, S = summarize_init_english(problem_text)

    **Prompt Construction (environment info + failure summaries + goal editing instruction)**

    prompt_text = (
    "|<im_start|>You are a helpful assistant. <|im_end|>\n"
    "<|im_start|>user\n"
    "Review the following details about an interactive environment. A related task will follow.\n"
    + summary_text
    )

    prompt_text += "\n\n--\n"

    fails = item.get("failed_rollout_summaries", [])
    if fails:
    prompt_text += "### Failure summaries from recent rollouts (failed rollouts only)\n"
    for rec in sorted(fails, key=lambda x: int(x.get("rollout_idx", 0))):
    rj = rec.get("rollout_idx", 0)
    ss = str(rec.get("summary", "").strip())
    prompt_text += f"- Rollout {rj}: {ss}\n"
    prompt_text += "\n"

    prompt_text += f"### Your job is to propose a new goal that makes the task \*\*{goal.upper()}\*\*.\n"
    prompt_text += f"- The parent rollout accuracy (prev_acc) is {acc_before}.\n"
    prompt_text += "- The new goal must be different from the original and follow the instructions.\n"
    prompt_text += "- The overall framework of the goal cannot be changed; you may only modify two tokens within this framework.\n"
    prompt_text += "Represent the new goal by outputting two tokens, placed inside \n boxed{ and separated by a comma, e.g., \\boxed{TOKEN_A,TOKEN_B}.\n"
    prompt_text += "You need to think step by step then provide final result in \\boxed {}. \n"
    prompt_text += "\n" + goal_brief_and_instruction(
    task, goal_obj_types, goal_rec_types, S, direction=goal, prev_acc=acc_before
    )
    prompt_text += "\n<|im_end|>\n<|im_start|>assistant"

    **Task-Specific Editing Rubric (goal_brief_and_instruction)**

    def goal_brief_and_instruction(task, goal_obj_types, goal_rec_types, S, direction: Optional[str] = None, prev_acc: Optional[float] = None):
    lines = []
    if direction in ("harder", "easier"):
    lines.append(f"### Difficulty goal: \*{direction.upper()}\* (prev_acc={prev_acc})")
    if direction == "harder":
    lines.append("- Prefer types with \*fewer\* available instances (rarer) while keeping constraints satisfied.")
    lines.append("- Prefer combinations likely requiring more search/steps, but still solvable in this environment.")
    else:
    lines.append("- Prefer types with \*more\* available instances (more common) while keeping constraints satisfied.")
    lines.append("- Prefer combinations likely easier to find/complete, but still valid.")

    if task == "pick_and_place_simple":
    g = (goal_obj_types[0] if goal_obj_types else "<?>", goal_rec_types[0] if goal_rec_types else "<?>")
    lines.append("\*Overall Framework\*: place an object type into/on a receptacle type.")
    lines.append(f"\*Original goal\*: place an object of type \*\*[g[0]]\* into/on a receptacle of type \*\*{g[1]}\*.")
    lines.append(f"The final output example is \\boxed{ {g[0]}, {g[1]} }")
    lines.append("\*Design instructions\*: Output exactly \*two tokens\* - < OBJ_TYPE> <REC_TYPE>.")
    lines.append("- Constraints: pair must satisfy 'canContain(REC_TYPE, OBJ_TYPE)'.")

    elif task == "look_at_obj_in_light":
    g = (goal_obj_types[0] if goal_obj_types else "<?>", goal_obj_types[1] if len(goal_obj_types) > 1 else "<?>")
    lines.append("\*Overall Framework\*: a light object type is present at the agent's location; the agent \*holds\* an object type.")
    lines.append(f"\*Original goal (Example)\*: a \*toggleable and toggled\* light object of type \*{g[0]}\* is present; agent \*holds\* type \*{g[1]}\*.")
    lines.append(f"The final output example is \\boxed{ {g[0]}, {g[1]} }")
    lines.append("\*Design instructions\*: Output exactly \*two tokens\* - < LIGHT_OBJ_TYPE> <HOLD_OBJ_TYPE>'.")
    lines.append("- Constraints: LIGHT must have 'toggleable'; HOLD should have a 'pickupable' instance in INIT.")

    elif task == "pick_clean_then_place_in_recep":
    g = (goal_obj_types[0] if goal_obj_types else "<?>", goal_rec_types[0] if goal_rec_types else "<?>")
    lines.append("**Overall Framework** : **clean** an object type and place it into/on a receptacle type.")
    lines.append(f"**Original goal** : clean type **{g[0]}** then place into/on type **{g[1]}**.")
    lines.append(f"The final output example is \\boxed{ {g[0]}, {g[1]} }")
    lines.append("- Constraints: OBJ must be cleanable; canContain(REC,OBJ).")

    elif task == "pick_heat_then_place_in_recep":
    g = (goal_obj_types[0] if goal_obj_types else "<?>", goal_rec_types[0] if goal_rec_types else "<?>")
    lines.append("**Overall Framework** : **heat** an object type and place it into/on a receptacle type.")
    lines.append(f"**Original goal** : heat type **{g[0]}** then place into/on type **{g[1]}**.")
    lines.append(f"The final output example is \\boxed{ {g[0]}, {g[1]} }")
    lines.append("- Constraints: OBJ must be heatable; canContain(REC,OBJ).")

    elif task == "pick_cool_then_place_in_recep":
    g = (goal_obj_types[0] if goal_obj_types else "<?>", goal_rec_types[0] if goal_rec_types else "<?>")
    lines.append("**Overall Framework** : **cool** an object type and place it into/on a receptacle type.")
    lines.append(f"**Original goal** : cool type **{g[0]}** then place into/on type **{g[1]}**.")
    lines.append(f"The final output example is \\boxed{ {g[0]}, {g[1]} }")
    lines.append("- Constraints: OBJ must be coolable; canContain(REC,OBJ).")

    elif task == "pick_two_obj_and_place":
    g = (goal_obj_types[0] if goal_obj_types else "<?>", goal_rec_types[0] if goal_rec_types else "<?>")
    lines.append("**Overall Framework** : place **two distinct objects** (same type) into/on a receptacle type.")
    lines.append(f"**Original goal** : place two objects of type **{g[0]}** into/on type **{g[1]}**.")
    lines.append(f"The final output example is \\boxed{ {g[0]}, {g[1]} }")
    lines.append("- Constraints: >=2 instances of OBJ_TYPE; canContain(REC,OBJ).")

    else:
    lines.append("**Original goal** : (unknown task type).")

    return "\n".join(lines)

C.8. Examples of Task Templates in GUI data

  • 正如附录 C.7 中讨论的,本文在 GUI 训练数据中为某些任务添加了新的任务模板
  • 本文提供的示例如下,每个任务模板都配有一个评估器及其对应的可验证结果文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    TASK_TEMPLATE_EXAMPLES = r"

    Example 1:
    "task_template":{
    "evaluator1": "Work out the monthly total sales in a new row called 'Total', and then create a line chart to show the results (with Months on the x-axis).",
    "evaluator2": "Work out the monthly total sales in a new row called 'Total'.",
    "evaluator3": "Work out January's total sales in a new row called 'Total'.",
    "evaluator4": "Work out the monthly total sales in a new row called 'Total', and then create a line chart to show the results (with Months on the x-axis, for January, February, and March only)."
    }

    Example 2:
    "task_template":{
    "evaluator1": "Fill all blank cells in B1:E30 with the value from the cell directly above. Finish the task and do not modify irrelevant regions, even if they are blank.",
    "evaluator2": "Fill all blank cells in B1:B30 with the value from the cell directly above. Finish the task and do not modify irrelevant regions, even if they are blank.",
    "evaluator3": "Fill all blank cells in E1:E30 with the value from the cell directly above. Finish the task and do not modify irrelevant regions, even if they are blank.",
    "evaluator4": "Fill all blank cells in E1:E24 with the value from the cell directly above. Finish the task and do not modify irrelevant regions, even if they are blank."
    }

C.9. Task Specific Algorithm

  • Algorithm2:

NLP——LLM对齐微调-GR3

注:本文包含 AI 辅助创作

  • 参考链接:
    • 原始论文:(GR3,\(\text{GR}^3\))Tackling Length Inflation Without Trade-offs: Group Relative Reward Rescaling for Reinforcement Learning, 20260311, ISCAS & XHS

Paper Summary

  • 整体总结和说明:
    • 作者定义并提出了 长度膨胀(length inflation) 现象:模型倾向于产生不必要的冗长或过度思考
    • 长度膨胀(length inflation) 是 LLM RL 训练中一个根本性的效率问题
    • 为解决 长度膨胀问题,作者提出了一个无损长度控制的通用框架 组相对奖励重缩放(Group Relative Reward Rescaling, \(\mathbf{GR}^3\))
      • \(\text{GR}^{3}\) 通过一个乘法的、组相对的形式,并结合优势感知校准来调控推理长度
    • 在 RLVR 和 RLHF 两种 Setting 下,\(\text{GR}^{3}\) 均能将 性能-成本帕累托前沿 向外推移
      • 观测效果:保持与标准 GRPO 相当的训练动态和下游性能,同时显著缓解了长度膨胀问题
      • 在保持(甚至提升)模型能力的同时减少 Token 使用
    • 理解:本文的核心思路创新是将加性的长度惩罚方式转变成 乘性的长度惩罚方式
  • 当前 LLM RL 面临问题:模型采用冗长或低效的推理来最大化奖励(长度膨胀)
  • 先前的方法:难以以一种通用且无损的方式解决这一挑战,主要是因为:
    • 加性惩罚 :引入了一种补偿效应 ,从而创造了优化捷径
    • 启发式门控策略 :在二元反馈之外缺乏通用性
  • 本文方法:组相对奖励重缩放(Group Relative Reward Rescaling, \(\mathbf{GR}^3\))
    • 将长度控制重新构建为一种乘法重缩放范式
    • 建立了一个通用的、连续的、且依赖于奖励的门控机制
  • 其他创新:在 \(\mathbf{GR}^3\) 的基础上,结合了 组相对正则化(group-relative regularization) 和 优势感知校准(advantage-aware calibration)
    • 能根据实例难度动态调整长度预算,并保留高质量轨迹的优势信号

Introduction and Discussion

  • LLM 上的 RL 表现出一个持续的缺陷,本文称之为长度膨胀(length inflation):
    • 长度膨胀的定义:经过 RL 训练的模型倾向于产生不必要的冗长轨迹,导致推理成本增加,而质量却没有成比例地提升
  • 长度膨胀现象在主要的 RL 范式中都有出现
    • 在 RLHF(2022)中,模型利用奖励模型对冗长的偏好,导致 Reward Hacking(2023)
    • 在 RLVR(2024)中,长度膨胀则源于推理效率低下(2025),模型生成不必要的长思维链以略微提高正确解的可能性
  • 之前的工作:
    • 路线一:训练对 Response 长度不变的奖励模型(2024a;2024)
      • RLHF 中有效,无法扩展到 RLVR,因为 RLVR 的奖励来自真实值验证器,而非可以被去偏的学习代理
    • 路线二(更通用):在奖励中引入显式的长度惩罚(2025a;2025c;2025)
      • 大多数现有方法依赖于粗略的正则化,导致了次优的优化动态
        • 一种常见的设计:采用加性塑形(additive shaping)(2025;2025)
          • 用一个显式的长度项(例如,\(R’ = R - \lambda \ell\))修改目标函数
          • 这引入了解耦的激励,创造了一个与任务成功无关的、使极端简洁成为有吸引力的捷径的、由长度驱动的组成部分
        • For 更好地使惩罚与结果对齐,一些工作提出了启发式门控(heuristic gating)(2025;2025),仅在 \(R = 1\) 时应用惩罚
          • 这种设计本质上局限于二元反馈,不能自然地扩展到像 RLHF 这样的连续奖励 Setting
          • 许多方法依赖粗略的控制机制,如静态截断阈值或未校准的惩罚强度(2025b;2025),导致固有的效率-性能权衡,如图 1 所示
  • 核心问题提出:能否在不损害 RL 能力增益的情况下,以一种通用的方式解决长度膨胀?
  • 本工作提出了一个用于无损效率优化的 Principled 框架 GR\(^3\))
    • 特点:GR\(^3\) 不使用加性惩罚 ,而是通过乘法重缩放 来正则化长度
      • 作为一个广义的门控机制,消除了加性方案固有的补偿捷径
    • 为了进一步确保无损优化,作者引入了两个细粒度机制
      • 采用 Group-relative Regularization
        • 根据 On-policy 统计量而非刚性阈值来归一化长度,从而动态地将长度预算调整到每个 Prompt 固有的难度
      • 补充引入 Advantage-aware Calibration,显式控制惩罚强度
        • 这确保了长度正则化不会推翻代表性高质量轨迹的优势信号,从而保障了向能力提升的稳定优化
  • 实验显示:GR\(^3\) 解决了先前方法中固有的效率-性能权衡
    • 如图 1 所示,GR\(^3\) 显著减少了 Token 使用量(在 AIME-25 上超过 \(40%\)),同时提高了准确性(\(+8\) points)
      • 这证明冗长并非智能的先决条件
    • 在 RLHF 设置中,GR\(^3\) 表现出自适应的长度动态:
      • 当计算有益时,它允许适度增长,但随着策略成熟,它会自动抑制生成长度(图 2)
      • 这种机制有效地通过冗长来缓解 Reward Hacking ,而不牺牲性能
  • 本文贡献总结:
    • 提出无损长度控制框架 \(\text{GR}^3\),用乘法奖励重缩放替代了加性惩罚
      • 这种设计消除了补偿性优化捷径,并为二元奖励和连续奖励提供了统一的机制
    • 开发了一种优化保持策略,将组相对正则化与优势感知校准相结合,使约束适应于 On-policy 统计量,同时保留学习信号
    • 在数学推理、代码生成和 RLHF 对齐任务中,GR\(^3\) 在匹配标准 GRPO 性能的同时产生了简洁的生成,推动了效率-性能帕累托前沿的迁移

Preliminary

Group Relative Policy Optimization(GRPO)

  • LLM 生成可以被形式化为一个 Token 级别的 MDP
    • 给定一个 Prompt \(x \sim \mathcal{D}\) ,一个自回归策略 \(\pi_{\theta}\) 通过从 \(\pi_{\theta}(y_t\mid x,y_{< t})\) 中采样 Token 来生成长度为 \(\ell := |y|\) 的 Response \(y = (y_1, \ldots , y_\ell)\)
    • 一个标量奖励 \(R(x,y)\) 定义在完整 Response 上,强化学习旨在最大化期望奖励:
      $$\max_{\pi_{\theta} }\mathbb{E}_{x\sim \mathcal{D},y\sim \pi_{\theta}(\cdot |x)}\big[R(x,y)\big]. \tag {1}$$
  • 随着像 DeepSeek-R1 这样的推理模型的出现,组式 RL 在 LLM 后训练中变得普遍
    • 其中的 GRPO(2024)因其可扩展性和无需单独的价值模型而被广泛采用
  • 对于每个 Prompt \(x\) ,GRPO 从一个旧策略 \(\pi_{\theta_{\text{old} } }(\cdot |x)\) 中采样一组 \(G\) 个 Response \(\{y^{(i)}\}_{i = 1}^{G}\),并通过 \(R(x,y^{(i)})\) 评估每个 Response
    • 通过组内归一化构建一个组相对优势(group-relative advantage):
      $$\begin{array}{c}{\hat{A}^{(i)} = \frac{R(x,y^{(i)}) - \mu_R}{\sigma_R} }\\ {\mu_R:= \frac{1}{G}\sum_{j = 1}^{G}R(x,y^{(j)}), \quad \sigma_R:= \text{std}\Big(\{R(x,y^{(j)})\}_{j = 1}^{G}\Big)} \end{array} \tag {2}$$
  • 策略优化时,使用一个 PPO 风格的、在组归一化优势上的裁剪目标进行优化:
    $$\begin{array}{rl} & {\mathcal{J}_{\text{GRPO} }(\theta) = \mathbb{E}_{x\sim \mathcal{D},\{y^{(i)}\}_{i = 1}^{G} }\left[\frac{1}{G}\sum_{i = 1}^{G}\sum_{t = 1}^{|y^{(i)}|}\right.} {\left.\left(\min \left(r_{i,t}(\theta)\hat{A}^{(i)},\text{clip}(r_{i,t}(\theta),1 - \epsilon ,1 + \epsilon)\hat{A}^{(i)}\right)\right.\right.} {\left.\left. - \beta D_{\text{KL} }(\pi_{\theta}| \pi_{\text{ref} })\right)\right],} \end{array} \tag {3}$$
    • 重要性采样比率定义为
      $$r_{i,t}(\theta) = \frac{\pi_{\theta}(y_t^{(i)}\mid x,y_{< t}^{(i)})}{\pi_{\theta_{\text{old} } }(y_t^{(i)}\mid x,y_{< t}^{(i)})}. \tag {4}$$
  • GRPO 基于组内统计量估计优势
    • 后面,本文作者会利用这一结构特性来构建一个更符合 On-policy 的长度正则化方案,并制定优势感知校准,以更好地尊重底层的优化信号,详见第 3 节

Length-Regularized Reinforcement Learning

  • RL 带来了实质性的性能提升,但 RL 的一个关键的失败模式变得越来越明显(本文称为长度膨胀)
    • 长思维链(Long-CoT)模型特别容易受到过度思考的影响(2024b;2025a)
    • RLHF 中的 Reward Hacking(2023;2023)也可能导致 Response 长度的爆炸性增长
  • 缓解 RL 中长度膨胀的一个常见策略是通过 Reward Shaping 显式地正则化 Response 长度
    • 从一个统一的视角来看(2025c),大多数现有方法可以被实例化为加性塑形 :
      $$\text{Additive:}\hat{R}^{(+)} = R + \lambda \cdot S,\lambda >0 \tag {5}$$
      • \(R\) 是任务奖励
      • \(S\) 是一个依赖于长度的塑形信号
      • \(\lambda\) 控制长度正则化的强度
      • \(\hat{R}^{(+)}\) 表示用于策略优化的塑形后奖励
      • 表 1 中展示了一些代表性的 加性塑形 的例子
    • 在这个公式下,现有方法主要在长度正则器 \(S\) 的实例化方式上有所不同
      • 最基本的策略通常依赖于一个固定的阈值(例如, \(\ell_{T} = 4K\) ):
        • 一旦 Response 长度超过这个限制,模型就会招致一个恒定的惩罚(2025b)或一个逐渐增加的惩罚(2025)
      • 一个更 Principled 范式则利用组级统计量(2025)来确定惩罚的强度
      • 一些方法引入了门控机制(例如, \(\mathbb{I}(R = 1)\) )(2025), 仅对成功的轨迹激活长度正则化,以防止模型过度优化简洁性
    • 这些方法在具体实例上有所不同,但共享一个共同的目标:
      • 在 RL 训练期间压缩 Response 长度
      • 但实践发现,这种正则化常常导致性能下降,这促使本文作者更仔细地审视 Reward Shaping 设计

Group Relative Reward Rescaling(GR3, GR\(^3\))

  • \(\mathbf{GR}^3\) 是一个旨在无损能力的情况下缓解长度膨胀的 Principled 框架
  • 对于一个在一组 \(G\) 个样本中的、长度为 \(\ell^{(i)} = |y^{(i)}|\) 的 Response \(y^{(i)}\), \(\mathbf{GR}^3\) 将重缩放后的奖励定义为:
    $$\hat{R} (x,y^{(i)}) = R(x,y^{(i)}) \cdot \underbrace{\frac{1}{1 + \alpha \cdot \frac{\ell^{(i)} }{\bar{\ell} } } }_{S^{(i)} } \tag {6}$$
    • \(S^{(i)}\) 表示长度缩放因子
    • \(\bar{\ell}\) 表示组内的平均 Response 长度
  • 这个公式反映了三个维度的统一设计
    • 采用乘法奖励重缩放(第 3.1 节)作为一种依赖于奖励的门控,减轻了补偿效应,同时仍适用于一般的连续奖励分布
    • 通过组相对正则化(第 3.2 节)实例化缩放因子,利用 On-policy 平均值 \(\bar{\ell}\) 来动态地将长度预算调整到 Prompt 的固有难度
    • 为了维持稳定的优化,优势感知校准(第 3.3 节)进一步控制惩罚强度,防止对高优势轨迹的不当抑制

Multiplicative Reward Rescaling

Motivation and Formulation
  • 最朴素的长度控制方法依赖于如公式 5 所示的加性 Reward Shaping ,其中 \(\lambda\) 控制长度惩罚的强度
    • 但加性塑形引入了一个固有的补偿效应:塑形项 \(S\) 形成了一个可以独立于任务性能被利用的辅助优化目标
    • 一些工作通过门控机制缓解了这个问题,例如,将 \(I(R = 1)\) 纳入 \(S\)
      • 但这种设计仅限于二元奖励,不能扩展到连续奖励设置
  • 区别于这些加性公式,作者提出了一个更通用的乘法塑形范式:
    $$\mathbf{Multiplicative:}\quad \hat{R}^{(\times)} = R\cdot S, \tag {7}$$
    • 这可以解释为启发式门控的连续扩展,消除了权衡系数 \(\lambda\),并自然地推广到任意奖励尺度 1
    • 重点:乘法公式消除了加性塑形的补偿特性,要求策略联合优化任务性能和长度控制
  • 如图 3 所示,加性塑形表现出一个系统性的失败模式:
    • 对于任何 \(\lambda\) 的选择,优化都被快速的长度缩减所主导,导致严重的性能下降
    • 乘法塑形不允许这样的捷径,因此避免了这种崩溃
  • 直观地说,乘法塑形通过下式将长度控制的影响与任务奖励耦合起来:
    $$\frac{\partial\hat{R}^{(\times)} }{\partial S} = R. \tag {8}$$
    • 因此,长度正则化随着任务成功而自动增强,使塑形内在地具有奖励感知性
Analysis Under Group-Normalized Advantage
  • 在 GRPO 采用的组归一化优势下进一步提炼上述直觉
    • 固定一个 Prompt \(x\),并考虑由采样 Response \(y \sim \pi_{\theta_{\text{old} } }(\cdot |x)\) 引起的 \((R,S)\) 的组内分布
      • 其中 \(R \in [0,1]\) 表示任务奖励, \(S \in [0,1]\) 表示一个与长度相关的分数(例如,公式 6)
  • 比较加性塑形 \(\hat{R}^{(+)}\)(公式 5)和乘性塑形 \(\hat{R}^{(\times)}\)(公式 7)
    • 令 \(\mu\) 和 \(\sigma\) 表示组内均值和标准差
    • 结果使用 Population Moments 陈述,经验版本通过 Substituting 样本均值得到
Proposition 3.1 (Additive shaping: linear injection of the length signal)
  • 命题 3.1 (加性塑形:长度信号的线性注入)
  • 令 \((R,S)\) 具有有限二阶矩,并定义
    • \(\mu_{R} = \mathbb{E}[R]\)
    • \(\mu_{S} = \mathbb{E}[S]\)
    • \(\sigma_{R}^{2} = \text{Var}(R)\)
    • \(\sigma_{S}^{2} = \text{Var}(S)\)
    • \(\sigma_{RS} = \text{Cov}(R,S)\)
  • 对于
    $$\hat{R}^{(+)} = R + \lambda S, \quad where \lambda >0 $$
    • 有:
      $$ \begin{align}
      \hat{R}^{(+)} - \mathbb{E}[\hat{R}^{(+)}] &= (R - \mu_R) + \lambda (S - \mu_S), \tag {9} \\ \text{Var}(\hat{R}^{(+)}) &:= \sigma_{R}^{2} + \lambda^{2}\sigma_{S}^{2} + 2\lambda \sigma_{RS}, \tag {10}
      \end{align}$$
  • 因此
    $$A\left(\hat{R}^{(+)}\right) = \frac{(R - \mu_R) + \lambda(S - \mu_S)}{\sqrt{\sigma_R^2 + \lambda^2\sigma_S^2 + 2\lambda\sigma_{RS} } }. \tag {11}$$
  • 因此,与长度相关的信号 \((S - \mu_S)\) 以固定权重 \(\lambda\) 线性地注入到优势中,并且即使在组内 \(R\) 提供很少的判别信号时也能起作用
  • Proof :
    • 公式 (9) 由下式给出:
      $$\mathbb{E}[\hat{R}^{(+)}] = \mu_R + \lambda \mu_S$$
    • 公式 (10) 由下式导出:
      $$\text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) + 2\text{Cov}(X,Y)$$
      • 其中 \(X = R\) 和 \(Y = \lambda S\)
    • 公式 (11) 通过将公式 (2) 中的 \(R\) 替换为 \(\hat{R}^{(+)}\) 得到
Proposition 3.2 (Multiplicative shaping: reward-weighted length signal)
  • 命题 3.2 (乘性塑形:奖励加权的长度信号)
  • 令 \((R,S)\) 具有有限二阶矩,并定义
    • \(\mu_R = \mathbb{E}[R]\)
    • \(\mu_S = \mathbb{E}[S]\),
    • \(\sigma_R^2 = \text{Var}(R)\),
    • \(\sigma_S^2 = \text{Var}(S)\),
    • \(\sigma_{RS} = \text{Cov}(R,S)\)
  • 对于乘性塑形 \(\hat{R}^{(\times)} = RS\),有:
    $$\mathbb{E}[\hat{R}^{(\times)}] = \mathbb{E}[RS] = \mu_R\mu_S + \sigma_{RS}. \tag {12}$$
  • 此外,中心化后的塑形奖励允许分解为:
    $$RS - \mathbb{E}[RS] = R(S - \mu_S) + \mu_S(R - \mu_R) - \sigma_{RS}. \tag {13}$$
  • 因此,组归一化后的优势可以写为:
    $$A\left(\hat{R}^{(\times)}\right) = \frac{R(S - \mu_S) + \mu_S(R - \mu_R) - \sigma_{RS} }{\sqrt{\text{Var}(RS)} }. \tag {14}$$
  • Proof :
    • 公式 (12) 由下面的公式得到:
      $$\mathbb{E}[RS] = \mathbb{E}[R]\mathbb{E}[S] + \text{Cov}(R,S)$$
    • 对于公式 (13)
      • 重写为
        $$RS = R\mu_S + R(S - \mu_S) = \mu_R\mu_S + \mu_S(R - \mu_R) + R(S - \mu_S)$$
      • 并减去
        $$\mathbb{E}[RS] = \mu_R\mu_S + \sigma_{RS}$$
    • 公式 (14) 是将公式 (2) 应用于 \(\hat{R}^{(\times)}\) 的结果
Remark 3.3 (为什么乘性塑形在组归一化下具有奖励感知性)
  • 在加性塑形下,命题 3.1 表明长度偏差 \((S - \mu_S)\) 以固定系数 \(\lambda\) 注入中心化后的塑形奖励
    • 这创造了一个补偿性的自由度:即使当 \(R\) 提供很少的学习信号时,策略也可以通过操纵 \(S\) 来改善塑形奖励
  • 相比之下,命题 3.2 给出了分解式
    $$RS - \mathbb{E}[RS] = R(S - \mu_S) + \mu_S(R - \mu_R) - \sigma_{RS}$$
    • 其中长度偏差的影响被 \(R\) 本身缩放
    • 因此,当奖励低时长度控制较弱,并随着任务性能提高而增强,使得乘性塑形内在地具有奖励感知性
      • 问题:为什么奖励低时应该用耿荣的长度控制?奖励高时应该用更强的长度控制?

Group Relative Length Regularization

  • 之前工作的问题:
    • 许多先前的工作通过施加绝对长度阈值(2025;2025c)来解决长度膨胀问题,惩罚超过固定预算的轨迹
      • 这种设计可能会抑制困难实例上的必要推理,使策略对任务难度不敏感,从而降低性能
    • 更重要的是,固定的阈值不可避免地会导致 Off-policy 偏差:
      • 最优推理长度随任务变化,并在训练过程中发生改变,这是单一的全局常数无法捕捉的
  • 解法:组相对长度正则化策略,它能够适应 On-policy 行为
    • 根据公式 6,使用组内统计量定义一个界于 \((0,1)\) 的有界长度塑形项 \(S^{(i)}\):
      $$S^{(i)} = \frac{1}{1 + \alpha \cdot \frac{\ell^{(i)} }{\bar{\ell} } }, \quad \alpha >0. \tag {15}$$
      • \(\ell^{(i)}\) 是 Response 长度
      • \(\bar{\ell}\) 是组均值
    • 这个惩罚随着长度增加而平滑下降,同时通过 \(\bar{\ell}\) 归一化避免了任意的全局阈值,并使惩罚适应模型当前的生成行为
  • 如表 2 所示,将固定阈值截断方法(2025)作为一个极简基线
    • 可以发现,基于阈值的截断即使在困难的基准测试上也强加了统一的最大 Response 长度,这会损害在挑战性问题上的推理性能
    • 与其他组相对方法进行比较,发现某些塑形策略(2025)引入了偏向于在简单基准上进行浅层推理的偏差(分析见附录 B)
    • 作者还评估了另一种组相对方法 Kimi-1.5(2025),但它表现出训练崩溃;
      • 因此,作者省略了其结果
      • 作者将此失败归因于没有门控的加性塑形范式,如第 3.1 节所述

Advantage-Aware Calibration

  • 在组相对策略优化的框架内,长度惩罚项 \(S\) 充当了优势格局的强大塑造者
  • 惩罚强度与组归一化之间的相互作用 is non-trivial:\(S\) 的微小变化都可能显著改变优化轨迹
    • 在实践中,无约束或过强的惩罚可能会严重惩罚高质量 Response ,以至于产生一个矛盾的信号,阻止模型生成其最佳 Response
  • 一个自然但过于严格的目标是要求所有高质量轨迹都保持正优势
    • 在高奖励密度下,当组内大多数 Response 都达到最大奖励 \(R_{\text{max} }\) 时(例如,16 个中有 15 个是正确的),这会变得难以实现
    • 由于组归一化的零和结构,正确但长度高于平均水平的 Response 可能不可避免地获得负优势
    • 作者在附录 C.1 中对此限制提供了正式分析
  • 理解:GRPO 中,优势为负的 Response 会被打压(降低生成概率),优势为正的 Response 会被提升(提升生成概率)
    • 所以这里主要想强调高质量的 Response 不应该 优势为负
    • 问题:实际上,从 PG 方法来看,即使所有的梯度系数(比如可以为累计收益)都为正,或者都为负,也总会收敛到最优策略(至少从数学上来看是这样的,所有动作的概率都在被提升的时候,因为总的概率和为 1,所以提升最大的动作肯定是概率提升的,提升最小的动作概率肯定是下降的),所以推测,GRPO 这里理论上也不一定需要这个优质样本优势为正的强假设
Average-Case Advantage Preservation,平均情况优势保持
  • 我们不是要保护最长的异常轨迹,而是旨在保持一个有代表性的高质量 Response 的优势
    • 考虑一个 Response ,它达到了组内最大奖励 \(R_{\text{max} }\),并具有组平均长度 \(\bar{\ell}\),并要求其优势保持非负
    • 令 \(\mu_{\bar{R} }\) 表示组内正则化后奖励的均值,这产生了条件:
      $$\frac{R_{\text{max} } }{1 + \alpha\cdot\frac{\bar{\ell} }{\bar{\ell} } }\geq \mu_{\bar{R} }\Rightarrow \frac{R_{\text{max} } }{1 + \alpha}\geq \mu_{\bar{R} } \tag {16}$$
      • 这确保了惩罚 \(\alpha\) 不会推翻一个典型高质量 Response 的优势
      • 在组内所有轨迹都达到 \(R_{\text{max} }\) 的极限情况下,平均情况约束仍然可能无法满足
        • 因此,本文过滤掉此类组 (见附录 C.2)
  • 在实践中,由于 On-policy 采样的随机性,公式 (16) 并非作为每次更新的硬约束来执行
    • 可将其视为选择惩罚系数 \(\alpha\) 的校准标准
  • 在 GRPO 训练开始时运行一个短暂的校准阶段,并测量候选 \(\alpha\) 值上的约束满足率(Constraint Satisfaction Rate, CSR)
    • 然后选择 CSR 保持持续高值(例如,\(\geq 99.9%\))的最大 \(\alpha\),以确保高概率的约束满足,同时保持强大的长度正则化
  • 经验上,通过此协议选择的 \(\alpha\) 在整个训练过程中保持了近乎完美的 CSR(见图 4)
    • 这一点有效地标志了一个实际边界:相对于 GRPO 基线的奖励差距已经是正的,表明任务能力得到保留
    • 进一步降低惩罚强度(即减小 \(\alpha\))不会带来一致的性能提升,反而会导致与训练方差一致的波动

Experiments

Setup

Efficient Reasoning for RLVR
  • 遵循先前的工作,采用 DeepSeek-R1-Distill-1.5B 和 DeepSeek-R1-Distill-7B (2025) 作为基础模型
  • 对于数学推理,使用 DeepScaleR-Preview-Dataset (2025b) 作为训练数据
    • 将现有高效推理方法的开源检查点作为基线,如 LC-R1 (2025)、Laser (2025c)、AdaptThink (2025) 和 DLER (2025b)
  • For 通用性,进一步将其扩展到代码生成任务,使用来自 DeepDistill (2025) 的 Prompt
Mitigating Length Bias in RLHF
  • 对于 RLHF 设置,使用非推理版本的 Qwen3-4B 和 Qwen3-8B (2025) 作为基础模型
  • 从 arena-human-preference-140k 构建 RL Prompt,并采用 Skywork-Reward-V2-Llama-3.1-8B (2025a) 作为奖励模型
  • 为了提高训练稳定性,应用了基于参考的 Sigmoid 塑形 (2025) 方案(原始论文见:(PAR)Reward Shaping to Mitigate Reward Hacking in RLHF, 20250226-20260121, Fudan & UC Berkeley & StepFun):
    $$R(x,y^{(i)}) = s\Big(R_{\text{origin} }(x,y^{(i)}) - R_{\text{origin} }(x,y^{\text{ref} })\Big). \tag {17}$$
    • \(R_{\text{origin} }(\cdot)\) 表示原始奖励模型分数
    • \(s(\cdot)\) 是 sigmoid 函数
    • 注:原始论文中,可能会有多个 参考回复 \(y^{\text{ref}}\)
  • 详细的实验设置在附录 D 中提供

Main Results

Efficient Reasoning for RLVR
  • 7B 模型的实验结果如表 3 所示,1.5B 模型的结果见附录 E.1
  • \(\mathbf{GR}^3\) 在减少生成长度的同时提高了推理性能,这表明其实现了真正的效率提升,而非一种权衡
  • 在数学推理中,与标准 GRPO 相比,\(\mathbf{GR}^3\) 在保持甚至提升性能的同时,生成了更短的文本
    • 在 7B 规模的 AIME24 上
      • \(\mathbf{GR}^3\) 平均长度:13,213 Token -> 7,923 Token(GRPO 为 11079)
      • Avg@32:52.4 -> 60.1(GRPO 为 57.1)
  • 在数学推理中,与现有的面向长度的基线相比,\(\mathbf{GR}^3\) 没有以牺牲准确性为代价过度压缩推理长度
    • GR3 能优先在保持性能的同时去除冗余推理
    • 在 AIME25(7B)上,没有一个面向长度的基线能够超越初始检查点的性能(39.4),而 \(\mathbf{GR}^3\) 则用更少的 Token(14,032 -> 8,582)将其性能提升至 46.9
    • 这表明 \(\mathbf{GR}^3\) 鼓励更高效的推理轨迹,而不仅仅是截断推理,从而在不同规模上都能带来持续的增益
  • 表 4 展示了在代码 Setting 下的结果,与数学推理结论一致,\(\mathbf{GR}^3\) 在保持任务性能的同时实现了显著的效率提升
Mitigating Length Bias in RLHF
  • 对齐基准上的结果如表 5 所示
    • 与初始模型相比,RLHF 训练在聊天质量上带来了显著的改进
    • 标准 GRPO:
      • 在长度偏置下遭受严重的 Reward Hacking,即模型可以通过生成不必要地长 Response 来人为地增加奖励,导致爆炸性的长度膨胀
      • 例如,在 Qwen3-8B 上,Arena-Hard-Auto 的平均 Response 长度从 1,171 个 Token 增加到 2,343 个 Token
    • \(\mathbf{GR}^3\)
      • 在保持 Response 长度几乎不变的同时,取得了相当甚至更强的对齐增益,有效地将性能提升与冗长性解耦
      • 例如,在 Qwen3-8B 上,\(\text{GR}^{3}\) 将 Arena-Hard-Auto 分数从 77.2 提高到 92.8,而 Token 成本仅略微增加 (1,171 -> 1,178)
  • 图 2 中进一步可视化了 RLHF 设置下的训练动态
    • 在 GRPO 下,Response 长度在整个训练过程中单调且不可控地增长
    • 相比之下,\(\text{GR}^{3}\) 呈现出清晰的“先增后减”模式 :模型最初扩展其推理以确保对齐改进,然后在性能稳定后压缩冗余生成
    • 这种动态行为符合作者的设计直觉:\(\text{GR}^{3}\) 优先实现可靠的对齐增益,然后通过抑制基于长度的利用来逐步提高 Response 效率

Analysis and Discussion

Ablation on Penalty Strength \(\alpha\)
  • 通过在其值范围内进行扫描来研究惩罚系数 \(\alpha\) 的影响,同时保持所有其他设置不变
    • 注:详细的结果和分析见附录 E.2,这里作者仅总结关键发现
  • 当 \(\alpha\) 过大时(例如,1.0):\(\text{GR}^{3}\) 退化为一种朴素的长度正则化方法:Response 变得更短,但相较于基础模型的性能增益有限,因为优化过程主要由压缩主导,而非能力提升
  • 随着 \(\alpha\) 减小:Response 长度平滑增长,而任务性能先提高后趋于平稳
    • 这一趋势与第 3.3 节的分析一致:
      • 当具有代表性的高质量轨迹的优势得以保留后,进一步减小惩罚主要会放宽长度控制,而不会产生更强的学习信号
      • 问题:如何理解这里的 不会产生更强的学习信号?
    • 所选值 \(\alpha = 0.33\) 接近这个过渡区域,在保留大部分性能增益的同时实现了显著的长度缩减
Why Does \(\text{GR}^{3}\) Outperform GRPO?
  • 作者观察到一个反直觉的现象:在许多 Setting 中,\(\text{GR}^{3}\) 不仅缩短了 Response,而且取得了比标准 GRPO 更强的下游性能,同时相对于 GRPO 基线保持正向的奖励差距
    • 作者将此归因于优化信号结构方式的不同
  • 在无约束的 RL(如 GRPO)下,策略往往会漂移到过度扩展的推理轨迹上
    • 尽管这些轨迹最终可能达到正确答案,但它们往往包含许多贡献较低的 Token
    • 从优化的角度来看,这会使得学习信号在长 Response 中被稀释,降低了奖励对最重要推理步骤的有效影响
    • 通过抑制不必要的冗长,\(\text{GR}^{3}\) 在保留关键步骤的同时压缩了推理痕迹
      • 这增加了奖励相对于 Token 的信号密度,使得优化能够更强烈地聚焦于因果上重要的推理模式 ,而不是将梯度分散在冗长但相关性弱的 Token 上
    • 附录 F 中提供了定性的生成示例

Related Work

  • RL (1996; 2022; 2025) 存在推理成本高和生成长度不断增长的问题,作者将这一瓶颈称为 长度膨胀 (length inflation)
  • 一系列工作研究高效推理 (2025; 2025),旨在改进长思维链模型的准确率-成本权衡
    • 早期方法依赖于 Prompt 工程或有监督微调来鼓励更短的推理痕迹 (2025a; 2025; 2025b)
    • 最近更多的方法应用 RL,通过长度感知的目标直接优化效率 (2025; 2025c; 2025)
      • 虽然这些方法在减少 Token 使用方面很有效,但由于惩罚校准不佳或存在捷径解 (2025),它们可能会降低性能或引入不稳定的优化动态
  • 另一系列工作将 RLHF 中的长度膨胀归因于 Reward Hacking 和长度偏置 (2022; 2023; 2023)
    • 由于奖励模型可能隐式地偏爱较长的 Response,冗长可能源于利用奖励的假象而非真正的能力提升 (2023)
    • 先前的工作通过改进奖励建模和校准 (2024a; 2025) 或应用事后奖励修正 (2024) 来缓解这一问题,尽管许多这些解决方案是针对特定训练环境定制的
  • \(\text{GR}^{3}\) 与基于 RL 的高效推理最为相关,并且在由长度偏置驱动的 Reward Hacking 情况下仍然有效
    • \(\text{GR}^{3}\) 是一个通用的长度正则化框架,在保持性能的同时改善了性能-成本帕累托前沿

附录 A:Connection to Heuristic Gating Mechanisms,分析 GR3 与启发式门控机制的联系

  • 第 3.1 节中主要从消除加法塑形固有的补偿性优化捷径的角度来激励乘法塑形
  • 本节通过分析 \(\text{GR}^{3}\) 与启发式门控机制 (2025; 2025) 之间的关系,提供另一种视角
  • 作者证明,乘法塑形可以被视为启发式门控的一个 Principled 泛化:
    • 在二元奖励设置中数学上简化为门控,同时在硬指示器失效的连续奖励场景中提供了一个鲁棒的、”软性”的门控机制

Equivalence in Binary Reward Settings,二元奖励中两者是等价的

  • 启发式门控是对高效推理 (RLVR) 中加法塑形的一种常见改进,可防止模型以牺牲准确性为代价来优化长度
    • 启发式门控通常采用一个指示函数 \(\mathbb{I}(R = 1)\),仅在 Response 正确时应用长度惩罚
  • 设 \(P\) 表示一个通用的基于长度的惩罚项(例如,一个长度的负函数)
    • 标准的门控加法塑形将等式 5 中的塑形项 \(S\) 修改为依赖于任务成功与否的条件形式:
      $$\text{Gated Additive: }\hat{R}^{(+g)} = R + \lambda \cdot S_{\text{gate} }$$ $$\text{where }S_{\text{gate} } = \mathbb{I}(R = 1)\cdot P.$$
      • \(\mathbb{I}(R = 1)\) 是一个硬门控
      • \(R\in \{0,1\}\) 是二元任务结果
  • 考虑在等式 7 中定义的乘法塑形:
    $$\text{Multiplicative: }\hat{R}^{(\times)} = R\cdot S_{\text{mult} }.$$
  • 为了便于比较,将缩放因子 \(S_{\text{mult} }\) 分解为一个基线和偏差项
    • 将 \(S_{\text{mult} } = 1 + (S_{\text{mult} } - 1)\) 重写,其中偏差对应于缩放机制应用的隐式惩罚:
      $$\lambda P:= S_{\text{mult} } - 1\quad \Longrightarrow \quad S_{\text{mult} } = 1 + \lambda P.$$
  • 分析两种二元状态下的行为:
    • 情况 \(R = 0\) (失败):
      $$\hat{R}^{(+g)} = 0 + \lambda \cdot (0\cdot P) = 0$$ $$\hat{R}^{(\times)} = 0\cdot (1 + \lambda P) = 0$$
      • 两种方法都会停用惩罚,防止在困难实例上过早终止
    • 情况 \(R = 1\) (成功):
      $$\hat{R}^{(+g)} = 1 + \lambda \cdot (1\cdot P) = 1 + \lambda P$$ $$\hat{R}^{(\times)} = 1\cdot (1 + \lambda P) = 1 + \lambda P$$
      • 两种方法都应用完整的惩罚,以激励正确解决方案中的效率
  • 结论:在典型的 RLVR 的严格二元奖励设置中,乘法塑形在数学上等价于启发式门控
    • 继承了在不正确的推理路径上保护策略免受惩罚的理想特性

Generalization to Continuous Rewards,泛化到连续奖励

  • 当过渡到连续奖励设置时,启发式门控的局限性变得明显,例如 RLHF(其中奖励通常由奖励模型给出)或具有部分分数的推理任务
  • 在这些场景中,硬指示器 \(\mathbb{I}(R = 1)\) 是难以定义的
    • 简单地将它替换为一个阈值 \(\mathbb{I}(R > \tau)\) 会引入超参数和优化不连续性
    • 相反,完全移除门控(回到纯粹的加法塑形)会重新引入命题 3.1 中讨论的权衡问题,即模型可以通过缩短长度来改进 \(\hat{R}^{(+)}\),即使 \(R\) 略有下降
  • 乘法塑形通过充当软门控机制解决了这个问题
    • 正如命题 3.2 推导的那样,在乘法塑形下,组归一化优势包含以下控制长度信号的项:
      $$A(\hat{R}^{(\times)})\propto R\cdot (S - \mu_S) + \ldots$$
    • 这个分解表明,长度变化 \((S - \mu_S)\) 对优势的影响明确地由任务奖励 \(R\) 缩放
    • 这创建了学习信号的动态重加权:
      • 低质量 \((R \approx 0)\): 长度信号被抑制 \((R \cdot (S - \mu_S) \approx 0)\)
        • 优势主要由改进任务正确性的需求决定,策略几乎收不到关于长度的信号。这模仿了非激活的门控,防止模型坍缩到短但不正确的 Response
      • 高质量 \((R \approx 1)\): 长度信号完全激活 \((R \cdot (S - \mu_S) \approx S - \mu_S)\)
        • 优势显著地倾向于成功组内较短的轨迹
        • 这模仿了激活的门控,能力得到保证后,就有效地优先考虑效率
  • 这个特性有效地根据 Response 质量在”无惩罚”和”完全惩罚”之间进行插值
    • 因此,\(\mathbf{GR}^3\) 允许作者在 RLHF 中应用强长度正则化,而不会有模型坍缩到短、低质量 Response 的风险,如图 2 中的动态所示

Empirical Observation

  • 作者进一步进行了一项分析实验,如图 5 所示
    • 通过定义 \(\lambda P := S_{\text{mult} } - 1\),将乘法塑形项转换为门控加法塑形中使用的惩罚形式
    • 然后引入不同的阈值 \(\mathbb{I}(R > \tau)\) 来将门控加法塑形扩展到连续奖励的 RLHF 设置
    • 可观察到
      • 由于优化不连续性,所有 \(\tau\) 的选择都导致性能低于标准 GRPO
      • 同时,生成长度被更激进地减少,降至基础策略模型的典型水平以下

附录 B:Analysis of the Difficulty Over-Adaptation Phenomenon,难度过适应现象分析

  • 第 3.2 节中讨论了组相对长度正则化如何使长度预算适应于 on-policy 统计量
  • 虽然这消除了全局阈值的刚性,但在某些塑形策略中观察到了一个意想不到的副作用(例如,Efficiently (2025)):
    • 策略可能变得对感知到的任务难度过度适应(over-adaptive) ,作者将此现象称为难度过适应(Difficulty Over-Adaptation)
    • 具体解释:模型倾向于在简单 Prompt 上激进地压缩推理,而在困难 Prompt 上未能有效约束过长的长度
      • 理解:可能是因为
        • 简单的 Prompt 上,大家的奖励都收敛为 1 左右了,从而学习的重点是长度(缩短)
        • 困难的 Prompt 上,偶尔有一个正确的 Response,此时的长度惩罚可能不占主体,主要以优化 Response 为主
          • 因为乘法情况下,想要获得高的 Final Reward,高质量(Reward Score 为正)的回复是必须的前提
    • 如表 2 所示,并通过表 6 中的示例加以说明
    • 换句话说,正则化器扭曲了推理 effort 在不同难度级别上的分配
  • 为了理解这种偏差背后的机制,作者分析奖励函数对长度变化的敏感性
    • 考虑 Efficiently (2025) 的公式:
      $$\hat{R} (x,y^{(i)}) = R(x,y^{(i)}) - \lambda \cdot \mathbb{I}(R(x,y^{(i)}) = 1)\cdot s\left(\frac{\ell^{(i)} - \bar{\ell} }{\sigma_{\ell} }\right).$$
      • 在这个公式中,sigmoid 函数 \(s(\cdot)\) 的输入被因子 \(1 / \sigma_{\ell}\) 放大
      • 这意味着增加 Response 长度的边际惩罚与该组的统计离散度 \((\sigma_{\ell})\) 成反比
    • 这种依赖性在不同难度区间内造成了不稳定性
      • 在较简单的 Prompt 上,策略通常很自信,并收敛到一致的 Response ,导致长度标准差坍缩(即,\(\sigma_{\ell} \rightarrow 0\))
        • 因此,缩放因子 \(1 / \sigma_{\ell}\) 变得极大
        • 在这个低方差区间内,即使是一个 token 的偏差也会被视为巨大的统计异常值,触发奖励的严重下降
        • 这种 hypersensitivity 迫使模型过度压缩简单 Response 以避免严厉的惩罚
      • 在困难的 Prompt 上,策略通常会探索多样化的推理路径,导致更大的 \(\sigma_{\ell}\)
        • 这会减弱惩罚信号,使得较长的生成能够以相对较小的代价持续存在
  • 相比之下,\(\text{GR}^{3}\) 基于特征尺度(平均长度 \(\bar{\ell}\))而非离散度来归一化惩罚:
    $$\hat{R} (x,y^{(i)}) = R(x,y^{(i)})\cdot \frac{1}{1 + \alpha\cdot\frac{\ell^{(i)} }{\ell} }.$$
    • 惩罚的敏感性取决于相对于 \(\bar{\ell}\) 的比率
    • 平均长度 \(\bar{\ell}\) 对于较简单的任务自然更小(适当地使预算更紧张)
      • 但它代表了 Response 的物理尺度,并且不会随着模型变得自信而坍缩到接近零的值
    • \(\text{GR}^{3}\) 使用基于尺度而非方差进行归一化,提供了一个稳定的正则化信号
      • 该信号对模型的收敛状态保持鲁棒,有效地缓解了不同难度级别间压缩压力的不平衡

附录 C:The Dilemma of High Reward Density,高奖励密度的困境

  • 本节分析了将长度正则化与组归一化优势相结合时出现的一个基本结构张力
  • 作者证明,在高奖励密度下,一个看似理想化的严格条件(确保所有最高奖励轨迹都保持正优势)通常在数学上是不可行的
  • 然后作者证明,即使是一个宽松的平均情况标准,在所有采样轨迹都达到 \(R_{\text{max} }\) 的极限情况下也会退化,这是由于乘法长度重缩放的凸性所致
  • 这些观察结果证明了第 3.3 节中采用的基于松弛的校准策略和在线过滤策略的合理性

C.1 Impossibility of the Strict Advantage-Preservation Objective,严格优势保持目标是不可行的

A Strict but Natural Objective
  • 长度感知强化学习的一个自然目标是保留最佳解决方案的优化信号
  • 具体来说,考虑以下严格条件:在一个采样组内,所有达到最大任务奖励 \(R_{\text{max} }\) 的轨迹,在长度正则化后应获得正的优势
  • 直观上,这些轨迹代表了最高质量的 Response ,给它们分配负的优势可能会阻碍正确的推理行为
  • 在 GRPO 风格的归一化下,严格的目标因此等价于要求
    $$\hat{R} (x,y^{(j)}) > \mu_{\hat{R} },\quad \forall j\in \mathcal{H}$$
    • \(\mathcal{H}:= \{j:R(x,y^{(j)}) = R_{\text{max} }\}\) 表示最高奖励轨迹的集合
    • \(\hat{R} (x,y^{(j)})\) 是正则化后的奖励,而 \(\mu_{\hat{R} }\) 是组内正则化奖励的平均值
Impracticality Under High Reward Density,在高奖励密度下,上述目标不切实际
  • 在高奖励密度下,为所有最高奖励轨迹保留正优势的严格目标在数学上是不可行的,无论长度惩罚系数 \(\alpha\) 有多小
  • 在 \(\mathbf{GR}^3\) 下,正则化奖励为
    $$\hat{R} (x,y^{(j)}) = \frac{R(x,y^{(j)})}{1 + \alpha \cdot \frac{\ell^{(j)} }{\ell} }.$$
  • 对于所有 \(j\in \mathcal{H}\),有 \(R(x,y^{(j)}) = R_{\text{max} }\),因此 \(\hat{R}\) 的变化仅取决于长度
  • 由于正则化项在 \(\ell^{(j)}\) 上是单调递减的,\(\mathcal{H}\) 中最长的轨迹
    $$\ell_{\text{max} } = \max_{j\in \mathcal{H} }\ell^{(j)}$$
  • 获得最小的正则化奖励
    $$\hat{R}_{\text{min} } = \frac{R_{\text{max} } }{1 + \alpha \cdot \frac{\ell_{\text{max} } }{\ell} }.$$
  • 当奖励密度高时,组均值 \(\mu_{\hat{R} }\) 主要由 \(\mathcal{H}\) 中的轨迹决定,因此近似于它们的平均值
  • 由于一个集合的最小值不能超过其均值,作者必须有 \(\hat{R}_{\text{min} }\leq \mu_{\hat{R} }\)
  • 因此,至少有一个最高奖励轨迹在组归一化后获得非正的优势
    • 这表明,在高奖励密度下,所有最高奖励轨迹在组归一化后都保持正优势是不可能的
    • 这种冲突是结构性的,而非超参数选择的结果
  • 即使在极限 \(\alpha \rightarrow 0\) 下,这种不可能性仍然存在
    • 使用一阶展开,
      $$\hat{R} (x,y^{(j)})\approx R_{\text{max} }\cdot \left(1 - \alpha \cdot \frac{\ell^{(j)} }{\ell}\right)$$
    • 并记
      $$\bar{\ell}_{\mathcal{H} } = \frac{1}{k}\sum_{j\in \mathcal{H} }\ell^{(j)}$$
    • 为最高奖励轨迹中的平均长度,得到
      $$\hat{R} (x,y^{(j)}) - \mu_{\hat{R} }\approx -R_{\text{max} }\cdot \alpha \cdot \frac{\ell^{(j)} - \bar{\ell}_{\mathcal{H} } }{\bar{\ell} }.$$
    • 因此
      $$\hat{A}^{(j)}\propto -(\ell^{(j)} - \bar{\ell}_{\mathcal{H} }).$$
    • 所以任何长度超过 \(\mathcal{H}\) 平均长度的最高奖励轨迹都必须获得负优势,无论 \(\alpha\) 有多小
    • 组归一化强制实行零均值约束,这不可避免地导致在具有不同长度的同等正确的轨迹中产生符号翻转
Empirical Observation
  • 图 6 凭经验说明了这一现象
    • 横轴显示组中达到 \(R_{\text{max} }\) 的轨迹比例(奖励密度),纵轴显示满足严格条件 \(A_{i} > 0\) 的最高奖励轨迹的比例
    • 即使使用非常小的惩罚强度(图 6(a), \(\alpha = 0.05\)),满足率也随着奖励密度的增加而下降
    • 使用较大的 \(\alpha\)(图 6(b), \(\alpha = 5.0\)),下降变得更加明显
    • 这些结果证实,严格条件的违反源于固有的结构冲突,而不是糟糕的超参数调整
  • 这个不可能性结果直接激发了第 3.3 节中宽松校准策略的提出(在组内所有轨迹都达到 \(R_{\text{max}}\) 的极限情况下, 过滤掉此类组)
    • 作者不是试图保护最长的高奖励轨迹(这通常是不可行的),而是采用一个平均情况标准,确保一个典型的、长度接近组均值的高质量轨迹保持在组平均正则化奖励之上
    • 这自然导致了等式 16 中的实际约束

C.2. Degeneracy of the Average-Case Criterion in the All-\(R_{\text{max} }\) Limit,全 \(R_{\text{max} }\) 极限下平均情况标准的退化

  • 回顾平均情况校准标准(等式 16),它要求一个代表性的高质量轨迹(奖励 \(R_{\text{max} }\) 和平均长度 \(\bar{\ell}\))保持非负优势:
    $$\frac{R_{\text{max} } }{1 + \alpha}\geq \mu_{\hat{R} }$$
    • \(\mu_{\hat{R} }\) 表示正则化奖励的组内均值
  • 如第 3.3 节所述,在组中所有轨迹都达到 \(R_{\text{max} }\) 的极限情况下,这个约束可能会失败,这激发了在线过滤的动机
All-\(R_{\text{max} }\) case reduces the condition to a Jensen inequality,全为 \(R_{\text{max} }\) 将条件简化为 Jensen 不等式
  • 假设一个采样组满足所有 \(i \in \{1, \ldots , G\}\) 有 \(R(x,y^{(i)}) = R_{\text{max} }\)
  • 在 \(\text{GR}^{3}\) 下,正则化奖励为
    $$\hat{R}^{(i)} = R_{\text{max} }\cdot \frac{1}{1 + \alpha\cdot\frac{\ell^{(i)} }{\bar{\ell} } }.$$
  • 定义归一化长度比率 \(z_{i} := \ell^{(i)} / \bar{\ell}\),它满足 \(\frac{1}{G} \sum_{i = 1}^{G} z_{i} = 1\)
  • 设
    $$f(z):= \frac{1}{1 + \alpha z},\qquad z\geq 0.$$
  • 那么 \(\mu_{\hat{R} } = R_{\text{max} } \cdot \frac{1}{G} \sum_{i = 1}^{G} f(z_{i})\),并且等式 16 变为
    $$f(1)\geq \frac{1}{G}\sum_{i = 1}^{G}f(z_{i}).$$
Convexity flips the inequality,凸性翻转了不等式
  • 直接计算给出
    $$f^{\prime \prime}(z) = \frac{2\alpha^{2} }{(1 + \alpha z)^{3} } >0$$
  • 所以 \(f\) 在 \([0,\infty)\) 上是凸函数
  • 根据 Jensen 不等式,
    $$f\left(\frac{1}{G}\sum_{i = 1}^{G}z_{i}\right)\leq \frac{1}{G}\sum_{i = 1}^{G}f(z_{i}).$$
  • 利用 \(\frac{1}{G}\sum_{i}z_{i} = 1\),可以得到
    $$f(1)\leq \frac{1}{G}\sum_{i = 1}^{G}f(z_{i})$$
    • 这与期望的条件相反
  • 而且,只要长度不全相同(即,当 \(z_{i}\) 不是常数时),这个不等式就是严格的
    • 因此,在一个全 \(R_{\text{max} }\) 组中,等式 16 中的平均情况约束只有在退化情况 \(\ell^{(1)} = \dots = \ell^{(G)}\) 下才能成立;否则它必然失败
    • 这解释了为什么作者在实践中通过在线过滤排除这样的组
  • 理解:
    • 这里这种组下,都是正确的回复,我们希望模型选择更短的 Response,似乎也不是什么问题吧?为什么在作者的眼里是一个问题呢?

附录 D:Detailed Experimental Settings

  • 在跨越 RLVR 和 RLHF 的代表性后训练场景中评估 \(\text{GR}^{3}\)
  • 在 RLVR 设置中,研究模型是否能在保持任务性能提升的同时,减少不必要的长 CoT 推理
  • 在 RLHF 设置中,检验 GR3 是否减轻了 Reward Hacking (2016) 并产生具有自然 Response 长度的良好对齐的 Response
  • 本节提供实验中使用的详细超参数和配置
    • 所有实验均使用 veRL (2024) 作为训练框架进行,基于标准的 GRPO 优势估计器
    • 实验的详细实现设置如表 7 所示
  • 作者还做了如下验证:
    • 在 AIME-24 (MAA, 2024)、AIME-25 (MAA, 2025)、AMC-23 (MAA, 2023) 和 MATH500 (2023) 上评估数学推理能力
    • 在 LiveCodeBench v6 (2024) 和 MultiPL-E (2022) 上评估代码生成能力
    • 在 Arena-Hard-Auto (2024) 和 AlpacaEval (2024) 上评估对话能力
  • 遵循标准做法,报告 AlpacaEval 的长度控制 (LC) 胜率
    • 对于 Arena-Hard-Auto,不应用长度控制,而是使用直接从原始成对评判器得出的分数

附录 E:Additional Experimental Results

E.1. Mathematical Reasoning Results on 1.5B Models

  • 本节展示使用 DeepSeek-R1-Distill-1.5B 作为基础模型的数学推理任务实验结果
  • 如表 8 所示,结果与 DeepSeek-R1-Distill-7B 的实验结果一致:
    • \(\text{GR}^3\) 不仅显著增强了模型的推理能力,而且在 token 数量方面大幅减少了生成输出的长度,展示了在不同规模上的良好性能

E.2. Ablation Results on Penalty Strength \(\alpha\),关于 \(\alpha\) 的消融结果

  • 本节通过在相同训练设置下改变其值,分析 \(\text{GR}^3\) 对长度惩罚系数 \(\alpha\) 的敏感性
  • 1.5B 模型的详细结果如表 9 所示
    • 当 \(\alpha\) 较大时(例如, \(\alpha = 1.0\)),乘法重缩放项会严重惩罚长轨迹,很大程度上独立于它们的奖励水平
      • 在这种 regime 下,\(\text{GR}^3\) 的行为类似于传统的长度惩罚 RL,其中优化主要由缩短 Response 而非提高解决方案质量驱动
      • 尽管 token 使用量显著减少,但相对于初始模型的性能增益变得明显较小,表明过于激进的正则化抑制了有用的长形式推理
    • 随着 \(\alpha\) 减小, Response 长度以逐渐且良好的方式增加,而任务性能首先提高,然后趋于饱和
      • 特别是,从 \(\alpha = 0.33\) 移动到更小的值(例如,0.2 和 0.1)会产生更长的生成,但准确率提升微乎其微或不一致
        • 这一经验趋势与第 3.3 节中的分析紧密吻合
      • 一旦惩罚足够弱,以至于代表性的高质量轨迹的优势得以保留,进一步降低 \(\alpha\) 主要会放宽长度约束,而不会引入更强的优化信号
        • 换句话说,训练已经越过了优势保持边界,在此之后,额外的推理长度不再转化为有意义的性能增益
  • 总体而言,\(\alpha\) 控制着不同的行为区间,而 \(\text{GR}^3\) 提供了一种 Principled 方法,使其在长度控制和能力增益之间的优势保持过渡点附近进行选择

附录 F:Qualitative Analysis of Rollout Trajectories,Rollout 轨迹的定性分析

  • 为了更好地理解两种训练目标所导致的行为差异,本节在相同的推理 Prompt 上,展示了 \(\text{GR}^3\) 训练模型和 GRPO 训练基线的代表性 rollout 示例
  • 表 10 和 11 显示了生成轨迹

\(\text{GR}^3\): concise reasoning with preserved structure,简洁的推理与保留的结构

  • 如表 10 所示,\(\text{GR}^3\) 训练的模型产生了一个既结构化又经济的推理轨迹
  • 解决方案遵循清晰的进展:
    • (i) 重述任务
    • (ii) 识别完整旋转下方向的周期性
    • (iii) 将角度约简为 \(360^{\circ}\) 的余数
    • (iv) 将剩余旋转映射到罗盘方向
    • 每一步都直接有助于推进解决方案,中间检查用于确认而非重新推导早期的结果
  • 重要的是,轨迹以正确格式化的 boxed 答案果断终止
    • 推理链既没有人为缩短,也没有过于冗长
    • 冗余的重新计算和自我怀疑循环基本不存在
    • 这反映了一个策略,它已经学会主要将 token 分配给因果相关的步骤

GRPO: verbose loops and diluted signal,冗长的循环和稀释的信号

  • GRPO 训练的 baseline(表 11)表现出显著不同的行为
    • 尽管它反复识别出正确的中间事实(例如 \(360^{\circ}\) 周期性和 \(2250 \mod 360 = 90^{\circ}\) 的约简)
    • 但它经常重新推导这些事实,质疑先前已建立的结论,并在等效的公式之间振荡(例如,完整旋转与分数旋转)
    • 轨迹包含多次自我修正,但这些修正并未引入新信息
  • 这种模式导致冗长的推理痕迹,其中许多 token 仅与进展 weakly 相关
    • 从优化的角度来看,这样的轨迹将奖励信号分散到大量低影响的 token 上,减少了对决定性推理步骤的有效学习压力
    • 此外,尽管最终绕回正确的方向,但模型未能以所需的 boxed 格式呈现清晰的最终答案,使解决方案没有结论

Implications for optimization dynamics

  • 这些定性差异与第 4.3.2 节讨论的机制一致
  • 通过降低不必要长轨迹的优势,\(\text{GR}^3\) 隐式地偏好具有更高 Per Token 信息密度的推理路径
  • 这鼓励策略保留基本的逻辑结构,同时避免非鲁棒的推理模式,例如重复或自我怀疑的循环
  • 结论:奖励信号更加集中在对应于有意义的推理转换的 token 上,而不是被稀释到冗长但贡献低的片段中
1…171819…352
San Ye

San Ye

Stay Hungry. Stay Foolish.

704 posts
53 tags
© 2026 San Ye
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4