Generative PRM
RL · LLM Reasoning · arXiv 2025

Generative PRM:不要求裁判会做题,只要求它读懂学生的思考

只用最终答案对错的 RLVR,把一条长思维链里所有 token 都按同一个信号更新——错的步和反思后改对的步,待遇完全一样。 这篇论文让一个 GenPRM 去读推理轨迹,但只读其中的内在信号:反思点、错误源头、与答案匹配的步,再把连续同类步合并成「思想」,只在该段末尾发一次奖励。 做法装进 TP-GRPO,配一条采样本与评估错开的 off-policy 流水线。代价是首阶段评估不稳定、错误解里的部分正确步仍会被连带惩罚。

Tao He, Rongchuan Mu, Lizi Liao, Yixin Cao, Ming Liu, Bing Qin · HIT / SMU / Fudan arXiv 2507.23317 ↗ 代码 ↗
TL;DR · 30 秒抓住核心

问题不是「缺过程奖励」,而是「过程奖励不敢用」。 判别式 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 思想归零。

50.10
1.5B 五基准平均
140 步(700 题)
36.43
Effic. 训练效率
GRPO 复现仅 4.65
+6.67
7B · AIME 24 提升
仅用 1070 题
01

结果奖励把一整条思考压成一个数,好东西全丢了

先建立这个认识:在 outcome-only 的 RLVR 里,一条推理轨迹里所有 token 的 advantage 完全相同——无论它在正确段还是错误段。

DeepSeek-R1 系列把 RLVR 推到主流:对一个数学题采样 G 条解,用规则判 \boxed{} 里的答案对不对,组内归一化后把同一个 r̂_o 分给整条解的每一个 token(论文 Eq. 2 后的说明)。

r̂o = ( ro − mean(r1..G) ) / std(r1..G),   ∀t:Ai,t = r̂o
Eq. 2 与紧随其后的 advantage 赋值(§2.1):只有结果的、步级信息在归一化里被抹平

这带来两个结构性浪费。其一是错误解被整条惩罚:一条解里也许有几步是有价值的探索,只是没走到最后,但它们和真正导致错误的步一起被降权。其二是正确解里的错误分支没有区分:学生先走错、反思后改回来,同样拿到满额 advantage,「走错」这件事从未被单独抑制。

核心诉求

过程奖励要有用,并且要「安全」

论文在引言里给出三条判据(§1):
1)评估单元要合适——太细,PRM 负担重、易出错;太粗,正确步和错误步又被捆在一起;
2)评估能力要与推理能力解耦——现有 GenPRM 常用 thinking 模式判步,隐含假设「裁判会解这道题」;
3)探索与利用要平衡——过度强调过程奖励会压掉模型的试错、反思与自我修正。

02

判别式 PRM 要标注,生成式 PRM 要会解题

两代 PRM 各自卡在自己的门槛上;论文要的是不碰这两个门槛的第三种玩法。

判别式 PRM

学一个打分器

以 PRM800K 为代表的人工步级标注,或用 MCTS、自训练自动标注,监督学习一个「这步对不对」的判别器(§1、§5.1)。

卡点:R1 之后的共识是——步切分困难、泛化有限、易被 reward hacking、训练低效。论文甚至说 PRM 的热度因此一度下降。

生成式 PRM

让 LLM 写评审

把评估当成生成任务:LLM 以 thinking 模式逐步分析正确性,取「correct / yes」等指示 token 的似然作分数。

卡点:thinking 模式判步等价于让裁判先解一遍题。题目越难,裁判越不可靠——「想教好学生,先要一个更强的老师」。

还有一路是把 PRM 塞进训练的早期工作,比如 Rest-MCTS* 用 PRM 给轨迹排序、OpenR 用 PRM 引导策略迭代(§5.2),但都受限于判别式范式或只把步级信号聚合成结果奖励。论文的判断是:瓶颈不在「要不要过程奖励」,而在「裁判能不能低成本、不错位地读过程」。

