一文读懂 GenPRM:用生成推理扩展过程奖励模型测试时间计算

# 一文读懂 GenPRM:用生成推理扩展过程奖励模型测试时间计算 > [论文链接](https://arxiv.org/abs/2504.00891 "论文链接") > [代码链接](https://github.com/RyanLiu112/GenPRM "代码链接") > [模型链接](https://huggingface.co/collections/GenPRM/genprm-67ee4936234ba5dd16bb9943 "模型链接") > **参考文献**: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)推理。 ![](https://upload-images.jianshu.io/upload_images/17294212-cb58e8e2bfc7ec27.png) ## 主要贡献 1. 提出了一种生成过程奖励模型,该模型通过代码验证执行显式 CoT 推理,并利用相对进度估计(Relative Progress Estimation)来获取准确的 PRM 标签。 2. 在 ProcessBench 和常见数学推理任务上的实证结果表明,GenPRM 优于先前基于分类的 PRMs。 ## Preliminaries ### 1. 马尔可夫决策过程 用 PRMs 将测试时间缩放过程表示为一个马尔可夫决策过程(MDP),由 $(𝒮,𝒜, 𝑃, 𝑟, 𝛾)$ 定义。其中,$𝒮$ 是状态空间,$𝒜$ 是动作空间,$𝑃$ 代表转移动态,$𝑟 : 𝒮 × 𝒜 → R$ 是奖励函数,$𝛾 ∈ [0, 1]$ 是折扣因子。目标是优化每个步骤的奖励(如基于搜索的方法),或者优化整个响应的奖励(如最佳 N 抽样)。 ### 2. 监督微调 训练模型根据先前的上下文预测下一个令牌。对于数据集 $𝒟_{SFT} = \{(𝑥^{(𝑖)}, 𝑦^{(𝑖)})\}_{𝑖 = 1}^{𝑁}$,SFT 损失为: ![](https://upload-images.jianshu.io/upload_images/17294212-75b93b879d758ac7.png) 其中 $𝜋_𝜃$ 表示具有参数 $𝜃$ 的模型。 ### 3. 测试时间缩放 考虑两种测试时缩放方法: - **多数投票**:从所有解决方案中选择出现频率最高的答案。 - **Best-of-N (BoN)**:从 $N$ 个候选解决方案中选择最佳答案。 ## GenPRM 的总体框架 ![](https://upload-images.jianshu.io/upload_images/17294212-9d88151eb396b855.png) 由六个关键部分组成: 1. **策略模型**:生成解决方案步骤,MC 分数根据展开轨迹进行估计。 2. **RPE**:提出的相对进度估计(RPE)可导出准确的 PRM 标签。 3. **数据合成**:通过带有代码验证的思维链推理,合成高质量的过程监控数据。 4. **训练过程**:应用共识过滤,然后进行监督微调(SFT)来训练 GenPRM。 5. **验证与扩展**:经过训练的 GenPRM 充当验证者或批评家,为策略模型提供增强的测试时间扩展能力。 6. **性能提升**:GenPRM 的性能通过测试时间缩放进一步提高。 ## 从判别 PRM 到生成 PRM ### 1. 其他 PRM 方法 - **判别性 PRM**:假设我们有一个 PRM 数据集 $𝒟_{Disc} = \{(𝑠_t, 𝑎_t), 𝑟_t\}$,其中 $𝑟_t ∈ \{0, 1\}$ 用于硬估计的 PRM 标签。判别性 PRM $𝑟_𝜓$ 通过交叉熵损失进行训练。 ![](https://upload-images.jianshu.io/upload_images/17294212-2d8e46235f0c8645.png) - **直接生成 PRM**:使用数据集 $𝒟_{Direct - Gen} = \{(𝑠_t, 𝑎_t), 𝑟_t\}$,其中如果步骤正确 $𝑟_t$ 为“Yes” ,否则为“No”。直接生成 PRM 通过监督微调来训练,以预测每个步骤的“Yes”或“No”。对于步骤 $t$,我们将“Yes”令牌的概率作为预测的过程奖励 $\hat{r}_t$: ![](https://upload-images.jianshu.io/upload_images/17294212-2ab6bfa983f5abce.png) ### 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$ 可以通过以下等式获得: ![](https://upload-images.jianshu.io/upload_images/17294212-ec653b87c14ddaa4.png) ### 3. 具有代码验证的生成 PRM 与生成 PRM 的不同之处在于,它会生成代码,通过执行代码来验证推理步骤,并根据执行结果给出判断。在步骤 $t$,生成包含 CoT 和代码的基本原理 $v_t$ 后,我们执行代码并获得反馈 $f_t$。 给定当前状态 $𝑠_t$、动作 $𝑎_t$、先前的基本原理 $v_{1:t - 1}$ 以及先前相应的执行反馈 $f_{1:t - 1}$,PRM 首先生成基本原理 $v_t$。执行并获得反馈 $f_t$ 后,我们按如下方式计算最终的生成过程奖励: ![](https://upload-images.jianshu.io/upload_images/17294212-160e32866aada8e9.png) ## 使用 GenPRM 进行测试时间缩放 ### 1. 政策模型 TTS:GenPRM 作为验证者 为了扩展策略模型的测试时间计算量,可以从策略模型中采样多个响应,然后使用 GenPRM 作为验证器,以并行 TTS 的方式选择最终答案。 ### 2. 政策模型 TTS:GenPRM 作为批评家 通过为 PRM 配备生成过程监督能力,GenPRM 可以自然地用作批评家模型,来优化策略模型的输出。我们可以以顺序 TTS 的方式,通过多个轮次来扩展优化过程。 ### 3. GenPRM TTS 在评估每个解决方案步骤时,我们首先对 $N$ 个推理验证路径进行采样,然后使用多数投票,通过平均奖励来获得最终预测。 对于没有代码验证的 GenPRM,奖励计算如下: ![](https://upload-images.jianshu.io/upload_images/17294212-f4215cc899b5b244.png) 进一步将代码验证和执行反馈纳入此推理过程: ![](https://upload-images.jianshu.io/upload_images/17294212-faf86986dba4dee5.png) 然后,奖励可用于对策略模型的响应进行排名,或者通过阈值 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$ 正确的概率。公式为: ![](https://upload-images.jianshu.io/upload_images/17294212-9040904cc2842543.png) 其中 $q_j$ 是第 $j$ 个响应的答案,$q^*$ 是真实答案,$1$ 是指示函数。 为平衡计算成本,基于估计的 Pass@1 $𝑀𝐶(𝑠_1)$ 使用动态的 $K$: ![](https://upload-images.jianshu.io/upload_images/17294212-5c6498c054b95ab7.png) ### 2. 相对进度估计 提出相对进度估计(RPE),其与 GRPO 中的相对优势估计思路相似,用于改进传统的硬标签估计。MC 分数是对当前状态 $𝑠_t$ 的经验估计。要评估当前动作 $𝑎_t$ 的质量,自然要比较下一个状态 $𝑠_{t + 1}$ 与当前状态 $𝑠_t$ 的 MC 分数,因为 $𝑠_{t + 1} = [𝑠_t, 𝑎_t]$。 对于每个响应,如果第一个错误步骤是步骤 $t'$(即 $𝑀𝐶(𝑠_{t'}) = 0$),我们将后续步骤的 MC 分数设置为 0。我们为步骤 $t$ 定义的 RPE $𝑃_t$ 如下: ![](https://upload-images.jianshu.io/upload_images/17294212-fd40049feafc67c3.png) 其中 $𝑀𝐶(𝑠_1)$ 是在解生成阶段计算的估计 Pass@1。通过引入阈值 $𝜖$ 来估计最终的奖励标签 $\hat{r}_t$: ![](https://upload-images.jianshu.io/upload_images/17294212-3a1037e03af05391.png) ### 3. 理由生成、验证和过滤 使用 QwQ-32B 作为基本原理生成模型,并引入一个三步流程,自动生成和验证每个推理步骤的基本原理。 给定一个问题 $x$、真实答案 $q^*$ 和候选步骤 $\{𝑎_1, · · ·, 𝑎_T\}$,生成和验证过程如下: - **基于代码的基本原理生成**:提示基本原理生成模型将 CoT 包围在``和``中,将代码包围在``和``中。使用以下提示: ``` [System]: 你是一名数学老师。你的任务是用Python代码逐步审查和评论解决方案中的段落。 [User]: 以下是数学问题和一个解决方案(拆分为段落,用标签括起来并从1开始索引): [Math Problem] {problem} [Solution] {solution_section_1} ... {solution_section_n} 你的任务是验证解决方案中段落的正确性。通过‘### Paragraph {{ID}}‘拆分你的验证内容。 你对每个段落的验证内容应由两部分组成,分别用‘‘和‘‘括起来。 1. 在‘‘部分,你需要分析推理过程,并详细解释该段落正确或错误的原因。 2. 在‘‘部分,你必须以‘‘‘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 参数变体。提取``标签内的内容,专门关注策略模型预测为负面的步骤。 ### 2. ProcessBench 结果 下表显示了使用 F1 分数报告的 ProcessBench 结果:(此处应插入原文中对应的表格) ![](https://upload-images.jianshu.io/upload_images/17294212-93b96b2b2e474ccd.png) 上表的主要见解如下: - 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。(此处应插入原文中对应的图) ![](https://upload-images.jianshu.io/upload_images/17294212-093bb76784e93fdc.png) 图(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 对相应的响应也有很好的泛化能力。 ![](https://upload-images.jianshu.io/upload_images/17294212-3f5d998c55d6e97e.png) - **GenPRM 作为批评家**:下表显示了评论细化实验的结果: ![](https://upload-images.jianshu.io/upload_images/17294212-a5bf8a13000f572b.png) 下图显示,GenPRM 比基线模型表现出更强的批评能力,显著提高了策略模型的性能,并且随着基于批评反馈的更多细化,性能持续提升。(此处应插入原文中对应的图) ![](https://upload-images.jianshu.io/upload_images/17294212-a44bf7ad694fd77d.png) ## 限制 1. GenPRM 通过生成推理提供过程监督,在推理阶段引入了额外的计算量。 2. GenPRM 主要关注数学推理任务,尚未探索在编码和一般推理任务上的实现。 ## 结论 提出了 GenPRM,这是一种生成过程奖励模型,它为过程监督执行显式推理和代码验证,并能够扩展 PRMs 的测试时间计算量。 在 ProcessBench 和几个数学数据集上的实验结果表明,GenPRM 优于先前的 PRMs。实验还证明,GenPRM 的性能通过测试时间缩放得到提升,并且 GenPRM 作为批评家模型是有效的。 本文由[mdnice](https://mdnice.com/?platform=6)多平台发布
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容