ARPO:在工具反馈后分支探索#

进阶7 分钟阅读查看源文件 ↗

TL;DR#

本页内容7 个部分

ARPO:工具反馈后分支、终局评分与共享前缀更新

1. 从头采样为什么会重复计算#

假设模型正在用搜索工具回答一个问题。它已经生成了搜索请求,也收到了工具结果;接下来可以选择不同的后续方案。若每条轨迹都从问题开头重新生成,就会重复生成前面的内容,并执行相同的工具调用。

ARPO(Agentic Reinforced Policy Optimization)复用已有历史,从工具反馈后生成多个后续分支。每条分支继续执行,直到得到完整回答和最终任务评分。这样,部分采样预算可以用于比较同一工具反馈之后的不同方案。[1]

以四条路径为例:甲、乙、丙共享搜索前后的已有历史,再分别生成后续内容;丁从问题开头独立生成。

ARPO 需要处理两个问题:(1)在哪里增加分支;(2)不同分支的最终结果怎样影响共享前缀。 前者决定怎样采样,后者决定怎样更新策略。默认更新仍使用 GRPO 的组内优势与裁剪目标。[1]

2. 根据熵变化选择分支位置#

2.1 分支预算与生成历史#

对同一个问题,设最终收集 KK 条完整轨迹。先从问题开头启动 N<KN<K 条,将剩余 K−NK-N 条轨迹预算用于中途分支。本例取 K=4K=4、N=2N=2:一条初始路径扩展为甲、乙、丙,另一条完成为丁。

分支沿用已经生成的历史,只重新生成后续部分,不重复执行前面的工具调用。达到轨迹预算后停止增加分支,已有路径继续执行到结束。若已有路径全部结束而预算尚未用完,则补充从头采样。[1]

下面用 sjs_j 表示第 jj 个模型生成位置之前的完整历史,包括模型生成内容与工具结果。πold\pi_{\mathrm{old}} 是本批采样使用的策略。工具结果属于环境输入,不作为模型动作计算策略 loss。

2.2 初始窗口与工具反馈后窗口的熵差#

ARPO 用下一个 token 分布的熵衡量生成的不确定性。若词表大小为 VV,第 jj 个生成位置的熵为:

Hj=−∑v=1Vπold(v∣sj)log⁡πold(v∣sj).H_j=-\sum_{v=1}^{V}\pi_{\mathrm{old}}(v\mid s_j)\log\pi_{\mathrm{old}}(v\mid s_j).

熵较大,表示概率分散在更多候选 token 上。这里计算的是整个候选分布的熵,不是实际采到的那个 token 的负 log 概率。

先记录从问题开头生成的前 kk 个位置的熵,作为初始参照;每次工具返回后,再记录紧接着生成的 kk 个位置。下面用两个窗口的平均熵之差表示变化,把固定归一化尺度并入系数 cHc_H:

ΔH=1k∑j=1k(Hjafter−Hjinitial).\Delta H=\frac1k\sum_{j=1}^{k}\left(H_j^{\mathrm{after}}-H_j^{\mathrm{initial}}\right).

这里的参照是轨迹开头的初始窗口,不是每次工具调用之前的相邻窗口。ΔH>0\Delta H>0 表示工具返回后的窗口平均熵高于初始窗口。

2.3 分支规则与一次判定#

设 α\alpha 为基础分支分数,cH≥0c_H\geq0 控制熵变化的影响,hh 为阈值。有剩余轨迹预算且 α+cHΔH>h\alpha+c_H\Delta H>h 时,增加后续分支;否则沿原路径继续。 分支分数用于阈值判断,不必是落在 [0,1][0,1] 的概率。[1]

在手算示例中,初始窗口的平均熵为 0.20.2,某次工具返回后的窗口平均熵为 0.60.6,于是 ΔH=0.6−0.2=0.4\Delta H=0.6-0.2=0.4。取 α=0.1\alpha=0.1、cH=1c_H=1、h=0.3h=0.3,此时 分支分数=0.1+1×0.4=0.5>0.3\text{分支分数}=0.1+1\times0.4=0.5>0.3,因此预算允许时增加分支。假设完成本轮采样后得到甲、乙、丙、丁四条轨迹。

熵变化只决定是否增加采样,不判断路径是否正确。分支分数不是任务奖励,也不直接进入 advantage;策略更新使用完整轨迹的最终评分。

3. 用最终评分更新共享前缀#

