SAPO: Single-Rollout Autoregressive Policy Optimization for Agentic Reinforcement Learning —— 精读
论文链接:https://arxiv.org/abs/2608.19842
发表时间:2026 年 8 月(arXiv:2608.19842v1,2026 年 8 月 20 日提交,标注 Preprint, Under Review)
发表机构:厦门大学(中国)+ 南洋理工大学(新加坡)——纯高校合作,无企业参与
作者:Dayang Liang*(梁,厦门大学,共同一作)、Lang Feng*(冯,南洋理工大学,共同一作)、Bo An(安波,南洋理工大学)、Yunlong Liu†(刘云龙,厦门大学,通讯作者)
备注:两位共一作者分属两校;基线部分数字引自共一作者冯朗等此前的 GiGPO 论文,超参设置也沿用该框架以保证公平。论文未提供代码链接。
一、论文背景
1.1 从“会说话”到“会做事”:Agentic RL 的崛起
大语言模型(LLM)的后训练已经从简单的指令微调,演进到用**强化学习(RL)**直接从环境反馈中学习。在数学推理、代码生成等单轮任务上,大规模 RL 后训练(如 DeepSeek-R1)已经带来肉眼可见的收益;而在多轮交互场景——推理、工具调用、网页搜索、代码执行——以 Search-R1 为代表的系统证明,策略可以学会通过一串动作主动获取外部信息。这条路线正把 LLM 从“被动文本生成器”变成“能长程交互的 Agent”。
但训练这样一个 Agent,绕不开两大主流技术路线的取舍:PPO(Proximal Policy Optimization)和GRPO(Group-Relative Policy Optimization)。理解它们各自的痛,才能理解 SAPO 的价值。
1.2 PPO 的痛:效果好,但要养一个“陪读老师”
PPO 是经典的 actor-critic 算法:一个策略网络负责生成动作,一个价值网络负责评估当前局面值多少分,两者配合通过 GAE(广义优势估计)把迟到的奖励回传到早期决策,实现细粒度的时序信用分配。
问题是:在 LLM 场景里,这个 critic 通常与策略同规模。想想看——相当于给每个学生配一位全职辅导老师,一对一盯着估分。效果确实稳,但显存和算力几乎翻倍:策略、critic、参考模型、rollout 模型四套权重同时在卡上跑,这是中小团队很难承受的开销。
1.3 GRPO 的痛:省了老师,但“全班都考零分”时就傻眼了
GRPO 的思路是干脆不要 critic:同一个任务采样一组(比如 8 条)轨迹,用组内奖励的均值和方差做归一化,得到每条轨迹的优势。类比来说,就是让同一个班的多个同学考同一套卷子,按班级平均分给每个人定优劣——不需要老师,因为“别人考多少分”就是基线。
这个设计在数学题这类有明确对错的任务上非常好用,但论文指出它在长程 Agent 任务上有三个日益凸显的软肋:
- 优势坍缩。Agent 任务的奖励稀疏且延迟——往往整条轨迹跑完才知道成败。当组内所有轨迹都失败、拿到相同或几乎相同的奖励时,归一化后优势全部趋近于零,梯度消失。任务越长越难,“全班都考零分”的场面就越常见,而这恰恰是最需要学习信号的时刻。
- 没有时序信用分配与价值泛化。一条轨迹的组级优势被平均地摊给轨迹上的每一个 token——第 3 步的英明决策和第 47 步的致命失误拿到完全相同的学习信号。学出来的 critic 本可以识别“低价值的重复、错误前缀”,这种跨状态、跨提示、跨迭代轮次泛化的价值估计,组相对方法完全不具备。
- 采样预算与质量的两难。组太小,基线噪声大;组变大,稳定性确实提升,但 rollout 成本成倍增加,而且长轨迹变长不一的 Agent 场景里,每个任务都要等组内最慢的那条轨迹跑完才能更新——同步屏障让训练吞吐雪上加霜。
一句话总结这个格局:PPO 有价值泛化和信用分配但太贵,GRPO 便宜但信号质量在长程任务上塌方。学术界显然不甘心二选一——DAPO 靠动态采样和非对称裁剪修补组相对学习;ReMax、RLOO 用贪心基线或留一法基线去掉 critic;VinePPO 用蒙特卡洛续跑估计中间价值;Open-Reasoner-Zero、VC-PPO、VAPO 反向行之,恢复显式价值模型并证明训得好的 critic 对长程推理帮助很大,但它们依然维护一个独立的、常常是策略规模的价值网络。Hydra-PPO 让策略和价值共享冻结主干但需要角色专属的适配器与头,其全共享变体还暴露出策略—价值干扰;POISE 用轻量探针复用 actor 隐状态,却依赖跨 rollout 构造;SAO 实现了异步单 rollout 训练,但依赖单独预训练的 critic。
于是留下一个悬而未决的问题:能不能只用一条 rollout、不养独立 critic,还保住显式的时序价值估计? SAPO 的回答是:能,而且钥匙就藏在 LLM 的自回归结构本身。
二、论文定位与关联工作
SAPO 处在“效率导向的 LLM RL”这一支研究脉络的交汇点上。把相关工作按技术路线摆开,位置会看得非常清楚:
| 技术路线 | 代表方法 | 核心做法 | 主要短板 |
|---|---|---|---|
| 组相对(无 critic) | GRPO、DeepSeek-R1、DAPO、GSPO、GVPO | 同一提示采样一组,组内归一化奖励当优势 | 优势坍缩;无时序信用分配;组采样贵且有同步屏障 |
| 无 critic 基线替代 | ReMax、RLOO | 贪心基线 / 留一法基线 | 无价值泛化;需额外解码轨迹 |
| 蒙特卡洛价值 | VinePPO | 分支续跑估计中间价值 | 用 rollout 计算量换 critic |
| 恢复显式 critic | Open-Reasoner-Zero、VC-PPO、VAPO | critic 预训练 + 改进 GAE | 仍维护独立(常为策略规模)价值网络 |
| 参数共享 | Hydra-PPO、J-Hydra | 冻结主干 + 角色 adapter | 需角色专属参数;共享变体有目标干扰 |
| 隐状态探针 | POISE | 从 actor 隐状态预测回报 | 依赖跨 rollout 构造解耦 |
| 异步单 rollout | SAO | 异步采样提升 rollout 利用率 | 依赖单独预训练的 critic、更高频价值更新 |
| 系统层优化 | HybridFlow | 模型放置、重分片、调度 | 与优势估计器正交,不解决信号质量 |
| 本文:SAPO | — | 一个因果自回归模型同时表示 π、V、Q | 既去掉组采样也去掉独立 critic,保留显式时序信用分配 |
另外几支长程 Agent RL 工作——ARChER 与 HiPER 的时间尺度分层、AgentGym-RL 的交互 horizon 渐进拉长、IGPO 的信息增益内在奖励——都在改善信用机制,但出发点与 SAPO 不同。
论文反复强调的一点值得单独划出来:SAPO 的核心贡献不是“权重共享”这个动作本身,而是“自回归建模与 actor-critic 学习之间的一一对应关系”。Hydra-PPO 们共享的是参数,SAPO 对齐的是信息流的因果结构——这个区别是它能在单 rollout 下同时做三件事(生成动作、估状态价值、估动作价值)而不互相污染的根基。
三、问题定义
论文把多轮 Agent 交互形式化为有限 horizon 的马尔可夫决策过程(MDP):
- 给定任务实例 x,在第 t 轮,策略 π_θ 观察状态 s_t,生成文本动作 a_t,转移到 s_{t+1} 并获得标量奖励 r_t;轨迹 τ = {(s₁,a₁,r₁), …, (s_T,a_T,r_T)}。
- 动作有固定格式:
<think></think>里写推理过程,<action></action>里写真正交给环境执行的动作。 - 关键难点:奖励稀疏且延迟——大多数任务只在轨迹终止时给一个结果奖励 R(τ)。
在这个设定下,两条既有路线的形式化定义分别是:
GRPO:对任务 x 用旧策略采样 N 条轨迹组成组 G_x,每条轨迹的优势只用组内统计量计算:A(τᵢ) = GroupNorm({R(τᵢ)})。没有 critic,也就没有对 A(s_t, a_t) 的逐轮估计。
PPO:最大化裁剪代理目标 L_PPO = E_t[min(ρ_t Â_t, clip(ρ_t, 1−ε, 1+ε) Â_t)],其中 ρ_t 是新旧策略似然比,Â_t 由学习型 critic V_φ(s_t) 经 GAE 得到。代价是策略、critic、参考、rollout 四套模型的显存与计算开销。
SAPO 要解的问题由此可以精确表述为:在上述多轮 MDP 中,每个任务只采样一条 rollout,不维护任何独立 critic 模型,同时保留(1)显式的、可跨状态泛化的价值学习;(2)轮级时序信用分配;(3)接近 critic-free 方法的内存与计算效率。三个目标此前从未同时达成——这就是论文的定位。
四、问题解法
SAPO 的解法可以拆成三层:表示层(怎么用一个自回归模型同时读出三个量)、优势估计层(单条 rollout 上怎么算轮级优势)、优化层(怎么把三路损失拧成一次反向传播)。
4.1 核心洞察:actor-critic 的信息流天然就是自回归的
先看一个朴素却被长期忽视的观察:actor-critic 学习所需的条件关系,恰好与语言生成的因果顺序对齐。
- 状态价值 V(s_t) 应该概括“动作之前”的局面——它只能依赖状态,不能偷看还没生成的动作;
- 动作价值 Q(s_t, a_t) 要评估“这个动作好不好”——它可以额外依赖完整的 a_t,但不能看到后续奖励或观察。
这两个依赖关系分别落在自回归解码的两个因果边界上:响应的第一个 token 之前(此刻只见状态)、响应的最后一个 token 之后(此刻状态+动作俱全)。SAPO 就在这两个位置分别读出 V(s_t) 和 Q(s_t, a_t),中间夹着动作生成。
打个比方:就像考试,开考前对整张卷子估一个期望分(V,只见题目),交卷后、出分前再估一次(Q,题目+你的作答都看见了)。两个时刻的“可见信息量”天然不同,而 LLM 的因果掩码恰好免费提供了这两个检查点——不需要独立编码器,也不需要手动切断上下文。一次前向传播,三个量同时产出。
4.2 两词元价值基:把 logits 变成有界分数
表示层的具体机制出人意料地简洁。设 z_θ(c) 是模型在上下文 c 之后的 next-token logits。SAPO 从词表中征用两个既有词元 w⁺ 和 w⁻,专门充当“价值基”:
$$p_θ(c) = \text{clip}\big((z_{w⁺}(c) - z_{w⁻}(c)) / \tau_v,\ -1,\ 1\big)$$$$V_θ(s_t) = R_{max} \cdot p_θ(c^s_t), \qquad Q_θ(s_t, a_t) = R_{max} \cdot p_θ(c^{sa}_t)$$其中 τ_v 是价值温度,R_max 匹配任务回报范围(回报落在 [−R_max, R_max] 内)。
这两个设计各有讲究:
- 取差值:模型对“正砝码”的偏好减去对“负砝码”的偏好,就是它对当前局面打的分。差值天然对共模漂移免疫——两个 logit 同时被抬高或压低(比如整体校准偏移)不影响读数,好比天平只关心两端重量之差。
- 裁剪到 [−1,1] 再乘 R_max:给学习范围画定了上下限,与回报尺度精确匹配。
更关键的一条纪律:w⁺/w⁻ 是只读探针,不是会说话的词元。它们从不被采样、从不被追加进上下文、也从不暴露给环境——像仪表盘上的读数,而不是嘴边说出的词。实现上,策略词表定义为 W_act = W \ {w⁺, w⁻},动作 softmax 只在 W_act 上归一化:
$$\pi_θ(a|c) = \frac{\exp z_{θ,a}(c)}{\sum_{w \in W_{act}} \exp z_{θ,w}(c)}$$rollout、策略对数概率评估、熵计算全部沿用这一限制。于是策略学习永远无法通过动作分布奖励或压制价值基,而两个保留词元的原始 logit 依然对价值目标开放。策略与价值共享 transformer 和语言模型头,但语义与监督各自独立——这就是“对应关系”而非简单“权重共享”的含义。
4.3 单流求值:白嫖一次本来就要做的前向
有人会问:读 V 和 Q 不是也要算 logits 吗,真的省了计算?论文的回应非常诚实:PPO 本来就要在 [c^s_t; a_t] 上评估 actor 以获取旧 token 对数概率,SAPO 只是在这次本来就会发生的前向里,顺手在“状态上下文末位”和“最后一个有效动作位”收集两个保留词元的 logit——前者给出 V_old(s_t),后者给出 Q_old(s_t, a_t)。不需要第二个模型,不需要重复编码同一前缀。所以 SAPO 的精确收益是删掉独立 critic 的前向/反向路径及其训练状态(优化器状态、梯度缓冲),而不是假设价值估计零成本。
4.4 单 rollout 的轨迹级优势估计
表示层解决“读得出”,这一层解决“学得准”。SAPO 每个任务只采样一条轨迹,用学到的状态价值把延迟反馈沿时间轴回传。两条铁律:所有目标都由冻结的 rollout 策略 π_θold 产生的价值构造——当前价值预测从不参与构造自己的训练目标(避免自我强化偏差);奖励只在环境执行后作为目标使用,从不进入动作价值的输入。
轨迹级 GAE:沿轨迹倒序递推 TD 残差与广义优势:
$$\delta_t = r_t + \gamma(1-d_t)V^{old}_{t+1} - V^{old}_t, \qquad A^{GAE}_t = \delta_t + \gamma\lambda(1-d_t)A^{GAE}_{t+1}$$被环境 horizon 截断的轨迹按有限 horizon 终止处理,末尾 bootstrap 值取零。这样即使环境只给一个终局结果,不同轮也拿到不同的学习信号;λ 照例权衡偏差与方差——像复盘一局长棋,λ 决定“只怪最后一步”还是“每一步都按终局清算”。
同一个倒序遍历还顺带给两个因果边界各造一个目标:
- 状态价值学 λ-return:y^V_t = V^old_t + A^GAE_t,把长程结果信息推到动作前的边界;
- 动作价值学 on-policy SARSA 目标:y^Q_t = r_t + γ(1-d_t) Q^old_{t+1},让动作后的边界扎根于所选响应的直接后果。
一个容易忽略但论文明确论证的设计:策略优势刻意用 GAE 构造,而不是用同时训练的 Q−V 之差。原因很实际——训练早期 Q 还没校准,若直接用 Q−V 驱动策略,动作价值的失准会立刻污染策略更新;保留 Q 目标是为了训练动作条件化的价值表征,但不让它直接掌舵。
批归一化轮级优势:分配到 token 之前,先在当前训练批的有效轮上做归一化(若环境提供无效动作指示符 m_t,先减惩罚项 c_inv·m_t):
$$\hat{A}_t = \frac{A^{GAE}_t - c_{inv}m_t - \mu_B}{\sigma_B + \epsilon_{adv}}$$归一化之后才把 Â_t 广播给 a_t 中的全部有效 token。顺序很重要:先归一化再广播,防止长响应在优势统计中占据不当权重——好比不同科目成绩先各自标准化再算总分,避免“话多的回合”垄断评价体系。与 GRPO 的组归一化相比,这里比较的是独立轮次与任务之间的学习信号,因此完全不需要对同一提示做多条同步 rollout。
4.5 联合优化:一次反向,三路监督
token 级策略目标沿用 PPO 裁剪形式,轮内每个有效 token 共享 Â_t,重要性比 ρ_{t,j} = exp(ℓ_{t,j}(θ) − ℓ^old_{t,j}) 建立在剔除价值基的动作分布上。
价值目标在归一化概率空间(除以 R_max 后落在 [−1,1])做 PPO 式裁剪回归:
$$p^{X,clip}_t = p^{X,old}_t + \text{clip}(p^X_t - p^{X,old}_t, -\epsilon_X, \epsilon_X), \quad L^X = \tfrac{1}{2}\mathbb{E}_t\big[\max((p^X_t - \bar{y}^X_t)^2, (p^{X,clip}_t - \bar{y}^X_t)^2)\big]$$X ∈ {V, Q}。注意两处细节:裁剪防止价值单步跳变过大(与 PPO 信任域思想同源);两个损失按有效轮平均而非按 token 平均——每个环境决策权重相等,与响应长度无关,和优势那边的“先归一化后广播”互为呼应。
统一目标把所有项拧在一起:
$$L^{SAPO} = L^{pol} + c_V L^V + c_Q L^Q + \beta L^{KL} - c_H H(\pi_θ)$$策略、V、Q 三项使用各自的掩码,但一次反向传播更新同一个 transformer 和语言模型头。c_V、c_Q 控制生成学习与价值学习之间的干扰,KL 项与熵项分别约束策略漂移与鼓励探索——没有角色专属参数,却有角色专属监督。
算法全流程(Algorithm 1):每轮迭代先 θ_old ← θ,每任务单 rollout 采样;用旧 actor 一次性评估出 token 对数概率、V_old、Q_old;倒序遍历算 GAE 与两个价值目标;轮级优势批归一化后广播到 token;一次联合前向得到当前策略、V、Q;最小化统一目标完成更新。实现上还有一条护栏:轨迹标识符与轮索引保留到目标计算完成之后,确保 batching、复制或 shuffle 不会破坏时间相邻关系——工程细节虽小,却是单流训练中价值语义正确性的保障。
4.6 三方对照一张表
| 维度 | PPO | GRPO | SAPO |
|---|---|---|---|
| 每任务 rollout 数 | 1 | N(一组) | 1 |
| 独立 critic | 需要(策略规模) | 无 | 无(共享主干) |
| 价值泛化 | 有 | 无 | 有 |
| 时序信用分配 | token/轮级 | 无(轨迹级摊平) | 轮级 GAE |
| 优势坍缩风险 | 低 | 高(组内同奖励时) | 低(可学习基线) |
| 同步屏障 | 无 | 等组内最慢轨迹 | 无 |
| 显存 | 策略+critic+参考+rollout | 策略+参考+rollout | 策略+参考+rollout |
五、实验结果
5.1 实验设置
- 基准:ALFWorld(具身家务文本环境,3827 个任务、六大类:Pick/Look/Clean/Heat/Cool/Pick2)与 WebShop(交互式网购环境,约 110 万商品、1.2 万条用户指令)。
- 底座:Qwen2.5-1.5B-Instruct 与 Qwen2.5-7B-Instruct;学习率 1e-6,KL 系数 0.01;最大交互轮数 ALFWorld 50 / WebShop 15;共训练 150 步;硬件 4 张 H200 + 8 张 A40;每组数字为 3 个随机种子的均值±标准差。
- 基线:闭源模型 GPT-4o、Gemini-2.5-Pro;免训练提示方法 ReAct、Reflexion;RL 方法 PPO、RLOO、GRPO、EMPG、GiGPO。多数基线数字引自 Feng 等(GiGPO 论文),超参沿用同一框架——同门对比,公平性有保障。
5.2 主结果:两种规模、两个环境全面领先
Qwen2.5-1.5B(ALFWorld 总成功率 / WebShop 得分 / WebShop 成功率):
| 方法 | ALFWorld All | WebShop Score | WebShop Succ. |
|---|---|---|---|
| ReAct | 12.8 | 40.1 | 11.3 |
| Reflexion | 21.8 | 55.8 | 21.9 |
| RLOO | 69.7±2.5 | 73.9±5.6 | 52.1±6.7 |
| EMPG | 73.7 | 80.4 | 60.8 |
| GiGPO(w/ std) | 86.7±1.7 | 83.1±1.6 | 65.0±3.2 |
| GiGPO(w/o std) | 86.1±4.7 | 83.5±1.8 | 67.4±4.5 |
| PPO(带 critic) | 54.4±3.1 | 73.8±3.0 | 51.5±2.9 |
| GRPO | 72.8±3.6 | 75.8±3.5 | 56.8±3.8 |
| SAPO | 90.1±2.3 | 82.2±1.4 | 63.7±1.6 |
Qwen2.5-7B:
| 方法 | ALFWorld All | WebShop Score | WebShop Succ. |
|---|---|---|---|
| RLOO | 75.5±4.6 | 80.3±3.2 | 65.7±4.0 |
| EMPG | 78.5 | 81.0 | 69.3 |
| GiGPO(w/ std) | 90.8±1.3 | 84.4±2.9 | 72.8±3.2 |
| GiGPO(w/o std) | 90.2±2.3 | 86.2±2.6 | 75.2±3.8 |
| PPO(带 critic) | 80.4±2.7 | 81.4±3.1 | 68.7±5.1 |
| GRPO | 77.6±5.2 | 79.3±2.8 | 66.1±3.7 |
| SAPO | 94.0±1.7 | 88.6±1.8 | 82.4±2.0 |
几个关键读数:
- 对两大直接基线的平均优势:跨基准、跨规模平均,SAPO 较 PPO 提升 +15.1 个百分点,较 GRPO 提升 +12.1 个百分点。最戏剧性的是 1.5B ALFWorld:54.4 → 90.1(较 PPO +35.7pp)、72.8 → 90.1(较 GRPO +17.3pp),其中 Clean、Heat 两类达到 100.0% 满分;WebShop 得分 73.8 → 82.2(+8.4),成功率 51.5 → 63.7(+12.2pp)。
- 对最强基线 GiGPO:1.5B ALFWorld 上 SAPO 90.1% 高出 GiGPO 最优的 86.7% 3.4 个百分点;7B ALFWorld 上 94.0% 对 90.8%,领先 3.2 个百分点,WebShop 三项聚合指标全部第一。
- 对闭源模型与提示方法的碾压:GPT-4o 在 ALFWorld 总成功率仅 48.0(WebShop 得分 31.8/成功率 23.7),Gemini-2.5-Pro 为 60.3/42.5/35.9——1.5B 的 SAPO 全面超过这两个闭源旗舰,7B 优势进一步拉大。这再次说明:小模型 + 任务级 RL 后训练,在长程交互任务上依然能打败大模型提示工程。
- 诚实的一笔:SAPO 并非每个子类都最优(如 7B 的 Cool 类 79.7 低于 GiGPO w/o std 的 86.5;1.5B WebShop 得分 82.2 也略低于 GiGPO 的 83.1–83.5),但三项聚合指标在两个规模上全部第一或并列领先——论文自己也明说了这一点。
值得强调的是,这一切是在每任务单条 rollout、稀疏结果奖励、无独立 critic 的条件下做到的。论文由此推断:自回归结构与 actor-critic 的架构级对齐,还能降低对任务专属稠密奖励工程的依赖。
5.3 运行时:结构性的省,而不是抠出来的省
图 2 给出 ALFWorld + 1.5B 上逐模块的单迭代耗时对比(PPO → SAPO):
| 模块 | PPO | SAPO |
|---|---|---|
| 轨迹生成 | 306.4 s | 221.4 s |
| 旧策略对数概率 | 14.3 s | 14.2 s |
| 参考模型评估 | 13.3 s | 12.3 s |
| 价值推理 + critic 更新 | 61.4 s | 0(模块不存在) |
| actor 更新 | 54.2 s | 52.6 s |
| 合计 | 451.2 s | 301.4 s(−33.2%) |
两个观察:最大的结构性节省来自彻底消除价值推理与 critic 优化这两个模块(61.4 s 归零);actor 侧开销几乎不变(14.3/14.2、13.3/12.3、54.2/52.6)——把价值估计并入共享自回归模型几乎没有引入额外 actor 侧成本,这正面验证了“单流求值”的设计承诺。生成阶段 306.4 → 221.4 s 的下降贡献了最大的绝对节省。同时,policy 级 critic 的显存开销被整体消除。
5.4 关于消融与稳定性
论文实验部分列了四个研究问题(性能对比、组件敏感性、资源开销、长时程连续训练稳定性),本版正文详细呈现了性能(Q1)与运行时(Q3),并报告 SAPO 训练稳定(结论部分亦确认);组件级消融数值与长时程稳定性曲线在本版正文中未展开,留给后续版本与附录——精读时建议保持关注。
六、必要知识反推
要真正读懂这篇论文(而不只是看懂结论),需要预先掌握哪些知识?按依赖顺序反推如下,每一条都附上“论文为什么需要它”。
- 自回归语言模型与因果掩码:LLM 逐 token 生成,每个位置只能看到之前的内容。为什么需要:SAPO 的全部合法性建立在这上面——V 与 Q 的条件差异恰好由因果掩码免费保证,无需手工隔离上下文。这是本文最底层的杠杆。
- MDP 与状态/动作价值的定义:V(s) 是状态期望回报,Q(s,a) 是“状态+动作”期望回报。为什么需要:两者的条件信息量之差正是“动作”,论文把这个抽象定义落到生成序列的两个物理位置上。
- TD 误差、λ-return 与 GAE:δ_t 是单步时间差分残差,λ-return 在单步 TD 与完整蒙特卡洛回报之间插值,GAE 把 δ 沿轨迹指数加权累积。为什么需要:单 rollout 下没有组统计可用,GAE 是把终局奖励拆分给各轮的唯一工具,λ 直接控制信用分配的“锐度”。
- SARSA(on-policy 动作价值学习):用“实际执行的下一动作”的价值做 bootstrap 目标。为什么需要:Q 读数的目标 y^Q_t = r_t + γQ_old_{t+1} 就是标准 SARSA 形式,保持 on-policy 一致性。
- PPO 的裁剪机制:限制新旧策略比值 ρ 的更新步长以防崩坏。为什么需要:SAPO 不仅策略损失照抄裁剪,还把裁剪思想移植到价值回归(clip 住价值单步变化幅度)——一个机制两处复用。
- GRPO 组归一化:组内奖励标准化当优势。为什么需要:这是论文的靶子,理解它的坍缩机制(组内奖励相同 → 优势为零 → 零梯度)才能理解 SAPO 每个设计在替谁挡枪。
- 批归一化的统计语义:用批统计量做尺度归一。为什么需要:SAPO 把它用在“轮级优势”上,替代组归一化——同样是归一化,统计对象从“同一提示的 N 条轨迹”换成“当前批的独立轮次”,同步屏障随之消失。
- softmax 约束与词表操作:从 softmax 中剔除指定类别并重新归一化。为什么需要:w⁺/w⁻ 的“只读”属性完全由这一步保证,是表示层与策略层互不污染的防火墙。
一个有趣的验证:这八条里没有一条是本文新发明的——SAPO 的全部创新在于重新组合,把经典 actor-critic 的每个部件都安放到自回归结构里对应的位置上。这也是它初读简单、细读越读越妙的原因。
七、论文中可以提取的通用性灵感
即便不做 agentic RL,这篇论文也有若干可迁移的设计智慧。
- 让监督信号的因果需求与生成顺序对齐,而不是新增模块。SAPO 没有发明任何新网络结构,只是发现“V 在动作前、Q 在动作后”的因果边界与自回归解码天然同构,于是三个角色共用一次前向。通用启示:想复用一个大模型的计算时,先画出各任务所需信息的时间线,再检查生成过程本身是否已经提供了那些检查点——常常答案已经在那儿了。
- 差分读数:用两个类别的 logit 之差输出标量。(z_w⁺ − z_w⁻)/τ 再裁剪,得到有界、平移不变的连续值。这个技巧适用于一切“从分类头偷一个回归信号”的场景——差值消共模噪声,裁剪给学习范围上保险,而“征用两个词元”意味着零新增参数。
- 归一化要在天然决策粒度上做,再向下广播。轮级归一化后才广播到 token,价值损失按轮平均而非按 token 平均——两处细节共同防止“长响应垄断统计”。任何涉及层级结构(文档→句子、对话→轮次、轨迹→帧)的学习任务都该问一句:我的归一化粒度和决策粒度一致吗?
- 训练一个量,但别让它过早掌舵。Q 值被 SARSA 目标认真训练,策略优势却只用 GAE——防止早期失准的 Q 污染策略。这是“辅助任务塑造表征、主目标保持稳健”的教科书式操作,可推广到一切多任务联合训练:辅助头可以学,梯度出口要设闸。
- 用可学习基线替代跨样本统计,解锁单样本训练。GRPO 的基线来自同提示多 rollout,SAPO 的基线来自可泛化的 V(s)。前者要同步采样,后者随叫随到——这不仅是省算力,更让训练流程天然适配异步、流式、在线场景。任何依赖“凑一批可比样本”的方法都值得思考这个替代。
- 预留词元作为协议位。词表里保留永不参与采样的专用条目,充当模型对外暴露的“只读寄存器”。这为多角色 LLM 提供了一个极轻量的接口范式:比外挂头干净(无新参数、无新初始化),比提示词可靠(不受采样污染)。
- 诚实的收益归因。论文明确写出“SAPO 的精确收益是删除 critic 路径,而非价值估计零成本”,并在运行时表中逐模块核对 actor 侧开销不变。这种把省下的每一秒归因到结构、而非语焉不详地说“更高效”的写法,值得所有系统类论文学习。
八、总结
SAPO 用一个看似简单的观察撬动了 agentic RL 的一个两难困局:actor-critic 需要的条件关系,本来就是自回归生成的因果结构。V 在动作前的边界读出,Q 在动作后的边界读出,两个保留词元的 logit 差给出有界标量,动作 softmax 剔除价值基以防污染;单 rollout 上用轨迹级 GAE + 批归一化轮级优势替代组统计;统一目标一次反向更新同一个主干。结果是难得的“既要又要也要”:1.5B/7B 两个规模上平均超 PPO +15.1pp、超 GRPO +12.1pp,最强基线 GiGPO 也被甩开 3 个百分点以上,同时单迭代运行时降 33.2%、policy 级 critic 显存归零。
局限也应看清:论文尚为预印本,组件消融与长时程稳定性曲线待补;R_max 需要预知回报范围;两个基准均为文本环境,向真实工具调用、浏览器等更嘈杂环境的推广有待验证;策略与价值共用主干的理论干扰边界目前靠 c_V/c_Q 经验性调控。但这些都不动摇它的核心论点——显式价值学习不必以复制模型或昂贵采样为代价。对每一个想在大模型后训练里“既要效果又要效率”的团队来说,SAPO 指出的这条路,值得认真走一遍。