admin管理员组文章数量:1028569
LLM推理:如何通过PRMs和MCTS提升大型语言模型的推理能力
思考:
- PRMs 是什么?它们如何训练、数据如何标注,以及在预测时如何使用?
- MCTS 在 LLM 场景中是如何实现的?
- PRMs 和 MCTS 是完全独立的技术,还是相辅相成的?
选择了三篇代表性论文来解析这些问题:
- 《Let’s Verify Step by Step》:OpenAI 的一篇纯 PRMs 研究论文,帮我们理解 PRM 的基础。
- 《rStar-Math》:同时应用 PRMs 和 MCTS 进行训练和推理的论文,展示了它们如何协同工作。
- 《A Roadmap to Reproduce o1 from Reinforcement Learning Perspective》:从统一视角介绍 LLM、奖励模型、搜索策略和强化学习的关系,给我们提供全局视野。
通过这三篇论文的分析,我们将能清晰地理解:PRMs 本质上是一种奖励模型,而 MCTS 则是一种搜索策略。它们各自解决不同的问题,却能在大模型推理优化中形成强大合力。
转载:聊聊推理模型中的PRMs与MCTS
1.《Let’s Verify Step by Step》
.20050
Openai 在 23 年五月的一篇论文
研究动机
首先,reward model 在 llm 的场景下是什么? **Reward Model 扮演着关键的 “评分员” 角色。**它的工作很直观:给定一个 prompt 和模型的 output,它会给这个 output 打分(比如 0-10 分)。
那 reward model 用在哪里呢?十分的灵活,可以是
- SFT训练优化:通过 Reject Sampling 技术,让 LLM 对同一个提示生成多个回复,然后用 reward Model 挑选分数最高的作为高质量 SFT 训练数据。
- RLHF训练支持:在强化学习过程中提供必要的反馈信号,引导模型向更好的方向优化。
- 推理质量提升:在实际应用中,对同一个 prompt 采样多个 output,然后把 reward Model 评分最高的呈现给用户,提升用户体验。
Reward model 又分为结果监督模型 ORMs(Outcome-supervised reward models)和过程监督模型 PRMs(process-supervised reward models)。主要区别在于它们的反馈机制:
- 结果监督模型(ORMs):只根据最终答案的正确性提供反馈,不关心推理过程,是 solution-level 解决方案级别的评估
- 过程监督模型(PRMs):对推理链中的每一步都提供反馈,确保整个思考过程正确,是 step-level 步骤级别的评估
假设计算 (3 × 4) + (7 × 2),模型给出的解题步骤如下,ORMs 的会给予这个回复正面反馈,因为最终答案恰好正确(虽然是歪打正着),PRMs 会指出步骤 1 和步骤 2 是错误的,只有步骤 3 和步骤 4 是正确的。
代码语言:javascript代码运行次数:0运行复制步骤1:3 × 4 = 11(错误)
步骤2:7 × 2 = 15(错误)
步骤3:11 + 15 = 26(基于前面步骤正确)
步骤4:因此最终答案:26(最终答案正确)
ORMs 与 PRMs 在训练与使用方面存在本质差异:
训练数据需求不同:
- ORMs:需要 prompt、完整的(output)和最终答案的正确性判断(0 或 1)。
- PRMs:需要 prompt,以及每一步解题过程的正确性判断(0 或 1)。
推理应用方式不同
- ORMs:简单直接,对整体 solution 解决方案打分。
- PRMs:更加灵活,可以是
- 选项 1:在 llm 生成每一步解题步骤 step 后进行评估,发现错误时 llm 重新生成。
- 选项 2:对完整 solution 进行评估,将每步预测为该步骤正确的概率相乘作为总体得分 。
- 选项 3:对完整 solution 进行评估,以所有步骤中的最低分作为整体得分。
- 选项 4:…
直观上来说,PRMs 提供 step-level 的细粒度评估,能有效捕捉解题过程中的错误,而 ORMs 则在 solution-level 进行评估,可能导致 “答案正确但过程错漏百出” 的情况;然而,PRMs 实施其它挑战,例如需要大量人工来标注每个步骤的正确性,还涉及如何客观定义 “步骤正确” 的标准问题。
说了那么多,其实 OpenAI 这篇论文就是想比较一下 ORMs 和 PRMs 哪个更好用。这种比较以前也有人做过,但 OpenAI 玩的是自己的强项——scaling。他们的思路很简单,别人训练 1B 参数的 reward model?我就训 100B 的!
别人用 1 万条训练数据?OpenAI 就用高几个量级的高质量数据!这就是 OpenAI 的典型打法:通过规模化实验,探索是否会出现有趣的现象和突破性发现。
研究方法
主要研究解数学题的场景,主要方法可概括为以下关键点:
研究者设计了两种场景,large-scale 和 small scale 两个场景:
- large-scale:使用 GPT-4这样的大 size model 作为 llm generator 和 reward model 的 base model
- small-scale:使用计算量仅为 GPT-4 的 1/200 的小模型作为 base model
generator 生成器的设计
上文也提到 reward model 是对 llm(论文把这个 llm 成为 generator )的生成的 output 打分,那这个 llm 怎么来呢?
在 large-scale 和 smalb-scale 场景下,都继续对 base model 用 MathMix这个数学领域的数据集继续 pre-trained 大概 1.5B 个 token。为了使 generator 能稳定生成解题步骤的格式,通过 few-shot 方式在 MATH 数据集上生成解题步骤的 SFT 数据,用 base model 在这些数据集上 SFT,这步主要目的不是教会模型新技能,而是让它按所需格式生成解决方案。
PRMs 模型的训练数据标注、训练和推理:
- 训练数据:作者让 generator 生成大量 Math 数据问题的解题步骤,然后请人类标注员标注这些解答中的每个步骤,标记为:对的(步骤正确合理)、错的(步骤不正确或不合理)和模糊的(不确定或有歧义),如下图所示。为了提高数据质量,他们不是随机选择解答给标注人标注,而是有策略地选择 convincing wrong-answer solutions(看似正确但实际错误) 的解答。这些解答通常能获得 reward 模型的高分,但实际上存在错误,这正是难的高质量数据。其次,还引入了迭代学习。如先标注了 10 万条,然后训练一个 PRM,然后用这个模型对新生成的解答进行评分,再挑选那些 “看似正确但实际错误” 的解答进行新一轮标注,如此反复。最终,PRM800K 数据集包含了针对 1.2 万个数学问题的 7.5 万个解决方案中的 80 万个步骤级标签。
- 训练:PRM 模型的目标是预测每个解题步骤的正确性。虽然论文没有详细讨论训练细节,但推测是将每个训练步骤的最后一个 token 用于正确、错误、模糊的三分类任务。
- 推理:模型对整个解答进行一次前向传播,获得每个步骤的正确性预测。一个解答的最终得分等于所有步骤正确概率的乘积。比如,如果一个三步解法的正确概率分别是 0.8、0.7 和 0.6,那么这个解法的总体得分就是 0.8×0.7×0.6=0.336。不过这种评分方式有个明显缺点:步骤越多的解法,得分自然会越低,这可能对解题步骤多的 solution 不太公平。
ORMs 模型的训练数据标注、训练和推理:
- 训练数据:对 1.2 万个问题的 PRM800K 数据集,每个问题采样 100 条,因为已经知道每个问题的答案,可以把答案与 generator 的预测答案对比,标注得到这个 solution 整体是对还是错。我们得到了约 120 万个带标注的 solution。值得一提的是,这比 PRM800K 使用的数据量大了整整十倍——PRMs 只有 7.5 万个 solution。
- 训练:对 solution 的最后一个 token 后,根据整体答案的对错标签进行监督训练。
- 推理:同训练一样,对整体 solution 打分,预测对还是错。
Large-scale Supervision 实验结果
对 MATH 数据集进行测试,分别对每个题目,large-scale generator 生成 N 个 solution 。然后用三中方法挑选最优解答:
- PRM:选择过程评分最高的 solution 的答案
- ORM:选择结果评分最高的 solution 的答案
- Majority Voting:选择出现频率最高的答案
最终 PRM 不仅在所有 N 值下都能达到更高的性能,而且随着 N 值的增加,性能差距还会扩大。这表明,在搜索大量模型生成的解决方案时,PRM 比 ORM 和多数投票法都更有效。
Small-scale Synthetic Supervision 实验结果
为了确保结论可靠,研究者还设计了小规模实验来排除两个可能的影响 large-scale 结论的因素:
- PRM 和 ORM 的训练集不可比:PRM 训练集使用主动学习构建、偏向答案不正确的解决方案、规模小一个数量级)。
- ORM 训练数据的标注问题:可能将推理错误但答案正确的解法标为正确。这样训练出来的 ORM 可能有损的。
Process vs Outcome Supervision
samll-scale 下需要讨论上述两个问题带来的影响。由于人工标注成本高,研究者使用上面 large-scale 上训练出来的 PRM(简称为
PRM_{large})来监督较小模型,以低成本模拟人工标注。具体做法是
训练数据获得:用 samll-scale generator 对每条数据采样 1-200 条,然后利用
PRM_{large} 来生成 process 监督数据、outcome 监督数据,以及用 final-answer checking 得到 outcome 的监督数据。具体做法是:
- 利用
PRM_{large} 来生成 process 监督数据:把
PRM_{large} 预测错误概率超过 20% 的步骤标注为错误。
- 利用
PRM_{large} 来生成 output 监督数据:只要
PRM_{large} 预测出某一步是错的,那这条数据的整体就标注为错的。注意,这种标注方法能缓解**” 推理答案正确,但推理过程出现错误,但我们标注为正确” 的**情况。
- Final-answer 传统结果监督:只看模型最终答案是否正确,来标记对错。
实验结果如上,结果证明,无论标注数据规模如何,PRM 都领先于其他方法。有趣的是,用改进方法训练的 ORM 比传统方法好很多,说明以前的 ORM 标注确实存在问题,太粗糙了,容易把推理错误,但答案正确的也作为正面的监督信号。
Active Learning
研究还发现,标注数据时选择 “看似正确但实际错误” 的解法样本(主动学习策略)效率更高。这很符合直觉:标注 10 个难样本可能比标注 100 个简单样本更有价值。
论文总结
论文是纯研究 PRM 的好文章,论文的结果就是表明 PRM 比 ORM 要好。此外,也提出了主动学习,证明标难的数据带来的收益更好。
但 PRM 的问题在于太难标了,例如论文里只是对初中数学题去标,对初中数学题标注步骤级错误已经不易,更不用说大学数学或主观题了。这可能也是 DeepSeek-R1 和 Kimi1.5 等新一代推理模型没有采用 PRM 的原因。
2.《rStar-Math: Small LLMs Can Master Math Reasoning with Self-Evolved Deep Thinking》
.04519
十分好的文章,把 PRM 和 MCTS search 结合起来的工作。
前言:关于 MCTS 的那些事
MCTS(蒙特卡洛树搜索)是一种强大的搜索算法。这里用一个简明的例子,理解透 MCTS 在 llm 场景下的核心原理和工作流程。
MCTS 算法的核心包含四个关键步骤:Selection、Expansion、Evaluation 和 Backpropagation。这些步骤在每次搜索中循环执行,逐步构建出最优决策路径。
wait,wait,wait,在深入细节前,先了解几个重要概念,这是容易搞混的地方:
- trajectory:完整的搜索路径,从根节点到得到答案的整个 solution 过程,我们可以指定一个问题产生 16 个 trajectory 或 32 个。
- step:在一个 trajectory 中的每一步操作,在每一个 step 里做的就是 Selection、Expansion、Evaluation 和 Backpropagation 这四件事!
- 节点的 Q-value 属性:该节点的价值评分
- 节点的 visit_time 属性:表示沿着这个节点,有多少条 solution 是得到完整答案的。
- 节点的 is_terminal 属性:表示该节点是否为终止状态(已找到答案)。
下面开始用一个例子进行说明
- trajectory=0:
- step=0
- selection:最初只有根节点(即问题本身),没有选择余地,只能选它,这里 node 三个属性,visit_time、 q-value 和 is_terminal 分别为 0,0 和 False。
- expansion:由上一步选择的节点 expansion 出 n_generate_number 个节点(这又是一个超参数),这里为了简单,规定每个节点 generate 出 2 个新的节点,如下图所示。
- Evaluation:评估,当 expansion 出来的某个节点是叶子节点时(也就是获得最终答案时),才需要评估,这里因为还没获得答案,还不需要评估。
- Backpropagation:同 Evaluation 一样,因为 expand 出来的新的 node 还没获得答案,因此还不用进行这一步。
- step=1,又进入一个 slection、expansion、evaluation 和 backpropagation 的循环。
- selecion,在同一层的 Node2 和 Node3 之间选择,因为它们 Q-value 和 visit_time 相同,选择 Node2。
- expand:
- evaluation 和 backpropagation:还没找到答案,不用进行。
- step=3
- selection: 在同一层之间 selection,由于这里的 node4 和 node5 都是 q-value 和 visit_time 都是一样的,因此这里选择 node4。
- expantion:node4 expantion 出新的 node6 和 node7。注意,这时候 node6 和 node7 都是叶子节点了,因为这两个节点都已经得到了最终的答案!
- Evaluation:node6 答案正确,q_value 加上 positive value(正确的奖励分数,超参,例如这里定为 1),此外 visit_time+1,表示沿着这个节点得到一条完整的 solution 。相应的,node7 答案错误,q_value 加上 negative value(超参,例如这里设置为 - 10),同时 viist_time+1。两个 node 的 is_terminal 属性都是 True 。
- backpropagation:向上传播,更新 node4、node2 和 node1 节点的属性。例如这里的 node4 的 visit_time 更新为 2(表示沿着这个 node,有两条完整的 solution),q-value 更新为 - 9(它子节点的 q-value 总和),is_terminal 变成 True(因为 expantion 出来的节点,都找到了完整的 solution)。
这时候第一轮 trajectory 结束了!当然,有时候没那么快结束,但达到 max_step(也是 MCTS 的超参)也要强制结束。这时候开启新一轮的 trajectory !
- trajectory=1:
- step=0,又是重复 Selection 、 Exapnsion 、 Evaluation 和 Backpropagation。
- selection:注意,每一轮新的 trajectory 都要从根节点出发,例如这里发现 node3 是比 node2 更值得发掘的 node,因此这里选择 node3。这里的挑选是用 UCT 指标来挑选的,该指标会平衡利用和探索的常数(综合 q-value 和 visit_time 得到一个指标分数)。
- expantion:node3 expant 出 node8 和 node9
- evaluation:…
- backpropagation:…
- step=1
- select:…
- expantion:…
- evaluation:…
- backpropagation:…
- step=2:…
- trajectory=2:…
- …
如此循环,直到达到预设的 trajectory 数量,形成一个庞大的 MCTS 搜索树。
总的来说,一次 MCTS 包含多个循环,外层是每一次 trajectory,每一次 trajectory 从根节点出发,目标是找到新的 solution。每个 trajectory 里面,又有每个 step 的循环,每个 step 里,干的就是 selection、expantion、evaluation 和 backpropagation 四件事。想了解更多 MCTS 的实现细节,建议大家看看 rStar-Math 的源代码。
研究动机
- 怎么结合 PRM 和 MCTS,来迭代提升模型的训练和推理,在一些需要推理的题目上,达到类似 gpt-o1 的效果
- 标注每一个步骤是否正确的 PRM 数据,现在市面太少以及质量不高。想想,假如现在有一些解题的中间步骤,我们怎么标注中间步骤的正确性,有几种方式:
- 人工标注:如《Let’s Verify Step by Step》论文中的 PRM800K 数据集,需要人工标注每个步骤,成本高昂。
- 外部大模型监督:依赖性能更强的外部 LLM 或专门的 PRM 模型来评估。
- MCTS 蒙特卡洛模拟:例如从某个节点采样 100 条解题路径,如果 80 条正确,可以给节点 0.8 分。但问题是:计算量太大,现实中可能只能采样很少的路径,导致评分方差大。
研究方法
这篇论文的研究目的是展示如何通过自我进化的深度思考(self-evolved deep thinking),使小型语言模型(SLMs)在数学推理能力上能够与或超过 OpenAI 的 o1 模型,且无需依赖于从更高级模型中蒸馏(distillation)得到的数据。具体来说,作者们提出了一个名为 rStar-Math 的框架,该框架通过蒙特卡洛树搜索(MCTS)和基于 SLM 的过程奖励模型(PRM),实现了对数学问题的深入推理和解决。
Step-by-Step Verified Reasoning Trajectory
- **Code-augmented CoT Generation:**模型往往会生成中间过程错误但结果正确的 solution,为了缓解这种情况,作者提出代码增加的方式。具体的来说,让模型生成每个步骤 step 时,生成的具体格式如下图所示的 python 代码,包含有自然语言格式作为 python 代码的注释,每个 step 都是这种输出格式。然后把这些格式拿去 python 解释器运行,踢掉运行不成功的 node,训练时踢掉这些 node,确保生成的训练数据,尽可能少包含中间出错但结果正确的 solution,在推理时,把这些 node 及早踢掉,引导模型向高质量的解题方向扩展
- Extensive Rollouts for Q-value Annotaion:如最上面的 MCTS 例子,每个 node 都会有 q-value 值,这个值用于后续训练一个 PRM,以及在预测时,通过这个 q-value 来 select 值得 expantion 的 node 。因此,q-value 值就很重要了,那怎么得到 q-value 更好的估计呢,论文提出两种方式:
- Terminal-guided annotation :在一开始,没有一个很靠谱的 PRM reward model 时,只能初始化每个 node 的 q-value 为 0,后续用 MCTS 的方式来估算这个 node 的 q-value,例如通过不断的 trajectory 采样,经过这个 node 完整的 8 条 solution 里,4 条 solution 是正确的,4 条是错的,那这个 node 的 q-value 可以估算成 0.5,但很明显,这个受到 trajectory 数量的限制,理想情况下,trajectory 设置为无限大,根据大数定律,估算出来的 q-value 方差接近 0,但很明显,这是理想情况,实际上由于算力,trajectory 值不可能设置得这么大,可能只取为 4 或 8,这样明显估算出来的 q-value 方差是大的。
- PRM-augmented annotation:但随着训练出性能够好的 PRM,可以用这个 PRM 的预测作为这个 node 的 p-value 的初始值,后续用 MCTS 来更新这个 node 的 q-value,本质在于降低 q-value 的估算方差。
Process Preference Model
得到每个 node 估算的 q-value,可以用最小二乘作为目标函数,来训练一个 PRM,例如某个 node 的估算 q-value 为 0.6,这可以用 (y-0.6)^2 作为损失函数,来训练 PRM。
但问题又来了,这个估算的 p-value 由于方差是很大的,会影响训练出来的 PRM 的准确率。因此,论文提出一种 process preference model(PPM) 的训练方式,基于 Bradley-Terry 模型的偏好学习。例如:节点 3 和节点 4 的 Q 值分别为 0.5 和 0.7,虽然具体值不准,但我们可以相对确定节点 4 比节点 3 更好。这种方法受 Q 值噪声影响更小,训练出的奖励模型更加可靠。
Self-Evolved Deep Thinking
作者通过收集和合成的方式得到了 74.7 万的数学问题集。然后对这些问题用 MCTS 的方式来扩展出一步步 step 的解题步骤,例如某个问题用 MCTS 一共采样出 100 条完整的 solution
- SFT 训练数据的获取:取正确 solution 里 q-values 最高的 2 条(怎么定义一条 solution 的 q-value 呢?可以是这条 solution 的所有经过的 node 的 q-value 的平均值最大或者是最小值最大)的 solution 作为 SFT 训练集来训练一个 Policy SLM(Policy small language model)。
- PPM 训练数据的获取:每个 trajectory 的每个 step,选择两条 q-value 最高的两个中间步骤作为 positive samples,两条 q-value 最低的两个中间步骤作为 negative samples,这样得到 PPM 训练需要用到的偏好对数据。
在外面再套一层 Iteration 迭代训练,一共四轮:
- round1:由于初始 SLM 性能很差,导致的问题是,难的问题,很有可能就算 trajectory 设置得很高,模型也不能 sample 出一条正确的 solution,因此一开始的训练用 DeepSeek-Coder-V2-Instruct 生成,但由于这个模型太大了,trajectory 设置得不能很高,导致估算出来的 q-value 是偏差很大的。因此 round 1 生成的数据,只用来训练 Policy SLM。
- round2,由于 round1 得到的 SLM 参数量比 Deepseek 小很多,因此可以设置高一些的 trajectory,trajectory 高,估算出来的 q-value 就越准,这时候得到的 SFT 和 PPM 的训练数据集质量就越高。用新到的数据集来训练新一轮的 SLM policy 以及 PPM model。
- round3 和 round4 持续迭代。每轮基于上一轮的模型生成更高质量的训练数据来进行新的模型训练。
实验结果
研究在多个小型基础模型上进行了测试,包括 Phi3-mini-Instruct、Qwen2.5-Math-1.5B 等,结果令人惊喜。
而且这种方式能轻松把 test-scaling 做上去,例如推理时,设置每次 expantion 时生成更多的节点,或者设置更高的 trajectory 数。如下图所示,这里横坐标是 trajectory 的数量,效果随 test_scaling 增加而增加。
另外有额外的消融实验,证明了上文提到的 Step-by-step verified reasoning、 PPM、 Self-Evolved Deep Thinking 的有效性,这里不展开,有兴趣的读者可以看原论文。
论文总结
总体来说,rStar-Math 真的是一篇十分值得深度的文章,论文里把 MCTS 和 PRM 紧紧地建立在一起,并采用 self-evolved 的方式来迭代式的训练,全程不需要外部的大模型打分以及人工标注,就能用小 size 的模型取得这么好的效果。目前来看,rStar-Math 应该是 MCTS 和 PRM 结合的天花板了,实在很难想到还能有什么改进的空间。
3.《Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective》
.14135
论文是复旦大学邱老师 Moss 团队出的一个复现 gpt-o1 的综述论文。
这篇论文提出了构建类似 OpenAI o1 模型的路线图,围绕四个核心概念展开:策略初始化(Policy Initialization)、奖励设计(Reward Design)、搜索(Search)和学习(Learning)。以下是对这四个概念的详细解释:
Policy Initialization
简单点说,就是 lm 在 pretraining 和 sft 时,要尽可能包含推理数据,让模型能有一定的推理能力,在一个推理能力比较强的 base model 上继续 RLHF 上限才能更好。
Reward Design
奖励设计就像是模型的 “指南针”,用来指导生成训练数据和为模型推理时提供反馈信号。这些奖励可以评估最终答案是否正确,也可以评判中间推理步骤的质量。 奖励信号可以直接来自环境(比如代码能否成功运行),也可以来自专门训练的评估模型(ORM 或 PRM)。对于那些反馈稀疏的复杂任务,研究者会用 “reward shaping” 技术,把简单的 “对 / 错” 二元信号变成更细粒度的过程性反馈。设计得好的奖励机制,能帮助我们找到更优质的训练数据,从而训练出更优秀的模型。
Search
搜索策略是在训练和推理过程中寻找更优解的探索方法。不同于简单地采样一个答案就完事,搜索会利用多种信号(模型自信度、外部环境反馈、评估模型打分)来更高效地探索解空间。 常用的方法包括 Best-of-N 采样(生成多个答案选最好的)、beam search(保留多条可能路径)和 MCTS 搜索(像下棋一样规划多步走)。搜索在训练时能生成高质量的训练样本,在推理时则帮助克服模型固有的局限性。论文特别强调,搜索很容易实现规模化提升——比如,只要把 MCTS 的搜索参数调大,性能就能显著提升。
Learning
学习环节就是利用搜索生成的数据来改进模型策略。方法包括强化学习的策略梯度法(如 REINFORCE、PPO、DPO),它们能从成功和失败的案例中都学到东西;还有行为克隆法,这种方法只模仿最优解(有点像优中选优的淘汰制)。 策略梯度方法数据利用率高但复杂度也高,行为克隆则简单但数据效率较低。与传统的监督学习不同,强化学习能通过与环境互动持续生成新的训练数据,有潜力达到超越人类的表现。论文暗示 o1 可能在不同阶段灵活运用这些方法的组合。
4.关于 PRM 和 MCTS 的总结
- PRM 和 MCTS 实际上是两种可以独立使用的技术,只不过,往往它们组合使用时往往能产生 1+1>2 的效果。例如,
- 单独使用 PRM:我们可以让模型对同一个 prompt 采样多个不同 solution,无需 MCTS,只需利用模型的 temperature 等随机参数让每次生成结果不同,然后用 PRM 对每个 solution 的每一步打分,最终选择分数最高的路径返回。
- 单独使用 MCTS:使用 MCTS 生成多个解题路径时,不一定要用 PRM 来决定哪个节点值得扩展,可以用外部大模型(如 GPT-4)来选择,也可以用模型自身的 perplexity 来判断。本质上,我们需要的是找到最值得扩展的节点,PRM 只是挑选的众多方法之一。
- PRM 和 MCTS 既可以应用于优化训练数据,也可以用来预测用
- 用于得到高质量训练数据:如 rStar 论文中,可以用 PRM 和 MCTS 的方式来迭代地筛选得到质量更好的思维链 SFT 数据或者 RLHF 数据,还可以生成更精确的 reward model 训练数据。
- 用于推理:很简单,推理用 MCTS 的方式把 test-scaling 做上来,再结合 PRM 的方式从众多路径中挑选最佳答案。
- PRM 和 MCTS 的缺点 这方面 DeepSeek-R1 和 kimi1.5 的论文已经说得很情况了。
- Process Reward Model(PRM) 在实际应用中有三大局限:
- 第一,难以清晰界定一般推理中的细粒度步骤,说白了,怎么定义什么为一个步骤。
- 第二,判断当前步骤的正误难度大,模型自动化标注不如人意,人工标注又难以拓展。
- 第三,引入基于模型的 PRM 易致 reward hacking,有时为了训练 policy model,但反而更多时间去优化 reward model 去了。
- 对 MCTS 的看法:
- 文本的生成搜索空间指数级增长,为应对,给节点设扩展上限,却容易让模型陷入局部最优解困境。
- MCTS 往往要结合一个精确的 PRM 来用才能发挥最大效果,但 PRM 又有上述的问题,陷入一个死循环。
- 转载:聊聊推理模型中的PRMs与MCTS
LLM推理:如何通过PRMs和MCTS提升大型语言模型的推理能力
思考:
- PRMs 是什么?它们如何训练、数据如何标注,以及在预测时如何使用?
- MCTS 在 LLM 场景中是如何实现的?
- PRMs 和 MCTS 是完全独立的技术,还是相辅相成的?
选择了三篇代表性论文来解析这些问题:
- 《Let’s Verify Step by Step》:OpenAI 的一篇纯 PRMs 研究论文,帮我们理解 PRM 的基础。
- 《rStar-Math》:同时应用 PRMs 和 MCTS 进行训练和推理的论文,展示了它们如何协同工作。
- 《A Roadmap to Reproduce o1 from Reinforcement Learning Perspective》:从统一视角介绍 LLM、奖励模型、搜索策略和强化学习的关系,给我们提供全局视野。
通过这三篇论文的分析,我们将能清晰地理解:PRMs 本质上是一种奖励模型,而 MCTS 则是一种搜索策略。它们各自解决不同的问题,却能在大模型推理优化中形成强大合力。
转载:聊聊推理模型中的PRMs与MCTS
1.《Let’s Verify Step by Step》
.20050
Openai 在 23 年五月的一篇论文
研究动机
首先,reward model 在 llm 的场景下是什么? **Reward Model 扮演着关键的 “评分员” 角色。**它的工作很直观:给定一个 prompt 和模型的 output,它会给这个 output 打分(比如 0-10 分)。
那 reward model 用在哪里呢?十分的灵活,可以是
- SFT训练优化:通过 Reject Sampling 技术,让 LLM 对同一个提示生成多个回复,然后用 reward Model 挑选分数最高的作为高质量 SFT 训练数据。
- RLHF训练支持:在强化学习过程中提供必要的反馈信号,引导模型向更好的方向优化。
- 推理质量提升:在实际应用中,对同一个 prompt 采样多个 output,然后把 reward Model 评分最高的呈现给用户,提升用户体验。
Reward model 又分为结果监督模型 ORMs(Outcome-supervised reward models)和过程监督模型 PRMs(process-supervised reward models)。主要区别在于它们的反馈机制:
- 结果监督模型(ORMs):只根据最终答案的正确性提供反馈,不关心推理过程,是 solution-level 解决方案级别的评估
- 过程监督模型(PRMs):对推理链中的每一步都提供反馈,确保整个思考过程正确,是 step-level 步骤级别的评估
假设计算 (3 × 4) + (7 × 2),模型给出的解题步骤如下,ORMs 的会给予这个回复正面反馈,因为最终答案恰好正确(虽然是歪打正着),PRMs 会指出步骤 1 和步骤 2 是错误的,只有步骤 3 和步骤 4 是正确的。
代码语言:javascript代码运行次数:0运行复制步骤1:3 × 4 = 11(错误)
步骤2:7 × 2 = 15(错误)
步骤3:11 + 15 = 26(基于前面步骤正确)
步骤4:因此最终答案:26(最终答案正确)
ORMs 与 PRMs 在训练与使用方面存在本质差异:
训练数据需求不同:
- ORMs:需要 prompt、完整的(output)和最终答案的正确性判断(0 或 1)。
- PRMs:需要 prompt,以及每一步解题过程的正确性判断(0 或 1)。
推理应用方式不同
- ORMs:简单直接,对整体 solution 解决方案打分。
- PRMs:更加灵活,可以是
- 选项 1:在 llm 生成每一步解题步骤 step 后进行评估,发现错误时 llm 重新生成。
- 选项 2:对完整 solution 进行评估,将每步预测为该步骤正确的概率相乘作为总体得分 。
- 选项 3:对完整 solution 进行评估,以所有步骤中的最低分作为整体得分。
- 选项 4:…
直观上来说,PRMs 提供 step-level 的细粒度评估,能有效捕捉解题过程中的错误,而 ORMs 则在 solution-level 进行评估,可能导致 “答案正确但过程错漏百出” 的情况;然而,PRMs 实施其它挑战,例如需要大量人工来标注每个步骤的正确性,还涉及如何客观定义 “步骤正确” 的标准问题。
说了那么多,其实 OpenAI 这篇论文就是想比较一下 ORMs 和 PRMs 哪个更好用。这种比较以前也有人做过,但 OpenAI 玩的是自己的强项——scaling。他们的思路很简单,别人训练 1B 参数的 reward model?我就训 100B 的!
别人用 1 万条训练数据?OpenAI 就用高几个量级的高质量数据!这就是 OpenAI 的典型打法:通过规模化实验,探索是否会出现有趣的现象和突破性发现。
研究方法
主要研究解数学题的场景,主要方法可概括为以下关键点:
研究者设计了两种场景,large-scale 和 small scale 两个场景:
- large-scale:使用 GPT-4这样的大 size model 作为 llm generator 和 reward model 的 base model
- small-scale:使用计算量仅为 GPT-4 的 1/200 的小模型作为 base model
generator 生成器的设计
上文也提到 reward model 是对 llm(论文把这个 llm 成为 generator )的生成的 output 打分,那这个 llm 怎么来呢?
在 large-scale 和 smalb-scale 场景下,都继续对 base model 用 MathMix这个数学领域的数据集继续 pre-trained 大概 1.5B 个 token。为了使 generator 能稳定生成解题步骤的格式,通过 few-shot 方式在 MATH 数据集上生成解题步骤的 SFT 数据,用 base model 在这些数据集上 SFT,这步主要目的不是教会模型新技能,而是让它按所需格式生成解决方案。
PRMs 模型的训练数据标注、训练和推理:
- 训练数据:作者让 generator 生成大量 Math 数据问题的解题步骤,然后请人类标注员标注这些解答中的每个步骤,标记为:对的(步骤正确合理)、错的(步骤不正确或不合理)和模糊的(不确定或有歧义),如下图所示。为了提高数据质量,他们不是随机选择解答给标注人标注,而是有策略地选择 convincing wrong-answer solutions(看似正确但实际错误) 的解答。这些解答通常能获得 reward 模型的高分,但实际上存在错误,这正是难的高质量数据。其次,还引入了迭代学习。如先标注了 10 万条,然后训练一个 PRM,然后用这个模型对新生成的解答进行评分,再挑选那些 “看似正确但实际错误” 的解答进行新一轮标注,如此反复。最终,PRM800K 数据集包含了针对 1.2 万个数学问题的 7.5 万个解决方案中的 80 万个步骤级标签。
- 训练:PRM 模型的目标是预测每个解题步骤的正确性。虽然论文没有详细讨论训练细节,但推测是将每个训练步骤的最后一个 token 用于正确、错误、模糊的三分类任务。
- 推理:模型对整个解答进行一次前向传播,获得每个步骤的正确性预测。一个解答的最终得分等于所有步骤正确概率的乘积。比如,如果一个三步解法的正确概率分别是 0.8、0.7 和 0.6,那么这个解法的总体得分就是 0.8×0.7×0.6=0.336。不过这种评分方式有个明显缺点:步骤越多的解法,得分自然会越低,这可能对解题步骤多的 solution 不太公平。
ORMs 模型的训练数据标注、训练和推理:
- 训练数据:对 1.2 万个问题的 PRM800K 数据集,每个问题采样 100 条,因为已经知道每个问题的答案,可以把答案与 generator 的预测答案对比,标注得到这个 solution 整体是对还是错。我们得到了约 120 万个带标注的 solution。值得一提的是,这比 PRM800K 使用的数据量大了整整十倍——PRMs 只有 7.5 万个 solution。
- 训练:对 solution 的最后一个 token 后,根据整体答案的对错标签进行监督训练。
- 推理:同训练一样,对整体 solution 打分,预测对还是错。
Large-scale Supervision 实验结果
对 MATH 数据集进行测试,分别对每个题目,large-scale generator 生成 N 个 solution 。然后用三中方法挑选最优解答:
- PRM:选择过程评分最高的 solution 的答案
- ORM:选择结果评分最高的 solution 的答案
- Majority Voting:选择出现频率最高的答案
最终 PRM 不仅在所有 N 值下都能达到更高的性能,而且随着 N 值的增加,性能差距还会扩大。这表明,在搜索大量模型生成的解决方案时,PRM 比 ORM 和多数投票法都更有效。
Small-scale Synthetic Supervision 实验结果
为了确保结论可靠,研究者还设计了小规模实验来排除两个可能的影响 large-scale 结论的因素:
- PRM 和 ORM 的训练集不可比:PRM 训练集使用主动学习构建、偏向答案不正确的解决方案、规模小一个数量级)。
- ORM 训练数据的标注问题:可能将推理错误但答案正确的解法标为正确。这样训练出来的 ORM 可能有损的。
Process vs Outcome Supervision
samll-scale 下需要讨论上述两个问题带来的影响。由于人工标注成本高,研究者使用上面 large-scale 上训练出来的 PRM(简称为
PRM_{large})来监督较小模型,以低成本模拟人工标注。具体做法是
训练数据获得:用 samll-scale generator 对每条数据采样 1-200 条,然后利用
PRM_{large} 来生成 process 监督数据、outcome 监督数据,以及用 final-answer checking 得到 outcome 的监督数据。具体做法是:
- 利用
PRM_{large} 来生成 process 监督数据:把
PRM_{large} 预测错误概率超过 20% 的步骤标注为错误。
- 利用
PRM_{large} 来生成 output 监督数据:只要
PRM_{large} 预测出某一步是错的,那这条数据的整体就标注为错的。注意,这种标注方法能缓解**” 推理答案正确,但推理过程出现错误,但我们标注为正确” 的**情况。
- Final-answer 传统结果监督:只看模型最终答案是否正确,来标记对错。
实验结果如上,结果证明,无论标注数据规模如何,PRM 都领先于其他方法。有趣的是,用改进方法训练的 ORM 比传统方法好很多,说明以前的 ORM 标注确实存在问题,太粗糙了,容易把推理错误,但答案正确的也作为正面的监督信号。
Active Learning
研究还发现,标注数据时选择 “看似正确但实际错误” 的解法样本(主动学习策略)效率更高。这很符合直觉:标注 10 个难样本可能比标注 100 个简单样本更有价值。
论文总结
论文是纯研究 PRM 的好文章,论文的结果就是表明 PRM 比 ORM 要好。此外,也提出了主动学习,证明标难的数据带来的收益更好。
但 PRM 的问题在于太难标了,例如论文里只是对初中数学题去标,对初中数学题标注步骤级错误已经不易,更不用说大学数学或主观题了。这可能也是 DeepSeek-R1 和 Kimi1.5 等新一代推理模型没有采用 PRM 的原因。
2.《rStar-Math: Small LLMs Can Master Math Reasoning with Self-Evolved Deep Thinking》
.04519
十分好的文章,把 PRM 和 MCTS search 结合起来的工作。
前言:关于 MCTS 的那些事
MCTS(蒙特卡洛树搜索)是一种强大的搜索算法。这里用一个简明的例子,理解透 MCTS 在 llm 场景下的核心原理和工作流程。
MCTS 算法的核心包含四个关键步骤:Selection、Expansion、Evaluation 和 Backpropagation。这些步骤在每次搜索中循环执行,逐步构建出最优决策路径。
wait,wait,wait,在深入细节前,先了解几个重要概念,这是容易搞混的地方:
- trajectory:完整的搜索路径,从根节点到得到答案的整个 solution 过程,我们可以指定一个问题产生 16 个 trajectory 或 32 个。
- step:在一个 trajectory 中的每一步操作,在每一个 step 里做的就是 Selection、Expansion、Evaluation 和 Backpropagation 这四件事!
- 节点的 Q-value 属性:该节点的价值评分
- 节点的 visit_time 属性:表示沿着这个节点,有多少条 solution 是得到完整答案的。
- 节点的 is_terminal 属性:表示该节点是否为终止状态(已找到答案)。
下面开始用一个例子进行说明
- trajectory=0:
- step=0
- selection:最初只有根节点(即问题本身),没有选择余地,只能选它,这里 node 三个属性,visit_time、 q-value 和 is_terminal 分别为 0,0 和 False。
- expansion:由上一步选择的节点 expansion 出 n_generate_number 个节点(这又是一个超参数),这里为了简单,规定每个节点 generate 出 2 个新的节点,如下图所示。
- Evaluation:评估,当 expansion 出来的某个节点是叶子节点时(也就是获得最终答案时),才需要评估,这里因为还没获得答案,还不需要评估。
- Backpropagation:同 Evaluation 一样,因为 expand 出来的新的 node 还没获得答案,因此还不用进行这一步。
- step=1,又进入一个 slection、expansion、evaluation 和 backpropagation 的循环。
- selecion,在同一层的 Node2 和 Node3 之间选择,因为它们 Q-value 和 visit_time 相同,选择 Node2。
- expand:
- evaluation 和 backpropagation:还没找到答案,不用进行。
- step=3
- selection: 在同一层之间 selection,由于这里的 node4 和 node5 都是 q-value 和 visit_time 都是一样的,因此这里选择 node4。
- expantion:node4 expantion 出新的 node6 和 node7。注意,这时候 node6 和 node7 都是叶子节点了,因为这两个节点都已经得到了最终的答案!
- Evaluation:node6 答案正确,q_value 加上 positive value(正确的奖励分数,超参,例如这里定为 1),此外 visit_time+1,表示沿着这个节点得到一条完整的 solution 。相应的,node7 答案错误,q_value 加上 negative value(超参,例如这里设置为 - 10),同时 viist_time+1。两个 node 的 is_terminal 属性都是 True 。
- backpropagation:向上传播,更新 node4、node2 和 node1 节点的属性。例如这里的 node4 的 visit_time 更新为 2(表示沿着这个 node,有两条完整的 solution),q-value 更新为 - 9(它子节点的 q-value 总和),is_terminal 变成 True(因为 expantion 出来的节点,都找到了完整的 solution)。
这时候第一轮 trajectory 结束了!当然,有时候没那么快结束,但达到 max_step(也是 MCTS 的超参)也要强制结束。这时候开启新一轮的 trajectory !
- trajectory=1:
- step=0,又是重复 Selection 、 Exapnsion 、 Evaluation 和 Backpropagation。
- selection:注意,每一轮新的 trajectory 都要从根节点出发,例如这里发现 node3 是比 node2 更值得发掘的 node,因此这里选择 node3。这里的挑选是用 UCT 指标来挑选的,该指标会平衡利用和探索的常数(综合 q-value 和 visit_time 得到一个指标分数)。
- expantion:node3 expant 出 node8 和 node9
- evaluation:…
- backpropagation:…
- step=1
- select:…
- expantion:…
- evaluation:…
- backpropagation:…
- step=2:…
- trajectory=2:…
- …
如此循环,直到达到预设的 trajectory 数量,形成一个庞大的 MCTS 搜索树。
总的来说,一次 MCTS 包含多个循环,外层是每一次 trajectory,每一次 trajectory 从根节点出发,目标是找到新的 solution。每个 trajectory 里面,又有每个 step 的循环,每个 step 里,干的就是 selection、expantion、evaluation 和 backpropagation 四件事。想了解更多 MCTS 的实现细节,建议大家看看 rStar-Math 的源代码。
研究动机
- 怎么结合 PRM 和 MCTS,来迭代提升模型的训练和推理,在一些需要推理的题目上,达到类似 gpt-o1 的效果
- 标注每一个步骤是否正确的 PRM 数据,现在市面太少以及质量不高。想想,假如现在有一些解题的中间步骤,我们怎么标注中间步骤的正确性,有几种方式:
- 人工标注:如《Let’s Verify Step by Step》论文中的 PRM800K 数据集,需要人工标注每个步骤,成本高昂。
- 外部大模型监督:依赖性能更强的外部 LLM 或专门的 PRM 模型来评估。
- MCTS 蒙特卡洛模拟:例如从某个节点采样 100 条解题路径,如果 80 条正确,可以给节点 0.8 分。但问题是:计算量太大,现实中可能只能采样很少的路径,导致评分方差大。
研究方法
这篇论文的研究目的是展示如何通过自我进化的深度思考(self-evolved deep thinking),使小型语言模型(SLMs)在数学推理能力上能够与或超过 OpenAI 的 o1 模型,且无需依赖于从更高级模型中蒸馏(distillation)得到的数据。具体来说,作者们提出了一个名为 rStar-Math 的框架,该框架通过蒙特卡洛树搜索(MCTS)和基于 SLM 的过程奖励模型(PRM),实现了对数学问题的深入推理和解决。
Step-by-Step Verified Reasoning Trajectory
- **Code-augmented CoT Generation:**模型往往会生成中间过程错误但结果正确的 solution,为了缓解这种情况,作者提出代码增加的方式。具体的来说,让模型生成每个步骤 step 时,生成的具体格式如下图所示的 python 代码,包含有自然语言格式作为 python 代码的注释,每个 step 都是这种输出格式。然后把这些格式拿去 python 解释器运行,踢掉运行不成功的 node,训练时踢掉这些 node,确保生成的训练数据,尽可能少包含中间出错但结果正确的 solution,在推理时,把这些 node 及早踢掉,引导模型向高质量的解题方向扩展
- Extensive Rollouts for Q-value Annotaion:如最上面的 MCTS 例子,每个 node 都会有 q-value 值,这个值用于后续训练一个 PRM,以及在预测时,通过这个 q-value 来 select 值得 expantion 的 node 。因此,q-value 值就很重要了,那怎么得到 q-value 更好的估计呢,论文提出两种方式:
- Terminal-guided annotation :在一开始,没有一个很靠谱的 PRM reward model 时,只能初始化每个 node 的 q-value 为 0,后续用 MCTS 的方式来估算这个 node 的 q-value,例如通过不断的 trajectory 采样,经过这个 node 完整的 8 条 solution 里,4 条 solution 是正确的,4 条是错的,那这个 node 的 q-value 可以估算成 0.5,但很明显,这个受到 trajectory 数量的限制,理想情况下,trajectory 设置为无限大,根据大数定律,估算出来的 q-value 方差接近 0,但很明显,这是理想情况,实际上由于算力,trajectory 值不可能设置得这么大,可能只取为 4 或 8,这样明显估算出来的 q-value 方差是大的。
- PRM-augmented annotation:但随着训练出性能够好的 PRM,可以用这个 PRM 的预测作为这个 node 的 p-value 的初始值,后续用 MCTS 来更新这个 node 的 q-value,本质在于降低 q-value 的估算方差。
Process Preference Model
得到每个 node 估算的 q-value,可以用最小二乘作为目标函数,来训练一个 PRM,例如某个 node 的估算 q-value 为 0.6,这可以用 (y-0.6)^2 作为损失函数,来训练 PRM。
但问题又来了,这个估算的 p-value 由于方差是很大的,会影响训练出来的 PRM 的准确率。因此,论文提出一种 process preference model(PPM) 的训练方式,基于 Bradley-Terry 模型的偏好学习。例如:节点 3 和节点 4 的 Q 值分别为 0.5 和 0.7,虽然具体值不准,但我们可以相对确定节点 4 比节点 3 更好。这种方法受 Q 值噪声影响更小,训练出的奖励模型更加可靠。
Self-Evolved Deep Thinking
作者通过收集和合成的方式得到了 74.7 万的数学问题集。然后对这些问题用 MCTS 的方式来扩展出一步步 step 的解题步骤,例如某个问题用 MCTS 一共采样出 100 条完整的 solution
- SFT 训练数据的获取:取正确 solution 里 q-values 最高的 2 条(怎么定义一条 solution 的 q-value 呢?可以是这条 solution 的所有经过的 node 的 q-value 的平均值最大或者是最小值最大)的 solution 作为 SFT 训练集来训练一个 Policy SLM(Policy small language model)。
- PPM 训练数据的获取:每个 trajectory 的每个 step,选择两条 q-value 最高的两个中间步骤作为 positive samples,两条 q-value 最低的两个中间步骤作为 negative samples,这样得到 PPM 训练需要用到的偏好对数据。
在外面再套一层 Iteration 迭代训练,一共四轮:
- round1:由于初始 SLM 性能很差,导致的问题是,难的问题,很有可能就算 trajectory 设置得很高,模型也不能 sample 出一条正确的 solution,因此一开始的训练用 DeepSeek-Coder-V2-Instruct 生成,但由于这个模型太大了,trajectory 设置得不能很高,导致估算出来的 q-value 是偏差很大的。因此 round 1 生成的数据,只用来训练 Policy SLM。
- round2,由于 round1 得到的 SLM 参数量比 Deepseek 小很多,因此可以设置高一些的 trajectory,trajectory 高,估算出来的 q-value 就越准,这时候得到的 SFT 和 PPM 的训练数据集质量就越高。用新到的数据集来训练新一轮的 SLM policy 以及 PPM model。
- round3 和 round4 持续迭代。每轮基于上一轮的模型生成更高质量的训练数据来进行新的模型训练。
实验结果
研究在多个小型基础模型上进行了测试,包括 Phi3-mini-Instruct、Qwen2.5-Math-1.5B 等,结果令人惊喜。
而且这种方式能轻松把 test-scaling 做上去,例如推理时,设置每次 expantion 时生成更多的节点,或者设置更高的 trajectory 数。如下图所示,这里横坐标是 trajectory 的数量,效果随 test_scaling 增加而增加。
另外有额外的消融实验,证明了上文提到的 Step-by-step verified reasoning、 PPM、 Self-Evolved Deep Thinking 的有效性,这里不展开,有兴趣的读者可以看原论文。
论文总结
总体来说,rStar-Math 真的是一篇十分值得深度的文章,论文里把 MCTS 和 PRM 紧紧地建立在一起,并采用 self-evolved 的方式来迭代式的训练,全程不需要外部的大模型打分以及人工标注,就能用小 size 的模型取得这么好的效果。目前来看,rStar-Math 应该是 MCTS 和 PRM 结合的天花板了,实在很难想到还能有什么改进的空间。
3.《Scaling of Search and Learning: A Roadmap to Reproduce o1 from Reinforcement Learning Perspective》
.14135
论文是复旦大学邱老师 Moss 团队出的一个复现 gpt-o1 的综述论文。
这篇论文提出了构建类似 OpenAI o1 模型的路线图,围绕四个核心概念展开:策略初始化(Policy Initialization)、奖励设计(Reward Design)、搜索(Search)和学习(Learning)。以下是对这四个概念的详细解释:
Policy Initialization
简单点说,就是 lm 在 pretraining 和 sft 时,要尽可能包含推理数据,让模型能有一定的推理能力,在一个推理能力比较强的 base model 上继续 RLHF 上限才能更好。
Reward Design
奖励设计就像是模型的 “指南针”,用来指导生成训练数据和为模型推理时提供反馈信号。这些奖励可以评估最终答案是否正确,也可以评判中间推理步骤的质量。 奖励信号可以直接来自环境(比如代码能否成功运行),也可以来自专门训练的评估模型(ORM 或 PRM)。对于那些反馈稀疏的复杂任务,研究者会用 “reward shaping” 技术,把简单的 “对 / 错” 二元信号变成更细粒度的过程性反馈。设计得好的奖励机制,能帮助我们找到更优质的训练数据,从而训练出更优秀的模型。
Search
搜索策略是在训练和推理过程中寻找更优解的探索方法。不同于简单地采样一个答案就完事,搜索会利用多种信号(模型自信度、外部环境反馈、评估模型打分)来更高效地探索解空间。 常用的方法包括 Best-of-N 采样(生成多个答案选最好的)、beam search(保留多条可能路径)和 MCTS 搜索(像下棋一样规划多步走)。搜索在训练时能生成高质量的训练样本,在推理时则帮助克服模型固有的局限性。论文特别强调,搜索很容易实现规模化提升——比如,只要把 MCTS 的搜索参数调大,性能就能显著提升。
Learning
学习环节就是利用搜索生成的数据来改进模型策略。方法包括强化学习的策略梯度法(如 REINFORCE、PPO、DPO),它们能从成功和失败的案例中都学到东西;还有行为克隆法,这种方法只模仿最优解(有点像优中选优的淘汰制)。 策略梯度方法数据利用率高但复杂度也高,行为克隆则简单但数据效率较低。与传统的监督学习不同,强化学习能通过与环境互动持续生成新的训练数据,有潜力达到超越人类的表现。论文暗示 o1 可能在不同阶段灵活运用这些方法的组合。
4.关于 PRM 和 MCTS 的总结
- PRM 和 MCTS 实际上是两种可以独立使用的技术,只不过,往往它们组合使用时往往能产生 1+1>2 的效果。例如,
- 单独使用 PRM:我们可以让模型对同一个 prompt 采样多个不同 solution,无需 MCTS,只需利用模型的 temperature 等随机参数让每次生成结果不同,然后用 PRM 对每个 solution 的每一步打分,最终选择分数最高的路径返回。
- 单独使用 MCTS:使用 MCTS 生成多个解题路径时,不一定要用 PRM 来决定哪个节点值得扩展,可以用外部大模型(如 GPT-4)来选择,也可以用模型自身的 perplexity 来判断。本质上,我们需要的是找到最值得扩展的节点,PRM 只是挑选的众多方法之一。
- PRM 和 MCTS 既可以应用于优化训练数据,也可以用来预测用
- 用于得到高质量训练数据:如 rStar 论文中,可以用 PRM 和 MCTS 的方式来迭代地筛选得到质量更好的思维链 SFT 数据或者 RLHF 数据,还可以生成更精确的 reward model 训练数据。
- 用于推理:很简单,推理用 MCTS 的方式把 test-scaling 做上来,再结合 PRM 的方式从众多路径中挑选最佳答案。
- PRM 和 MCTS 的缺点 这方面 DeepSeek-R1 和 kimi1.5 的论文已经说得很情况了。
- Process Reward Model(PRM) 在实际应用中有三大局限:
- 第一,难以清晰界定一般推理中的细粒度步骤,说白了,怎么定义什么为一个步骤。
- 第二,判断当前步骤的正误难度大,模型自动化标注不如人意,人工标注又难以拓展。
- 第三,引入基于模型的 PRM 易致 reward hacking,有时为了训练 policy model,但反而更多时间去优化 reward model 去了。
- 对 MCTS 的看法:
- 文本的生成搜索空间指数级增长,为应对,给节点设扩展上限,却容易让模型陷入局部最优解困境。
- MCTS 往往要结合一个精确的 PRM 来用才能发挥最大效果,但 PRM 又有上述的问题,陷入一个死循环。
- 转载:聊聊推理模型中的PRMs与MCTS
本文标签: LLM推理如何通过PRMs和MCTS提升大型语言模型的推理能力
版权声明:本文标题:LLM推理:如何通过PRMs和MCTS提升大型语言模型的推理能力 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747520118a2170400.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论