3.1 四条轨迹的评分与优势#

假设甲、乙成功,丙、丁失败,最终分数为 [1,1,0,0][1,1,0,0]。这是用于解释更新的二值评分示例,不是实际实验结果。

本页用 0/10/1 分数说明计算。实际任务可以另设正确性、格式和工具使用奖励;这些评分选择与分支机制应分别比较。[1]

第 ii 条轨迹的最终分数记作 RiR_i。沿用 GRPO,在同题的 KK 条轨迹中计算均值 Rˉ=1K∑iRi\bar R=\frac1K\sum_iR_i 与总体标准差 σR=1K∑i(Ri−Rˉ)2\sigma_R=\sqrt{\frac1K\sum_i(R_i-\bar R)^2},再得到组内优势 A^i=(Ri−Rˉ)/(σR+δ)\hat A_i=(R_i-\bar R)/(\sigma_R+\delta),其中 δ>0\delta>0 用于除零保护。

本例的均值为 0.50.5,总体方差为 0.250.25,标准差为 0.50.5。忽略极小的除零保护,各条轨迹的优势为:

轨迹 与其他轨迹的关系 最终分数 A^i\hat A_i
甲 与乙、丙共享前缀 1 +1+1
乙 与甲、丙共享前缀 1 +1+1
丙 与甲、乙共享前缀 0 −1-1
丁 从头独立生成 0 −1-1

3.2 默认方式:保留各条轨迹的优势#

ARPO 默认采用 soft assignment(隐式合成):每条完整轨迹分别使用自己的 A^i\hat A_i 计算 GRPO loss,不预先替换共享前缀的优势。[1]

甲、乙、丙的同一个前缀 token 出现在三条完整轨迹中。它们在这个位置具有相同的历史和动作,因此使用同一个条件概率。计算梯度时,这三份训练项的贡献相加;分支之后各自生成的位置,只计入所属轨迹的训练项。

3.3 一次共享 token 的梯度计算#

为单独比较这些贡献,假设每条轨迹恰有 44 个有效模型 token,轨迹数为 K=4K=4。当前策略 πθ\pi_\theta 与采样策略 πold\pi_{\mathrm{old}} 相同,因此 token 的概率比都为 11,尚未触发裁剪。本例只计算任务项,忽略参考 KL 惩罚。

GRPO 先对一条轨迹的有效 token 平均,再对四条轨迹平均。因此,在上述条件下,每个 token 的 log 概率梯度都乘以该轨迹的优势再除以 4×4=164\times4=16。甲、乙各贡献 +1/16+1/16,丙贡献 −1/16-1/16。

取甲、乙、丙共享的某一个前缀 token。三份训练项使用相同的 log 概率梯度,但系数有正有负。将这些系数相加,得到:

共享 token 的合计梯度系数=116+116−116=116.\text{共享 token 的合计梯度系数}=\frac{1}{16}+\frac{1}{16}-\frac{1}{16}=\frac{1}{16}.

丁没有这段相同的历史,不计入该共享 token 的三份贡献。各分支独有 token 的系数,则依次为 +1/16,+1/16,−1/16,−1/16+1/16,+1/16,-1/16,-1/16。

最大化任务目标时,共享 token 的 log 概率梯度得到正系数;成功和失败的后续路径分别得到正、负系数。这描述当前采样数据上的任务梯度,不能据此保证更新后每个 token 的实际概率变化。

4. 共享梯度的推导与显式分配比较#

4.1 完整任务目标与参考约束#

只计模型生成的有效 token。令第 ii 条轨迹包含 TiT_i 个这样的 token,yi,ty_{i,t} 是其中第 tt 个 token,si,ts_{i,t} 是生成它时的完整历史。它的概率比为 ri,t=πθ(yi,t∣si,t)/πold(yi,t∣si,t)r_{i,t}=\pi_\theta(y_{i,t}\mid s_{i,t})/\pi_{\mathrm{old}}(y_{i,t}\mid s_{i,t})。令 ϵ>0\epsilon>0 为裁剪宽度。固定采样数据和 A^i\hat A_i 后,默认任务目标为:

JARPOtask(θ)=1K∑i=1K1Ti∑t=1Timin⁡ ⁣(ri,tA^i,clip⁡(ri,t,1−ϵ,1+ϵ)A^i).J_{\mathrm{ARPO}}^{\mathrm{task}}(\theta)=\frac1K\sum_{i=1}^{K}\frac1{T_i}\sum_{t=1}^{T_i}\min\!\left(r_{i,t}\hat A_i,\operatorname{clip}(r_{i,t},1-\epsilon,1+\epsilon)\hat A_i\right).

