只用最终答案对错的 RLVR,把一条长思维链里所有 token 都按同一个信号更新——错的步和反思后改对的步,待遇完全一样。 这篇论文让一个 GenPRM 去读推理轨迹,但只读其中的内在信号:反思点、错误源头、与答案匹配的步,再把连续同类步合并成「思想」,只在该段末尾发一次奖励。 做法装进 TP-GRPO,配一条采样本与评估错开的 off-policy 流水线。代价是首阶段评估不稳定、错误解里的部分正确步仍会被连带惩罚。
问题不是「缺过程奖励」,而是「过程奖励不敢用」。 判别式 PRM 要海量步级标注,生成式 PRM 又要裁判自己会解原题——埋下一道「想教学生、先得比学生强」的死结。
论文把裁判的任务从推理降级成理解:正确的解,只找「wait / I made a mistake」这类反思点及其错误源头;错误的解,只判断 think 里哪几步被答案采纳(matched)。再把连续的同类步合并成 thought,整段只在末尾发一次奖励,重复刷同类正面步拿不到额外分,reward hacking 的常见路子被堵住。
奖励大小随能力自适应:r_correct = α · acc_mean,同一组 rollout 全错时奖励归零、退化成原始 GRPO,全对时给满 α。论文还证明了:正确思想与 matched 思想的 advantage 恰好保持为 r̂_o,过程奖励不改变原本的优化目标;错误思想的 A 比 r̂_o 低一截 r_correct,unmatched 思想归零。
先建立这个认识:在 outcome-only 的 RLVR 里,一条推理轨迹里所有 token 的 advantage 完全相同——无论它在正确段还是错误段。
DeepSeek-R1 系列把 RLVR 推到主流:对一个数学题采样 G 条解,用规则判 \boxed{} 里的答案对不对,组内归一化后把同一个 r̂_o 分给整条解的每一个 token(论文 Eq. 2 后的说明)。
这带来两个结构性浪费。其一是错误解被整条惩罚:一条解里也许有几步是有价值的探索,只是没走到最后,但它们和真正导致错误的步一起被降权。其二是正确解里的错误分支没有区分:学生先走错、反思后改回来,同样拿到满额 advantage,「走错」这件事从未被单独抑制。
论文在引言里给出三条判据(§1):
1)评估单元要合适——太细,PRM 负担重、易出错;太粗,正确步和错误步又被捆在一起;
2)评估能力要与推理能力解耦——现有 GenPRM 常用 thinking 模式判步,隐含假设「裁判会解这道题」;
3)探索与利用要平衡——过度强调过程奖励会压掉模型的试错、反思与自我修正。
两代 PRM 各自卡在自己的门槛上;论文要的是不碰这两个门槛的第三种玩法。
以 PRM800K 为代表的人工步级标注,或用 MCTS、自训练自动标注,监督学习一个「这步对不对」的判别器(§1、§5.1)。
卡点:R1 之后的共识是——步切分困难、泛化有限、易被 reward hacking、训练低效。论文甚至说 PRM 的热度因此一度下降。
把评估当成生成任务:LLM 以 thinking 模式逐步分析正确性,取「correct / yes」等指示 token 的似然作分数。
卡点:thinking 模式判步等价于让裁判先解一遍题。题目越难,裁判越不可靠——「想教好学生,先要一个更强的老师」。
还有一路是把 PRM 塞进训练的早期工作,比如 Rest-MCTS* 用 PRM 给轨迹排序、OpenR 用 PRM 引导策略迭代(§5.2),但都受限于判别式范式或只把步级信号聚合成结果奖励。论文的判断是:瓶颈不在「要不要过程奖励」,而在「裁判能不能低成本、不错位地读过程」。
这一段是全篇的机关:内在信号怎么找、思想怎么合并、奖励怎么发,以及为什么这样发不会把优化目标带偏。
先把长 CoT 切成步。然后按解答对错分流(§3.1.1):
裁判不需要算出正确答案,只需要读懂一份卷子:反思词在哪、哪几步被结论引用。作者把所有 prompt 放在附录 D。代价是不再追求每步的精确对错——这正是 §3.1.4 坦承的局限。
把连续同类步并成一个单元(§3.1.2):正确解并成交替的 correct / incorrect thought,错误解并成交替的 matched / unmatched thought。一个思想只在该段最后一个 token 收一次奖励。论文列了四条好处:分段更清楚;单次评估噪声不再叠加;重复刷同类正面步拿不到额外奖励(最常见的 reward hacking 因此失效);给出交替结构,方便后面的 advantage 推导。
§3.1.3 说 matched 思想被「penalized with +r_incorrect」、unmatched 拿 −r_incorrect;Eq. 7 与 Proposition 2 也是 matched +r_i^incorrect、unmatched −r_i^incorrect;但附录 A 的证明改写成「matched 得 +r̂_o、unmatched 得 −r̂_o」。原文 Eq. 6/7 与附录 A 符号不一致,本页按 Eq. 6/7(matched 为正、unmatched 为负)。
对正确解:正确思想末尾给 +r_correct,错误思想末尾给 −r_correct,这也是 Eq. 7 前那段正文的措辞(原文称错误思想被「penalized with −r_correct」)。对错误解:matched 思想末尾给 +r_incorrect(原文说这是「penalize」,但符号是正的),unmatched 思想给 −r_incorrect;最后一段不发过程奖励,因为它的末尾 token 已经拿了结果奖励。每个 token 的 advantage 是它之后所有奖励的累加 A_{i,t} = Σ_{t'≥t} r_{i,t'}(§3.2)。注意优势是累加值,不是奖励符号本身:matched 段末尾发 +r_incorrect,后面的交替正负项把后缀和抵消回 r̂_o;unmatched 段末尾发 −r_incorrect,后缀和恰好抵消为 0。
思想奖励是交替的 [+r_c, −r_c, …, r̂_o],对正确思想求后缀和,正负项相互抵消,剩下 A = r̂_o;错误思想的项多出一个 −r_c 无法抵消,所以 A = r̂_o − r_c。也就是说:过程奖励只压低错误分支,不扰动正确分支原有的目标。
matched 思想的后缀和同样收敛到 r̂_o,unmatched 思想则是 0。原先被整条惩罚的探索性步骤被停止惩罚,而不是加分——避免误伤可能有用但尚未走完的思考。
下面模拟一条 7 个「思想」的轨迹,每段只在自己的末尾 token 发一次奖励。拖动滑块改变 r̂_o、acc_mean 与 α,点任一思想,下方按 A_{i,t} = Σ_{t'≥t} r 逐项求和——数字与 Proposition 1/2 的结论应当完全对上。
模拟把「思想」当成一个整体 token 处理,省略了作者合并时出现的交错结构(自由组合可达任意交替模式);最后一段不发过程奖励、只保留 r̂o 这一条完全照搬 §3.2 与附录 A。逐段求和用普通实数演示,本文取 α=1、r̂o=1、acc_mean=0.5 时,正确思想 A = 1.00,错误思想 A = 1 − 0.5 = 0.50;错误解的 unmatched 思想 A = 0.00。
GenPRM 每次评估要多次调用;纯 on-policy 下 GPU 会大量空转。论文的解法是把一个迭代拆成三段,用同一批 GPU 轮着干。
每个迭代(§3.3,Figure 2):
实现上,采样温度 1.0、每 prompt 8 条 rollout、batch size 5、学习率 1e-6、KL 系数 β=0(Table 7 与 §4.1)。为省评估开销,评估前先用启发式规则过滤(附录 B.1):正确解但 think 少于 4096 字符直接跳过,错误解但 answer 少于 256 字符跳过,被长度截断解的也跳过。
Table 6 里 off-policy GRPO(950 步,AIME 24 30.83)不如 on-policy GRPO(850 步,32.71);但同一口径下 TP-GRPO 50 步更新间隔 140 步就拿到 33.12。把更新间隔收紧到 25 步,还能再涨到 33.54。
把 §3.1–3.2 的条文摊成流水线:切步 → 找信号 → 合并思想 → 发奖励累加。
这条流水线的关键在奖励只在边界发、advantage 跨段累加——正是这种交替结构让正确段的后缀和恰好收敛到 r̂_o,也正是不发奖励的段内 token 只继承了后方累加值,避免了按步平均带来的目标漂移。
论文的主论点是「同预算下更高效」,而非「绝对值最强」;读表要把这两件事分开。
| 模型 | AIME24 | AIME25 | AMC23 | MATH-500 | Olympiad | Avg |
|---|---|---|---|---|---|---|
| Base Model | 28.80 | 22.50 | 62.90 | 82.80 | 43.30 | 48.06 |
| GRPO Replication(850 步) | 32.71 | 24.58 | 64.53 | 82.70 | 43.67 | 49.64 |
| TP-GRPO(140 步) | 33.12 | 25.63 | 64.01 | 83.81 | 43.91 | 50.10 |
TP-GRPO 用 700 题超过只用结果奖励、训了 4250 题(850 步×5)的 GRPO 复现,平均 +2.04。开源对照里 DeepScaler-1.5B-Preview 平均 56.78,仍明显更高——差距来自训练数据规模,论文自己也这么说。
| 模型 | AIME24 | AIME25 | AMC23 | MATH-500 | Olympiad | Avg |
|---|---|---|---|---|---|---|
| Base Model | 54.00 | 36.67 | 81.20 | 92.00 | 55.11 | 63.80 |
| GRPO Replication(400 步) | 58.67 | 38.00 | 81.20 | 92.40 | 56.44 | 65.34 |
| Skywork-OR1-7B | 69.33 | 51.33 | 87.71 | 93.40 | 61.33 | 72.62 |
| TP-GRPO(214 步) | 60.67 | 43.33 | 83.13 | 92.00 | 57.04 | 67.23 |
7B 平均 +3.43,AIME 24 / 25 分别 +6.67、+6.66。对照的 GRPO 复现 400 步,TP-GRPO 只用 214 步。
两个值得注意的发现:Figure 3 里 TP-GRPO 的曲线斜率明显更陡;Table 4 的消融显示,只用正确解的奖励(w/o IS Reward,Table 4 里训了 90 步)在 AIME 24 得 32.01、AIME 25 得 22.29,只用错误解的奖励(w/o CS Reward,只训了 58 步)则是 30.00 与 25.00——两套基准上的强弱恰好相反。但两行训练步数不同(58 vs 90,完整 TP-GRPO 为 140 步),作者解释是变体过滤掉的解更多、需要的步数更少,因此这两组分数不宜当作同步数的直接横比。作者把差异归因于基础模型的能力差异:AIME 24 上基座更强(28.80 vs 22.50),从正确解里学得更多;AIME 25 更容易从错误解里获益。
Table 5:把 GenPRM 换成 GPQA Diamond 准确率只有 40.9 的 Gemma-3-12b-it(Qwen3-32B 为 65.6),1.5B 训练后平均 51.13;Qwen3-4B 为 51.33;Qwen3-32B 为 51.64。裁判推理能力差了一大截,平均分只差 0.51。
论文自己在 §3.1.4、§4.2.1 与结论里划了线,这里按原文摊开。
§3.1.4 第一条就承认:Step-level 评估是多步流程,没有任务特训的 GenPRM 在这一阶段明显不稳定。作者把改进 prompt 与微调 GenPRM 列为未来工作。
对于错误的解,论文不逐步核验对错,而是「把被认为要对最终错误负责的 primary thought 里所有 token 一起惩罚」;后果是惩罚被错误归因到这段 primary thought 中本身部分正确的推理步——并非所有步都错。原文称之为两种极端之间的「务实妥协」。
结论明确说:实验没有展示 TP-GRPO 在扩大训练规模后的 scaling 行为;过度强调过程奖励可能让模型提前过拟合、损害泛化。
§4.2.1 承认落后于 SOTA RLVR 方法,归因于训练数据规模;且实验只在两个小规模蒸馏模型(1.5B、7B)上做,作者把更大规模留给未来工作。
怎么选:在算力/数据预算紧、又希望每条错解不被一刀切的地方,它值得试;若你的目标是「同预算下绝对最强」,先把训练规模与数据量堆上去,再回来看过程奖励是否还剩下优势。