信用分配三层楼:一个 0/1 的功劳记到哪一步
一条多步轨迹只值一个 0/1:纯 REINFORCE 里失败尝试(R=0)整条零梯度、不产生任何更新,成功轨迹里混着的错误动作反而跟着沾光(L11 p.5-6)。本篇沿贯穿案例(coding agent 修 retry_count 的 bug,R(τ)=1 当且仅当 4 条测试全过,p.3-4)爬三层楼:组内比较让失败轨迹开口——同任务采 4 条奖励 1,0,0,0,基线取组均值 0.25,更新权重 +0.75 与 −0.25×3(p.8),但组权重对整条轨迹所有 turn 相同(p.9);reward-to-go 与 critic 把预期细化到每个历史——R3=0+0+1=1、V^μ(h3)≈0.3,平方损失 MSE 0.30 对 0.21 的条件均值账(p.10-14,MIXER,Ranzato et al. ICLR 2016 §3.2.1),TD 误差 δ=+0.3/−0.2/−0.4 经 GAE 以 λ=0.5 指数加权摊到步得 Â=0.1(p.15-16,Schulman et al. ICLR 2016;γ=1 约定见 p.58);过程奖励模型干脆把打分本身改成步级——解 5x=6x−14 得 x=14,「x=7」一步被人工标错,PRM800K 80 万步级标签、PRM 一致优于 ORM(p.17,Lightman et al. 2023),PRIME 免显式标注训隐式 PRM、生成式 PRM 先思考再打分(2025)。收束在 p.55:有用反馈 = 组比较 / critic / 过程奖励。
修 bug 的 coding agent 跑完一条五步轨迹,到手的反馈只有末尾一个 0/1:四条单元测试全过,或者没全过。奖励不会说哪一步立了功、哪一步闯了祸,梯度公式只会把这个标量平摊给轨迹上每个动作。
这枚 0/1 该记到谁头上,就是信用分配(credit assignment)要回答的问题。L11 在 p.3-17 用三层楼作答:一层组内比较让失败轨迹开口,二层 critic 与 GAE 把预期和信用细化到步,三层过程奖励模型干脆把打分本身改成步级。
一、病灶:一个标量平摊给整条轨迹
先看贯穿案例的形状,出自 L11 p.3-4。任务是修一个函数的 bug:
def retry_count(config):
return config.get("retries") or 3
规格四条:缺 retries 键 → 3;值为 None → 3;值为 0 → 0;值为 2 → 2。
陷阱在 Python 的 falsy 语义:or 3 连显式配置 0 次也吞成 3,于是四条里恰有一条不通过。
一次尝试就是一条轨迹 τ = Inspect → Edit → Test → Revise → Test again。中间步奖励全为 0,R (τ)=1 当且仅当 4 条测试全过。
把它喂给上一讲「从零推 REINFORCE」推过的那条损失(L11 p.5-6):
R (τ)=0 时整条轨迹梯度为零。失败的尝试不教任何东西,哪怕其中的 Revise 一步改得完全正确。
反过来 R (τ)=1 时,五个动作同享一个正权重,哪怕其中某一步是 mistake。
失败不说话,成功好坏不分。
二、第一层:组内比较 —— 失败轨迹开口,粒度仍是轨迹
第一层不动公式结构,只换权重来源。L11 p.8 的例子:同一任务采 4 条轨迹,奖励 1,0,0,0,基线取组均值 0.25,更新权重变成 +0.75 与 −0.25×3。
失败轨迹第一次产生信号,含义是比同题的平均水平差,整条往下压。这级台阶就是上一讲「GRPO 家谱」里的组均值,L11 把它放回信用分配的语境:基线负责回答预期多少,组内比较是最省钱的预期。
但粒度没变(L11 p.9):组权重对整条轨迹所有 turn 相同。成功轨迹里 a1 是 mistake,照样乘着 +0.75 一起上调;失败轨迹里 a3 是 helpful,照样乘着 −0.25 一起下压。层一解决的是失败不说话;好坏不分,留给楼上。
把组从 4 条扩到几十条、把基线估得再准,权重也还是每条轨迹一个标量,轨迹内部谁该背锅,组比较天生看不见。要细化粒度,得上二楼。
跨讲分工在这里划清。上一讲问基线减什么:组均值怎么取、Dr.GRPO 为什么去掉 σ_R 与长度偏置;本篇问信号细到哪一层:从轨迹级下探到步级,再到过程级。
三、第二层:critic 与 GAE—— 预期按历史细化,信用按步摊派
第二层动的是预期:组均值是每任务一个数,这里要细化到每个历史一个数,两件工具都出自 L11 p.10-14。
先是 reward-to-go(后续回报)。轨迹 A 只有末端奖励 r6=1,从 h3 往后看,R3 = 0+0+1 = 1,见 p.10-11。比当前动作更早的奖励与它无关,剔掉是纯降方差,上一讲已经预告过这一步。
再是 critic,也就是 value function。换一条轨迹 B,从它的 h3 出发用当前策略 μ 续采 10 次、3 次成功,那么 V^μ(h3) = E_μ[R3|h3] ≈ 0.3(p.12)。
组均值看的是同任务的平均表现,critic 看的是这个历史之后的期望回报。同一个任务里,走到不同 h_t 的轨迹各有各的预期。
critic 自己也要训练,目标是最小化平方误差 L_V (φ) = E_t [(V_φ(h_t) − R_t)²](p.13,出处 MIXER,Ranzato et al. ICLR 2016 §3.2.1)。
这笔账值得亲手算一遍。h3 处 10 次续采的目标是三个 1、七个 0;若 V_φ(h3)=0.6,MSE = [3×(0.6−1)² + 7×(0.6−0)²]/10 = 0.30;把预测挪到均值 0.3,误差降为 0.21。平方损失的最优解就是条件均值。
critic 学的是走到这里,通常还能拿几分。
单独一个网络,value loss 训练整个网络 —— 例:InstructGPT 附录 C.4。表达力足,但要养第二套前向。
挂在 policy body 上的线性 head,stop-gradient 断开反传、只训 head—— 例:MIXER。省一套参数,表达力受限于 head。
有了 V_φ,信用就能按步摊派。TD 误差(temporal difference error,p.15):
含义是用这一步之后的现实,减这一步之前的预期,为正即超预期。算 slides 的例子:值序列 0.3→0.6→0.4→0.0、中途奖励为 0,得 δ = +0.3 / −0.2 / −0.4。第一步超预期,后两步把虚高的预期逐步还回去。
一步 δ 只看前后两个历史,稳但短视;整段 reward-to-go 无偏但方差大。GAE(generalized advantage estimation,Schulman et al. ICLR 2016)在两者之间取指数加权(p.16;γ=1 约定见 p.58):λ=0.5 时后续误差权重逐项减半。
等价的递推是 Â_t = δ_t + λÂ_{t+1}。λ 压向 0 退化成单步 TD,λ 抬向 1 回到 reward-to-go。一个旋钮,在偏差与方差之间连续调档。
四、第三层:过程奖励 —— 把打分本身改成步级
前两层都在奖励末尾给一个 0/1 的前提下加工信号,第三层动的是奖励本身。过程奖励模型(process reward model,PRM)用人工步骤标注当 value 的代理,这是 L11 p.17 的做法。
算例是解 5x = 6x−14,正确解是 x=14。解到中途一步写下「x=7」,标注者就在这一步打错:错误被定位到步,不用等最终答案才整体判 0。
出处是 Let’s Verify Step by Step(Lightman et al. 2023,Fig.1)。作者标注了 PRM800K,80 万步级标签;实验里 PRM 一致优于只看结局的 ORM(outcome reward model)。
人工逐步标注的贵,催生 2025 年两条新枝。PRIME 免显式标注、直接训隐式 PRM,只靠结果标签即可与策略同步更新;Process Reward Models That Think(arXiv 2504.16828)把 PRM 改成生成式模型,先思考、再打分,打分器自己也学会了推理。
与本讲的连接
本篇是讲次页大纲卡里信用分配的下钻层,收束在 L11 p.55 三要点之一:有用反馈 = 组比较 /critic/ 过程奖励,三层楼各占其一。粒度从轨迹级的组权重,压到历史级的 critic 预期、步级的 δ,再到过程级的逐步打分,每下一层,奖励里的信息多榨出一截。五张资料卡按层各就各位:
- m6-gae:GAE 原典,指数加权与递推式
- m6-mixer:critic 平方损失与线性 head 挂法的出处
- m6-lets-verify:PRM800K 与 PRM 一致优于 ORM 的实证
- m6-prime、m6-prm-think:2025 年免标注与会思考两条新枝
下次打开 RL 训练日志,先问一句:失败轨迹到底有没有产生负信号?
本节论文与规范
本节资料
经典·高引(2015,ICLR 2016)。用 TD 误差的指数加权和估计优势,γ/λ 两旋钮调偏差-方差;L11 p15-16 的 δ 递推与 λ=0.5 数值例(Â=0.3+0.5(−0.2)+0.25(−0.4)=0.1)直接出自这里。λ→0 退化为单步 TD、λ→1 逼近蒙特卡洛,中间谱系一图看懂;再配 critic 网络可进一步压方差。
- Let's Verify Step by Step 论文2305.20050进阶
经典·高引(2023,ICLR 2024)。人工标注 PRM800K(80 万步级标签)证明过程监督 PRM 一致优于结果监督 ORM;L11 p17「用人工步骤标注作 value 代理」(5x=6x−14 例)的直接出处。best-of-n 重排里 PRM 选出的解更稳,负例样本中「跳步、乱推」的失败模式清晰可见。此文把过程奖励从直觉推成可评测路线,后续隐式/生成式 PRM 都以它为参照系。
经典(ICLR 2016)。L11 p13-14 两种 critic 结构的出处:线性 value head + stop-gradient 挂在 policy body 上只训 head;MSE 最优预测是均值(0.6 vs 0.3 例)也来自其 §3.2.1。正文把 seq2seq 从词级交叉熵抬到序列级指标,也是「为什么需要 critic」的早期论证。
- Process Reinforcement through Implicit Rewards(PRIME) 论文2502.01456前沿
2025 前沿。免显式步级标注训练隐式 PRM,把 PRM 变成只靠结果标签即可在线更新的奖励模型(与策略同步更新),省去显式过程标注;开源 PRIME-RL,把过程奖励真正接进在线 RL 训练循环。隐式 PRM 只靠结果标签即可冷启动,token 级细粒度打分随训练在线更新。与 Let's Verify 对照读:一个花钱标数据,一个让奖励自己长出来。
- Process Reward Models That Think 论文2504.16828前沿
2025 前沿(v5 2025-12)。把 PRM 从标量打分器改成「先思考再打分」的生成式模型,步级监督成本大降、判别力反升;与 PRIME 一显一隐构成 PRM 两条路线对照。打分前先生成一段评估推理,相当于把 test-time scaling 用在奖励侧。同预算下判别准确率反超判别式打分器,是「奖励模型也该会思考」的代表作。
AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。
本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。