一文读懂 GenPRM:用生成推理扩展过程奖励模型测试时间计算
论文链接
代码链接
模型链接
参考文献:GenPRM: Scaling Test-Time Compute of Process Reward Models via Generative Reasoning by Zhao et al. arXiv:2504.00891
最近,过程奖励模型(PRMs)作为验证器,成为提升大语言模型(LLMs)性能的一种很有前景的方法。然而,当前的 PRMs 面临着三个关键挑战:第一,过程监督和泛化能力有限;第二,依赖标量值预测,没有充分利用大语言模型的生成能力;第三,无法扩展 PRMs 在测试时的计算量。
为了解决这些问题,本文引入了 GenPRM,这是一种生成过程奖励模型。它在对每个推理步骤进行判断之前,会通过代码验证来执行显式思维链(CoT)推理。
主要贡献
- 提出了一种生成过程奖励模型,该模型通过代码验证执行显式 CoT 推理,并利用相对进度估计(Relative Progress Estimation)来获取准确的 PRM 标签。
- 在 ProcessBench 和常见数学推理任务上的实证结果表明,GenPRM 优于先前基于分类的 PRMs。
Preliminaries
1. 马尔可夫决策过程
用 PRMs 将测试时间缩放过程表示为一个马尔可夫决策过程(MDP),由 $(𝒮,𝒜, 𝑃, 𝑟, 𝛾)$ 定义。其中,$𝒮$ 是状态空间,$𝒜$ 是动作空间,$𝑃$ 代表转移动态,$𝑟 : 𝒮 × 𝒜 → R$ 是奖励函数,$𝛾 ∈ [0, 1]$ 是折扣因子。目标是优化每个步骤的奖励(如基于搜索的方法),或者优化整个响应的奖励(如最佳 N 抽样)。
2. 监督微调
训练模型根据先前的上下文预测下一个令牌。对于数据集 $𝒟_{SFT} = {(𝑥^{(𝑖)}, 𝑦^{(𝑖)})}_{𝑖 = 1}^{𝑁}$,SFT 损失为:
其中 $𝜋_𝜃$ 表示具有参数 $𝜃$ 的模型。
3. 测试时间缩放
考虑两种测试时缩放方法:
- 多数投票:从所有解决方案中选择出现频率最高的答案。
- Best-of-N (BoN):从 $N$ 个候选解决方案中选择最佳答案。
GenPRM 的总体框架
由六个关键部分组成:
- 策略模型:生成解决方案步骤,MC 分数根据展开轨迹进行估计。
- RPE:提出的相对进度估计(RPE)可导出准确的 PRM 标签。
- 数据合成:通过带有代码验证的思维链推理,合成高质量的过程监控数据。
- 训练过程:应用共识过滤,然后进行监督微调(SFT)来训练 GenPRM。
- 验证与扩展:经过训练的 GenPRM 充当验证者或批评家,为策略模型提供增强的测试时间扩展能力。
- 性能提升:GenPRM 的性能通过测试时间缩放进一步提高。
从判别 PRM 到生成 PRM
1. 其他 PRM 方法
- 判别性 PRM:假设我们有一个 PRM 数据集 $𝒟_{Disc} = {(𝑠_t, 𝑎_t), 𝑟_t}$,其中 $𝑟_t ∈ {0, 1}$ 用于硬估计的 PRM 标签。判别性 PRM $𝑟_𝜓$ 通过交叉熵损失进行训练。
- 直接生成 PRM:使用数据集 $𝒟_{Direct - Gen} = {(𝑠_t, 𝑎_t), 𝑟_t}$,其中如果步骤正确 $𝑟_t$ 为“Yes” ,否则为“No”。直接生成 PRM 通过监督微调来训练,以预测每个步骤的“Yes”或“No”。对于步骤 $t$,我们将“Yes”令牌的概率作为预测的过程奖励 $\hat{r}_t$:
2. 生成 PRM
通过为直接生成 PRM 配备像 CoT 这样的显式推理过程来获得。设 $v_{1:t - 1}$ 表示从步骤 1 到 $t - 1$ 的基本原理,$v_t$ 表示步骤 $t$ 的基本原理。假设我们有一个数据集 $𝒟_{Gen} = {(𝑠_t, 𝑎_t, v_{1:t - 1}), (v_t, 𝑟_t)}$。GenPRM 通过对该数据集进行监督微调,学习对每个步骤进行推理和验证。生成过程奖励 $\hat{r}_t$ 可以通过以下等式获得:
3. 具有代码验证的生成 PRM
与生成 PRM 的不同之处在于,它会生成代码,通过执行代码来验证推理步骤,并根据执行结果给出判断。在步骤 $t$,生成包含 CoT 和代码的基本原理 $v_t$ 后,我们执行代码并获得反馈 $f_t$。
给定当前状态 $𝑠_t$、动作 $𝑎_t$、先前的基本原理 $v_{1:t - 1}$ 以及先前相应的执行反馈 $f_{1:t - 1}$,PRM 首先生成基本原理 $v_t$。执行并获得反馈 $f_t$ 后,我们按如下方式计算最终的生成过程奖励:
使用 GenPRM 进行测试时间缩放
1. 政策模型 TTS:GenPRM 作为验证者
为了扩展策略模型的测试时间计算量,可以从策略模型中采样多个响应,然后使用 GenPRM 作为验证器,以并行 TTS 的方式选择最终答案。
2. 政策模型 TTS:GenPRM 作为批评家
通过为 PRM 配备生成过程监督能力,GenPRM 可以自然地用作批评家模型,来优化策略模型的输出。我们可以以顺序 TTS 的方式,通过多个轮次来扩展优化过程。
3. GenPRM TTS
在评估每个解决方案步骤时,我们首先对 $N$ 个推理验证路径进行采样,然后使用多数投票,通过平均奖励来获得最终预测。
对于没有代码验证的 GenPRM,奖励计算如下:
进一步将代码验证和执行反馈纳入此推理过程:
然后,奖励可用于对策略模型的响应进行排名,或者通过阈值 0.5 转换为二进制标签,以判断步骤的正确性。
GenPRM 数据综合
该流程由三个阶段组成:
1. 解决方案生成和蒙特卡罗估计
- 使用步进强制生成解决方案:利用 MATH 数据集训练集中的 7500 个问题作为问题集,将 Qwen2.5–7B-Instruct 用作生成模型,为每个问题收集多个解决方案。具体来说,添加“Step 1:”作为生成模型完成响应的前缀。对于具有 $T$ 个推理步骤的响应,格式如下:
Step 1: {step content}
...
Step T: {step content}
为确保有足够数量的正确和不正确路径,对难题和简单题都采样多达 2048 条路径。如果在采样 2048 个响应后,仍未找到正确或不正确的路径,则丢弃相应的问题。
- 平衡 MC 估计的精度和效率:使用基于完成的抽样方法,估计每个步骤的正确概率。对于每个推理步骤 $𝑠_t$,我们使用完成模型(特别是 Qwen2.5-Math-7B-Instruct)生成 $K$ 个完成轨迹,并使用 MC 估计来计算当前步骤 $𝑎_t$ 正确的概率。公式为:
其中 $q_j$ 是第 $j$ 个响应的答案,$q^*$ 是真实答案,$1$ 是指示函数。
为平衡计算成本,基于估计的 Pass@1 $𝑀𝐶(𝑠_1)$ 使用动态的 $K$:
2. 相对进度估计
提出相对进度估计(RPE),其与 GRPO 中的相对优势估计思路相似,用于改进传统的硬标签估计。MC 分数是对当前状态 $𝑠_t$ 的经验估计。要评估当前动作 $𝑎_t$ 的质量,自然要比较下一个状态 $𝑠_{t + 1}$ 与当前状态 $𝑠_t$ 的 MC 分数,因为 $𝑠_{t + 1} = [𝑠_t, 𝑎_t]$。
对于每个响应,如果第一个错误步骤是步骤 $t'$(即 $𝑀𝐶(𝑠_{t'}) = 0$),我们将后续步骤的 MC 分数设置为 0。我们为步骤 $t$ 定义的 RPE $𝑃_t$ 如下:
其中 $𝑀𝐶(𝑠_1)$ 是在解生成阶段计算的估计 Pass@1。通过引入阈值 $𝜖$ 来估计最终的奖励标签 $\hat{r}_t$:
3. 理由生成、验证和过滤
使用 QwQ-32B 作为基本原理生成模型,并引入一个三步流程,自动生成和验证每个推理步骤的基本原理。
给定一个问题 $x$、真实答案 $q^*$ 和候选步骤 ${𝑎_1, · · ·, 𝑎_T}$,生成和验证过程如下:
- 基于代码的基本原理生成:提示基本原理生成模型将 CoT 包围在
<analyze>
和</analyze>
中,将代码包围在<verify>
和</verify>
中。使用以下提示:
[System]:
你是一名数学老师。你的任务是用Python代码逐步审查和评论解决方案中的段落。
[User]:
以下是数学问题和一个解决方案(拆分为段落,用标签括起来并从1开始索引):
[Math Problem]
{problem}
[Solution]
<paragraph_1>
{solution_section_1}
</paragraph_1>
...
<paragraph_n>
{solution_section_n}
</paragraph_n>
你的任务是验证解决方案中段落的正确性。通过‘### Paragraph {{ID}}‘拆分你的验证内容。
你对每个段落的验证内容应由两部分组成,分别用‘<analyze></analyze>‘和‘<verify></verify>‘括起来。
1. 在‘<analyze></analyze>‘部分,你需要分析推理过程,并详细解释该段落正确或错误的原因。
2. 在‘<verify></verify>‘部分,你必须以‘‘‘python\n{{CODE}}\n‘‘‘的形式编写Python代码,以验证所有可通过代码验证的细节。你可以导入PyPI(如‘sympy‘、‘scipy‘等)来实现复杂计算。确保在代码中打印评论结果。系统会自动执行每个代码。你需要分析代码执行后的‘[Code Output]‘。
注意,编写代码时必须遵循‘‘‘python\n{{CODE}}\n‘‘‘的格式,否则代码将无法执行。
在所有验证完成后,如果你在某个段落中发现错误,请返回最早出现错误的段落的索引。否则,返回索引 -1(通常表示“未找到”)。请将你的最终答案(即索引)放在‘$\\boxed{{INDEX}}$‘形式的框内。
- 代码执行和验证:使用生成的代码,执行它并获得步骤 $t$ 的反馈 $f_t$。执行反馈格式化为[Code output: {execution result}],并连接到生成的 CoT 和代码,作为后续生成的前缀。
- 标签判断和共识过滤:在生成并验证所有候选步骤的基本原理数据后,基本原理生成模型最终输出一个数字。如果所有步骤都被推断为正确,该数字将为 -1,否则将是第一个错误步骤的索引。
实验
1. 实施细节
使用 QwQ-32 和上述用于 CoT 和代码基本原理生成的提示模板生成基本原理数据。基本模型来自 DeepSeek-R1-Distill 系列,特别是 1.5B、7B 和 32B 参数变体。提取<analyze></analyze>
标签内的内容,专门关注策略模型预测为负面的步骤。
2. ProcessBench 结果
下表显示了使用 F1 分数报告的 ProcessBench 结果:(此处应插入原文中对应的表格)
上表的主要见解如下:
- GenPRM 在 ProcessBench 上优于基于分类的 PRMs。GenPRM-7B 显著优于直接生成 PRM,并超越了 ProcessBench 上参数小于 72B 的所有先前 PRMs。
- GenPRM 通过 TTS 使较小的 PRM 超过 10 倍规模更大的 PRM 和 GPT-4o。GenPRM-1.5B 在 ProcessBench 上通过简单的多数投票超过 GPT-4,GenPRM-7B 超过 Qwen2.5-Math-PRM-72B,这表明扩展测试时间计算对 GenPRM 非常有效。
3. 策略模型测试时间缩放结果
- GenPRM 作为验证者:下图显示,GenPRM-7B 优于所有类似大小的基于分类的 PRMs,甚至通过测试时间缩放超过 Qwen2.5-Math-PRM-72B。(此处应插入原文中对应的图)
图(a) - (d)中的结果表明,以 Qwen2.5-Math-7B-Instruct 作为生成模型,GenPRM 在 MATH、AMC23、AIME24 和 Minerva Math 任务上优于基线模型。图(e) - (h)表明,以 Gemma-3–12b-it(Gemma Team 和 Google DeepMind,2025)作为生成模型,GenPRM 对相应的响应也有很好的泛化能力。
- GenPRM 作为批评家:下表显示了评论细化实验的结果:
下图显示,GenPRM 比基线模型表现出更强的批评能力,显著提高了策略模型的性能,并且随着基于批评反馈的更多细化,性能持续提升。(此处应插入原文中对应的图)
限制
- GenPRM 通过生成推理提供过程监督,在推理阶段引入了额外的计算量。
- GenPRM 主要关注数学推理任务,尚未探索在编码和一般推理任务上的实现。
结论
提出了 GenPRM,这是一种生成过程奖励模型,它为过程监督执行显式推理和代码验证,并能够扩展 PRMs 的测试时间计算量。
在 ProcessBench 和几个数学数据集上的实验结果表明,GenPRM 优于先前的 PRMs。实验还证明,GenPRM 的性能通过测试时间缩放得到提升,并且 GenPRM 作为批评家模型是有效的。
推荐阅读
1. DeepSeek-R1的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解GRPO和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!
评论