03

把裁判的工作从「再解一遍」换成「读学生的卷面」

这一段是全篇的机关:内在信号怎么找、思想怎么合并、奖励怎么发,以及为什么这样发不会把优化目标带偏。

Stage 1:内在信号驱动的步级评估

先把长 CoT 切成步。然后按解答对错分流(§3.1.1):

为什么这就降低了门槛

任务从「验证对错」变成「定位与对齐」

裁判不需要算出正确答案,只需要读懂一份卷子:反思词在哪、哪几步被结论引用。作者把所有 prompt 放在附录 D。代价是不再追求每步的精确对错——这正是 §3.1.4 坦承的局限。

Stage 2:把同类步合并成「思想」

把连续同类步并成一个单元(§3.1.2):正确解并成交替的 correct / incorrect thought,错误解并成交替的 matched / unmatched thought。一个思想只在该段最后一个 token 收一次奖励。论文列了四条好处:分段更清楚;单次评估噪声不再叠加;重复刷同类正面步拿不到额外奖励(最常见的 reward hacking 因此失效);给出交替结构,方便后面的 advantage 推导。

Stage 3:随能力自适应的奖励

rcorrect = α · acc_mean      rincorrect = r̂o
Eq. 5 / Eq. 6 · acc_mean 是 GRPO 同组 G 条解的通过率;α 默认取 1(Table 7)。全错 → r_correct=0 退化为 outcome-only;全对 → 最强过程奖励 α
符号核对

原文 Eq. 6/7 与附录 A 的符号互相矛盾

§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。

Proposition 1 · 正确解

正确思想的 advantage 原封不动

思想奖励是交替的 [+r_c, −r_c, …, r̂_o],对正确思想求后缀和,正负项相互抵消,剩下 A = r̂_o;错误思想的项多出一个 −r_c 无法抵消,所以 A = r̂_o − r_c。也就是说:过程奖励只压低错误分支,不扰动正确分支原有的目标。

Proposition 2 · 错误解

matched 与 unmatched 分开了

matched 思想的后缀和同样收敛到 r̂_o,unmatched 思想则是 0。原先被整条惩罚的探索性步骤被停止惩罚,而不是加分——避免误伤可能有用但尚未走完的思考。

亲手验证:拖滑块,看 advantage 怎么算出来

