【论文解读】OpenR:让大模型“深思熟虑”的开源框架
paper: [2410.09671] OpenR: An Open Source Framework for Advanced Reasoning with Large Language Models
code: openreasoner/openr: OpenR: An Open Source Framework for Advanced Reasoning with Large Language Models
5. 总结 (结果先行)
OpenR是一个有价值的开源贡献,通过整合测试时计算、细粒度的过程监督以及强化学习,该框架展示了提升LLM在复杂任务(如数学推理)上性能的潜力。
局限性:
- 实验规模:受限于计算资源,实验主要在中等规模模型和数据集上进行。更大模型可能会带来更显著的收益。
- 过程监督数据:尽管有自动化方法,但过程监督数据的规模和多样性仍有提升空间。
- RL训练的稳定性与泛化:在复杂数据集上,RL训练可能仍面临挑战。
1. 思想
人类的认知通常被划分为两种模式:
- 系统1(System 1):快速、直觉、自动化的思考。
- 系统2(System 2):缓慢、刻意、需要集中注意力的分析式思考。
传统LLM的自回归生成方式在某种程度上类似于系统1,能快速给出答案,但在复杂推理任务上往往力不从心。OpenAI的o1模型引入了“原生思维链”(Native Chain-of-Thought, NCoT)的概念,允许模型在推理过程中投入更多计算资源,进行更深层次的“思考”,这本质上是向系统2的靠拢。
OpenR的核心理念正是要将这种“慢想”能力内化到LLM中,而不仅仅依赖于外部的提示工程(prompting)。它主张将计算资源从单纯的预训练阶段参数规模的扩展,部分转移到推理阶段的“深度思考”上。通过显式地建模和优化推理过程的每一步,并利用强化学习进行策略迭代,OpenR期望构建出能够自我改进、进行开放式强推理和决策的智能体。
2. 方法
2.1 MDP 建模推理
将问题求解过程(如数学题解答)建模为一个序列 Q → { R } → A Q \rightarrow \{R\} \rightarrow A Q→{R}→A,其中:
- Q Q Q:初始问题或提示(Question/Prompt)。
- { R } \{R\} {R}:模型生成的一系列中间推理步骤(Reasoning steps)。
- A A A:最终答案或解决方案(Answer/Solution)。
这个过程可以自然地映射为一个马尔可夫决策过程(MDP),记为 M = ( S , A , T , R , γ ) M = (\mathcal{S}, \mathcal{A}, \mathcal{T}, \mathcal{R}, \gamma) M=(S,A,T,R,γ):
- 状态(State, S t ∈ S S_t \in \mathcal{S} St∈S):在时间步 t t t,表示到目前为止生成的推理序列,例如 S 0 = Q S_0 = Q S0=Q, S 1 = S 0 + R 1 S_1 = S_0 + R_1 S1=S0+R1。
- 动作(Action, a t ∈ A a_t \in \mathcal{A} at∈A):在状态 S t S_t St 下,LLM生成的下一个推理步骤 R t + 1 R_{t+1} Rt+1 或最终答案 A A A。这些动作通常是token序列。
- 转移函数(Transition Function, T \mathcal{T} T): S t + 1 = T ( S t , a t ) S_{t+1} = \mathcal{T}(S_t, a_t) St+1=T(St,at),通常是确定性的,即 S t + 1 = S t concat a t S_{t+1} = S_t \text{ concat } a_t St+1=St concat at。
- 奖励函数(Reward Function, R \mathcal{R} R):由过程奖励模型(PRM,后述)提供,评估当前步骤 a t a_t at 在状态 S t S_t St 下的质量,即 r t PRM = R ( S t , a t ) r_t^{\text{PRM}} = \mathcal{R}(S_t, a_t) rtPRM=R(St,at)。
- 折扣因子(Discount Factor, γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ∈[0,1]):平衡即时奖励和未来奖励。
LLM本身扮演策略(Policy) π ( a t ∣ S t ) \pi(a_t | S_t) π(at∣St)的角色,目标是最大化累积折扣奖励 ∑ t = 0 T γ t r t PRM \sum_{t=0}^T \gamma^t r_t^{\text{PRM}} ∑t=0TγtrtPRM。
2.2 过程奖励模型(Process Reward Model, PRM)
PRM是OpenR的核心组件之一,它取代了传统仅关注最终结果的“结果监督奖励模型”(Outcome-supervised Reward Models, ORM)。PRM对推理过程中的每一步都进行评估,提供更细粒度的反馈。
-
定义:给定问题 q q q 和到第 t t t 步的解题过程 x 1 : t = [ x 1 , … , x t ] x_{1:t} = [x_1, \dots, x_t] x1:t=[x1,…,xt],PRM输出一个分数 P t = PRM ( [ q , x 1 : t − 1 ] , x t ) P_t = \text{PRM}([q, x_{1:t-1}], x_t) Pt=PRM([q,x1:t−1],xt),表示当前步骤 x t x_t xt 的正确性或质量。这通常被构建为一个二元分类任务(例如,当前步骤是否正确)。
-
训练数据:
-
MATH-APS数据集:论文重点介绍的自研数据集,基于MATH数据集,通过自动化方法(OmegaPRM)生成。OmegaPRM通过构建状态-动作树,利用LLM进行MCTS(蒙特卡洛树搜索)式的 rollout,并结合特定的价值函数 Q ( s , r ) Q(s,r) Q(s,r) 和探索项 U ( s ) U(s) U(s) 来选择 rollout 路径。
Q ( s , r ) = α ⋅ 1 − MC ( s ) β ⋅ len ( r ) L U ( s ) = C p u c t ln N ( s p ) 1 + N ( s ) Q(s,r) = \alpha \cdot \frac{1-\text{MC}(s)}{\beta \cdot \text{len}(r)^L}\\U(s) = C_{puct} \sqrt{\frac{\ln N(s_p)}{1+N(s)}} Q(s,r)=α⋅β⋅len(r)L1−MC(s)U(s)=Cpuct1+N(s)lnN(sp)- s s s:当前解题前缀(状态), s p s_p sp:当前状态的 parent 状态。
- r r r:从状态 s s s 开始的后续步骤序列(rollout)。
- MC ( s ) \text{MC}(s) MC(s):对状态 s s s 正确性的蒙特卡洛估计值(例如,rollout最终成功的比例)。
- len ( r ) \text{len}(r) len(r):rollout r r r 的长度。
- N ( s ) N(s) N(s):状态 s s s 的访问次数。
- C p u c t C_{puct} Cpuct:控制探索程度的常数。
- α , β , L \alpha, \beta, L α,β,L:超参数。
通过二分查找等方法定位rollout中的第一个错误步骤,从而为PRM生成(前缀,步骤,标签[正确/错误]
)形式的训练样本。
-
也使用了已有的PRM800K和Math-Shepherd数据集。
-
-
训练方式:使用LLM(如Qwen2.5-Math-7B-Instruct)进行监督微调。输入为“问题 + 过程步骤序列”,在每个步骤结束由特殊标记(如
\n\n\n\n\n
)分隔,模型被训练预测一个表示该步骤正确与否的特殊token(例如+
或-
)。损失函数仅在这些特殊token位置计算。
2.3 RL 的策略优化
LLM策略 π \pi π 通过与PRM交互进行优化。
- 算法:
- PPO (Proximal Policy Optimization) :常用的策略梯度方法,通过限制策略更新幅度来保证训练稳定性。通常需要一个价值网络来估计状态价值,并使用GAE(Generalized Advantage Estimation)计算优势函数。
- GRPO (Group Relative Policy Optimisation) :PPO的一种变体,它直接使用归一化的奖励信号作为优势函数的估计,即 A ( s t , a t ) = r t PRM − mean ( r PRM ) std ( r PRM ) A(s_t, a_t) = \frac{r_t^{\text{PRM}} - \text{mean}(r^{\text{PRM}})}{\text{std}(r^{\text{PRM}})} A(st,at)=std(rPRM)rtPRM−mean(rPRM)。简化了训练,无需额外的价值网络。
- 环境:将数学问题等任务构建成类似OpenAI Gym的环境,LLM的每个推理步骤是动作,PRM提供奖励。
2.4 推理时引导搜索与规划
训练好的PRM不仅用于RL训练,还在推理时指导LLM的生成过程。
-
PRM作为验证器 (Verifier):评估LLM生成的每个步骤的质量。常用策略有:
- PRM-Min:最终得分为所有步骤PRM分数的最小值, v = min t { r t PRM } v = \min_{t} \{r_t^{\text{PRM}}\} v=mint{rtPRM}。
- PRM-Last:最终得分为最后一个步骤的PRM分数, v = r T PRM v = r_T^{\text{PRM}} v=rTPRM。
-
搜索算法:
- Best-of-N:LLM独立生成N个完整的解题路径,然后使用PRM(如PRM-Last)对它们进行评分,选择分数最高的作为最终答案。
- Beam Search:在每一步生成时,保留PRM评分最高的M个部分路径,并在此基础上继续扩展。
-
多答案聚合策略:当生成多个候选答案时,
-
Majority-Vote:选择出现次数最多的最终答案。公式为
f ∗ = arg max f ∑ y i 1 final_ans ( y i ) = f f^* = \text{arg max}_f \sum_{y_i} \mathbf{1}_{\text{final\_ans}(y_i)=f} f∗=arg maxfyi∑1final_ans(yi)=f
其中 y i y_i yi 是第 i i i 个完整解路径, 1 condition \mathbf{1}_{\text{condition}} 1condition 是指示函数。 -
RM-Max (Reward Model Max):选择PRM(或ORM)打分最高的最终答案。
-
RM-Vote:结合投票和PRM分数。
-
3. 优势
- 过程监督的深化:通过PRM对推理的中间步骤进行细致评估,比仅关注最终结果的ORM能提供更有效的学习信号。
- 测试时计算的整合:显式地允许并优化LLM在推理时进行更多的计算(如通过Best-of-N或Beam Search探索多个推理路径),以提高解题质量。
- 统一框架:将数据获取、PRM训练、RL策略学习和推理时搜索等组件有机结合。
- 可扩展的数据增强:提出了基于OmegaPRM的自动化方法(MATH-APS)来生成大规模过程监督数据,减少了对昂贵人工标注的依赖。
4. 实验
报告通过在MATH数据集(特别是其子集MATH500)上的实验来验证OpenR框架的有效性。论文声称,通过PRM和引导搜索的结合,测试时推理性能大约提升了10%。
- PRM模型 (Math-psa):基于Qwen2.5-Math-7B-Instruct,使用PRM800K、Math-Shepherd和自研的MATH-APS数据集进行微调。
- 搜索方法比较:
- Best-of-N和Beam Search均显著优于简单的Majority Vote。
- 在较低的生成预算(每个问题的平均token数)下,Best-of-N表现更优。
- 随着预算增加,Beam Search的性能可以追平甚至超过Best-of-N(特别是当PRM策略为PRM-Last时)。
- PRM质量比较:
- 论文提出的PRM (Math-psa,即基于MATH-APS等数据训练的模型) 在Best-of-N设置下,于所有测试的计算预算上都取得了最高的测试准确率,优于仅使用Math-Shepherd数据的PRM。这证明了其PRM训练流程和数据增强的有效性。
- 在线策略学习:
- 使用Qwen2.5-1.5B-Math-Instruct作为策略模型,Math-Shepherd PRM提供奖励。
- 在单个数学问题上,RL训练后模型的PRM奖励随训练时间(Wall Clock)稳步提升,约6小时后趋于稳定。
- 在MATH500数据集上,PRM奖励虽然整体呈上升趋势,但波动较大,表明在多样化问题上泛化仍具挑战。
- 案例分析:
- PRM评分对比:展示了自研Math-psa PRM与Math-Shepherd PRM在正确和错误推理路径上对各步骤的评分差异。Math-psa在某些情况下能给出更合理的置信度。
- 不同搜索方法对比:CoT(Chain of Thought,可视为最简单的greedy search)可能在某些步骤出错,而Best-of-N和Beam Search由于探索了更广的搜索空间,能够找到正确的推理路径并得到正确答案。