1/Ti1/T_i 对每条轨迹内的 token 平均,1/K1/K 再对完整轨迹平均。等长算例中的系数 1/161/16 来自 KTi=4×4KT_i=4\times4。

参考约束另外加入:整体最大化 JARPOtask−βD^refJ_{\mathrm{ARPO}}^{\mathrm{task}}-\beta\widehat D_{\mathrm{ref}},其中 D^ref\widehat D_{\mathrm{ref}} 是所选 reference KL 采样惩罚的平均,β≥0\beta\geq0 控制其强度。这里概率比的分母使用 old,参考惩罚才使用 ref;采样惩罚及其梯度见 KL Regularization。若训练程序最小化 loss,则对上述完整目标取负号。[1]

4.2 将共享位置的梯度相加#

设某个前缀 token 被 dd 条轨迹共享,并将这些轨迹编号为 1,…,d1,\ldots,d。它们在该位置有相同的历史 sts_t、动作 yty_t 和概率比 rr。当这 dd 个训练项都未进入裁剪常数分支时,每项保留 rA^ir\hat A_i;固定优势后,有 ∇θr=r∇θlog⁡πθ(yt∣st)\nabla_\theta r=r\nabla_\theta\log\pi_\theta(y_t\mid s_t)。因此,共享 token 的任务梯度为:

共享 token 的任务梯度=∑i=1dA^iKTi∇θr=rK(∑i=1dA^iTi)∇θlog⁡πθ(yt∣st).\begin{aligned} \text{共享 token 的任务梯度}&=\sum_{i=1}^{d}\frac{\hat A_i}{KT_i}\nabla_\theta r\\ &=\frac rK\left(\sum_{i=1}^{d}\frac{\hat A_i}{T_i}\right)\nabla_\theta\log\pi_\theta(y_t\mid s_t). \end{aligned}

这里相加的是梯度贡献,不是先把共享 token 从训练数据中去重。各条轨迹的长度 TiT_i 不同时,其优势会分别乘以 1/Ti1/T_i。

4.3 显式平均何时得到相同结果#

hard assignment(显式分配) 先将共享这段前缀的 dd 条轨迹优势取平均,再给共享 token 使用:A^shared=1d∑i=1dA^i\hat A^{\mathrm{shared}}=\frac1d\sum_{i=1}^{d}\hat A_i。分支之后各自生成的 token 仍保留所属轨迹的优势。[1]

甲、乙、丙的共享优势为 A^shared=(1+1−1)/3=1/3\hat A^{\mathrm{shared}}=(1+1-1)/3=1/3。保留三份前缀副本时,合计梯度系数为 合计梯度系数=3×(1/3)/16=1/16\text{合计梯度系数}=3\times(1/3)/16=1/16,与默认隐式合成相同。

当参与比较的轨迹等长,且相关训练项都未进入裁剪常数分支时,两种方式给出相同的共享梯度。轨迹不等长时,隐式合成按 1/Ti1/T_i 加权,通常不等于简单平均优势。进入 clipping 后,正负优势的训练项还可能落在不同分支,因此不能普遍用一个平均优势替代逐项计算。

5. 局限性#

熵变化不能判断路径是否正确。 它只衡量两个窗口中生成分布的不确定性差异。工具反馈造成的预测不确定性增加也可能使熵升高,最终正确性仍需任务评分判断。

增加后续分支不能替代探索不同前缀。 甲、乙、丙共享同一段历史,因此三条轨迹存在相关性。新增分支只重新生成后续内容,不能比较分支位置之前的其他选择;增加后续分支数不等于增加同样数量的独立从头采样。

复用历史不保证固定比例的成本节省。 与每条轨迹都从头生成的 GRPO 相比,ARPO 复用分支前的交互,并用熵变化选择扩展位置。实际采样收益取决于共享前缀长度、分支位置和工具执行成本,需要在相同预算口径下比较。

参考资料#

  1. Agentic Reinforced Policy Optimization(2025,v1). 方法 §3:熵变化分支、共享前缀的显式与隐式分配、GRPO 目标。本文把固定熵归一化尺度并入 cHc_H;将采样策略统一记为 old,与参考策略 ref 区分。