下面模拟一条 7 个「思想」的轨迹,每段只在自己的末尾 token 发一次奖励。拖动滑块改变 r̂_o、acc_mean 与 α,点任一思想,下方按 A_{i,t} = Σ_{t'≥t} r 逐项求和——数字与 Proposition 1/2 的结论应当完全对上。

逐 token 累加
点上面任一思想,看它的 advantage 是怎么从后面所有段落的奖励叠加出来的。
模拟里简化了什么?与原文公式的差异

模拟把「思想」当成一个整体 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。

04

裁判要读很多遍,所以让采样、评估、更新叠在一起做

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 字符跳过,被长度截断解的也跳过。

代价

off-policy 本身是亏的,但过程奖励能把这笔亏吃回来

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。

05

一条解从采样到被加权,要过四道关

把 §3.1–3.2 的条文摊成流水线:切步 → 找信号 → 合并思想 → 发奖励累加。

策略 πθ 采样 G 条解 Stage 1 · 全 GPU 一次采够 S×M×G 条解 长 CoT 切成步 s1 s2 s3 s4 s5 正确解:反思步 + 错误源头 错误解:think ↔ answer 匹配 同类步合并成思想 thought 1 2 thought 3 4 每段只在末尾收一次奖励 重复同类步不再加分 每段末尾 token 的奖励 +r_correct −r_correct +r_correct −r_correct r̂_o(末段仅结果) 无奖励 token · · · 段内 token 奖励为 0 · · · advantage = 从该 token 起往后累加 A = r̂_o A = r̂_o − r_c A = r̂_o A = r̂_o − r_c A = r̂_o 错误解时:matched 段 A = r̂_o,unmatched 段 A = 0 颜色:绿 = 正确 / matched,陶土红 = 错误,紫 = 错误解中 matched 之例 Figure 1 / §3.2(自绘重排,非原图)
图 1(自绘):基于 Eq. 7 与 Proposition 1/2 的奖励分配与 advantage 累加。绿色为正确思想,陶土红为错误思想,紫色为一个错误解中的 matched 思想示意。

这条流水线的关键在奖励只在边界发、advantage 跨段累加——正是这种交替结构让正确段的后缀和恰好收敛到 r̂_o,也正是不发奖励的段内 token 只继承了后方累加值,避免了按步平均带来的目标漂移。

06

少样本的收益是确定的,绝对 SOTA 不是

论文的主论点是「同预算下更高效」,而非「绝对值最强」;读表要把这两件事分开。

1.5B(DeepSeek-R1-Distill-Qwen-1.5B,表 1,Avg@16)

模型AIME24AIME25AMC23MATH-500OlympiadAvg
Base Model28.8022.5062.9082.8043.3048.06
GRPO Replication(850 步)32.7124.5864.5382.7043.6749.64
TP-GRPO(140 步)33.1225.6364.0183.8143.9150.10

TP-GRPO 用 700 题超过只用结果奖励、训了 4250 题(850 步×5)的 GRPO 复现,平均 +2.04。开源对照里 DeepScaler-1.5B-Preview 平均 56.78,仍明显更高——差距来自训练数据规模,论文自己也这么说。

7B(表 2,AIME / AMC 用 Avg@5,其余 Pass@1)

模型AIME24AIME25AMC23MATH-500OlympiadAvg
Base Model54.0036.6781.2092.0055.1163.80
GRPO Replication(400 步)58.6738.0081.2092.4056.4465.34
Skywork-OR1-7B69.3351.3387.7193.4061.3372.62
TP-GRPO(214 步)60.6743.3383.1392.0057.0467.23

7B 平均 +3.43,AIME 24 / 25 分别 +6.67、+6.66。对照的 GRPO 复现 400 步,TP-GRPO 只用 214 步。

Effic.:把「训练了多少条解」放进分母

Effic. = Improvement / (#training solutions) × 105
§4.1 · 表 3 里 TP-GRPO 为 36.43(1.5B)与 40.07(7B),GRPO 复现为 4.65 与 9.6
Outcome-only GRPO TP-GRPO 开源强基线

两个值得注意的发现: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。

07

它是「更省数据的加速器」,不是「更强的推理器」

论文自己在 §3.1.4、§4.2.1 与结论里划了线,这里按原文摊开。

边界一

首阶段评估不稳定

§3.1.4 第一条就承认:Step-level 评估是多步流程,没有任务特训的 GenPRM 在这一阶段明显不稳定。作者把改进 prompt 与微调 GenPRM 列为未来工作。

边界二

Primary thought 里部分正确的步被牵连

对于错误的解,论文不逐步核验对错,而是「把被认为要对最终错误负责的 primary thought 里所有 token 一起惩罚」;后果是惩罚被错误归因到这段 primary thought 中本身部分正确的推理步——并非所有步都错。原文称之为两种极端之间的「务实妥协」。

边界三

没有做 RL scaling

结论明确说:实验没有展示 TP-GRPO 在扩大训练规模后的 scaling 行为;过度强调过程奖励可能让模型提前过拟合、损害泛化。

边界四

绝对性能仍落后

§4.2.1 承认落后于 SOTA RLVR 方法,归因于训练数据规模;且实验只在两个小规模蒸馏模型(1.5B、7B)上做,作者把更大规模留给未来工作。

怎么选:在算力/数据预算紧、又希望每条错解不被一刀切的地方,它值得试;若你的目标是「同预算下绝对最强」,先把训练规模与数据量堆上去,再回来看过程奖励是否还剩下优势。