当前位置: 首页 > article >正文

如何复现o1模型,打造医疗 o1?

如何复现o1模型,打造医疗 o1?

  • o1 树搜索
    • 一、起点:预训练规模触顶与「推理阶段(Test-Time)扩展」的动机
    • 二、Test-Time 扩展的核心思路与常见手段
      • 1. Proposer & Verifier 统一视角
      • 2. 只看最终答案:Best-of-N、Best-of-N Weighted
      • 3. 关注中间过程:引入过程奖励模型 (PRM)
      • 4. 自改进(Self-Improve / Revision)的思路
    • 三、小模型 + 大推理 VS. 大模型 + 普通推理
    • 四、进一步:MCTS 与 AlphaZero-Like 搜索
    • 五、PRM 在推理与训练中的多种用途
    • 六、Self-Play 与 Self-Improve
    • 七、OpenR 框架与综合视角
    • 八、整体结论与思考
    • 4 种解法拆解
      • 子解法 A:纯增加推理计算量(“多样采样 + 验证”)
      • 子解法 B:过程奖励模型(PRM)与搜索式推理(Beam Search / Lookahead / 等)
      • 子解法 C:多轮 Revision / Self-Improve(自修正)
      • 子解法 D:MCTS / AlphaZero-like 思路(结合自对弈 / RL 训练)
  • o1 医疗:树搜索

 


论文汇总:https://github.com/hijkzzz/Awesome-LLM-Strawberry?tab=readme-ov-file

 

o1 树搜索

├── 1 总览【背景与动机】
│      ├── 1.1 预训练Scaling Law遇到瓶颈【描述问题】
│      │      ├── 语言模型尺寸增大收益渐减【模型规模扩展的困难】
│      │      └── 预训练算力投入与性能不再线性增长【性能触顶】
│      └── 1.2 转向推理阶段的潜能挖掘【提出新方向】
│             └── o1推理/推理优化方法出现【多种推理强化方案】

├── 2 Scaling LLM Test Time【在推理阶段扩展计算以提升性能】
│      ├── 2.1 概述【核心思路】
│      │      ├── 通过增加推理时间或算力来提升回答质量【Test-Time Scaling】
│      │      └── 对比单纯提升模型参数量【对照关系】
│      ├── 2.2 纯推理扩展方案 (Method a)【无需额外训练】
│      │      ├── Best-of-N / Rejection Sampling【多次采样后筛选】
│      │      ├── Self-Consistency (SC)【统计最常见答案】
│      │      └── 计算量与收益的取舍【并行采样可行性】
│      ├── 2.3 结合部分训练的推理扩展 (Method b)【非RL】
│      │      ├── Proposer & Verifier框架【提供过程与结果判别】
│      │      ├── Process Reward Model (PRM)与Outcome Reward Model (ORM)对比【过程奖励与结果奖励】
│      │      └── 多种搜索策略:Beam Search / Lookahead Search【基于PRM评分】
│      ├── 2.4 进一步结合Self-Improve (Method c)【推理与改写】
│      │      ├── Revision Model【对错误答案进行修正】
│      │      ├── 多轮迭代式Refine【输入分布动态改变】
│      │      └── 与并行采样融合【效率对比与收益】
│      ├── 2.5 小模型 vs. 大模型【计算量交换率】
│      │      ├── 何时“小模型+更多推理时间”能胜过“大模型贪心解码”【条件与难度】
│      │      ├── 简单/中等难度题:搜索可以弥补模型不足【搜索有效】
│      │      └── 高难度题:搜索收益有限【本身推理能力不足】
│      └── 2.6 小结【实验与结论】
│             ├── Test-Time算力可在中等难题上胜过贪心大模型【可行性】
│             └── 瓶颈仍在模型本身的推理水平【必须提高Reasoning能力】

├── 3 MCTS与LLM结合 (MCTS-LLM)【基于价值搜索的推理框架】
│      ├── 3.1 基础概念【背景】
│      │      ├── 强化学习 (RL)中的蒙特卡洛树搜索 (MCTS)【Value-Based方法】
│      │      ├── AlphaGo / AlphaZero启示【自博弈与搜索】
│      │      └── LLM中动作空间庞大导致难以直接迁移【技术挑战】
│      ├── 3.2 与LLM结合的思路【如何应用】
│      │      ├── 将LLM生成的每一步/每个token当作节点【步骤或令牌级动作】
│      │      ├── 使用Value或Reward模型 (PRM/ORM)评估节点质量【评估节点】
│      │      └── 探索-利用平衡:UCB或其变体【控制搜索分支】
│      ├── 3.3 工程实现难点【实践限制】
│      │      ├── 计算开销大【深度与广度搜索的FLOPs消耗】
│      │      └── KV Cache与Tree结构管理复杂【缓存与并行】
│      └── 3.4 典型方案【AlphaZero-Like Tree Search等】
│             ├── 在推理时做搜索【纯Inference】
│             └── 在训练时纳入搜索数据【结合PPO或自监督】

├── 4 Process Reward Model (PRM)【过程奖励模型】
│      ├── 4.1 定义与用途【区别于ORM】
│      │      ├── PRM对多步推理的中间步骤打分【信号更密集】
│      │      ├── 可用于剪枝或引导推理路径【搜索友好】
│      │      └── 适合数学、代码等有客观对错的过程【正确性判断】
│      ├── 4.2 数据标注方法【如何获得step-wise标签】
│      │      ├── 人工标注:Let’s Verify Step by Step【三分类(正确/错误/中立)】
│      │      ├── Math-Shepherd:基于Rollout估计Step正确率【自动标注】
│      │      └── OmegaPRM:二分搜索减少Rollout次数【提升标注效率】
│      ├── 4.3 PRM在推理中的应用【PRM-Search】
│      │      ├── Step-wise检测并剪枝【无效步骤判定】
│      │      ├── Best-of-N + PRM重打分【挑选最优回答】
│      │      └── Beam Search / Lookahead + PRM【扩展与剪枝结合】
│      └── 4.4 与RL训练的结合【可替代或增强传统ORM方式】
│             ├── 对每一步进行即时奖励【减小奖励稀疏问题】
│             └── AlphaZero风格中充当Value网络【鼓励正确中间过程】

├── 5 Reasoning能力提升【模型自身推理水平】
│      ├── 5.1 Self-Improve / Revision【自我改写与多轮推理】
│      │      ├── 通过将错误回答并入上下文促使模型修正【隐式/显式修改输入分布】
│      │      ├── 训练阶段可并行收集修正数据【SFT或RL】
│      │      └── 多轮迭代会大幅增加token消耗【效率与效果折中】
│      ├── 5.2 STaR【Self-Taught Reasoner】
│      │      ├── 自动生成Rationale并判断正确性【可持续优化】
│      │      └── 正确解答反向加入训练数据【自举式训练】
│      ├── 5.3 SCoRE【Self-Correction via RL】
│      │      ├── 多回合回答 (y1, y2…) 的奖励对比【修正前后】
│      │      └── 采用PPO与reward shaping【阶段式优化】
│      ├── 5.4 Self-Critique / CriticGPT【引入批评者角色】
│      │      ├── 额外LLM作为批评器【对生成过程显式指出错误】
│      │      └── 将批评信息整合到生成模型【改进下一轮答案】
│      └── 5.5 Consistency & Verification【一致性和自验证】
│             ├── 引入多种思路提升稳健性【Best-of-N, Majority Vote, 等】
│             └── Step-Aware或Token-Level验证【颗粒度更精细】

├── 6 Self-Play与对抗式生成【数据自洽与迭代提升】
│      ├── 6.1 概念与动机【AlphaGo Zero启示】
│      │      ├── 不依赖人类标注,模型相互博弈产生数据【自对弈】
│      │      └── 适用于游戏/棋盘类任务,也可扩展到复杂推理【自生成数据】
│      ├── 6.2 rSTaR / Mutual Reasoning【小模型互相审查】
│      │      ├── 采用预先设计动作集简化搜索【避免巨大token空间】
│      │      └── 迭代判断一致答案或修正答案【提高结果可信度】
│      └── 6.3 OpenR等开源实践【结合MCTS与Self-Play】
│             ├── 训练阶段:利用MCTS和PRM标注产生数据【数据增广】
│             ├── 推理阶段:利用Beam/Tree Search或Best-of-N【组合策略】
│             └── 尚存大规模计算与工程优化挑战【Speculative Decoding等】

└── 7 结论与展望【知识收敛与下一步方向】
       ├── 7.1 Scaling Test-Time与模型自身能力需结合【双管齐下】
       ├── 7.2 小模型+推理搜索可在中等难度题上节省参数但难解高难度【取舍】
       ├── 7.3 自动化PRM标注与MCTS为解决复杂多步推理提供思路【过程监督】
       ├── 7.4 自我改写、对抗自博弈、多模型协同将成未来趋势【不断迭代】
       └── 7.5 工程落地尚需优化大规模计算与搜索开销【并行化与缓存管理等】

 


一、起点:预训练规模触顶与「推理阶段(Test-Time)扩展」的动机

  1. 预训练规模的瓶颈

    • 以 Llama 等模型为例,随着参数规模增大,预训练在通用语料上的收益递减,预训练的 Scaling Law(规模定律) 面临“天花板”。
    • 这驱动了研究者将关注点从“如何进一步放大预训练”转向“如何在**推理阶段(Test-Time)**投入更多算力来提升模型表现”,即 Scaling LLM Test-Time(推理阶段扩展)
  2. “推理阶段扩展”意味着什么?

    • 传统的推理:给定一个提示(prompt),模型一次性或顺序地生成答案,往往用 贪心(Greedy)或少量 Beam/Search 采样等常规方法,一次性地生成答案。

在这种模式下,你主要依靠的是“模型本身的巨大知识与能力”来一次性就把问题解对。

推理阶段扩展(Scaling Test-Time) 则不再止步于“一次性”生成答案,而是允许更多计算、迭代、搜索或验证:

  • 多路并行采样(Best-of-N):对同一个问题,让模型尝试生成 N 个不同的结果,然后通过某种评分标准(可能是一个验证器/判题器/外部测试)选出最优解。
  • 带验证器(Verifier)的搜索:先生成不同候选答案,用一个内置或外部的验证模块对这些候选答案进行打分筛选,不断迭代改进。
  • 自改进(Self-Improve):模型自己对自己的输出进行评估与反思,再次修改答案,如“先答一版,再根据反馈或自检做第二、第三轮修改”。

与其把更多算力用在“训练/模型规模”上,不如把算力放到“推理时的搜索/迭代过程”上,也许可以在某些(尤其是难度中等或较简单)任务上取得与“大模型+一次性推理”相当的效果。

“推理阶段扩展”简单来说就是:让模型在测试/推理时不仅做“一次性解码”,而是可以多轮生成、搜索、筛选、验证,或者配合其他外部工具(如判题器、编译器、搜索引擎等)迭代改进答案。


二、Test-Time 扩展的核心思路与常见手段

在推理阶段“增加算力/改进策略”的做法,核心是**Proposer(提议者) & Verifier(验证者)**框架下的各种搜索/重排策略。

  • Proposer(提议者)

    • 主要指大模型本身(或多模型体系中的“生成”部分)。
    • 负责在每一步“提出”一个可能的推理步骤或整个最终答案。
  • Verifier(验证者)

    • 可以是一个外部模块(Reward Model / 评分模型 / 判题器 / 符号检查器 / 真实环境执行器 等),也可以是另一个语言模型或同一模型在不同模式下对答案进行评估。
    • 用来评价 Proposer 的输出质量,打分或给出“对/错”判断。
    • 不仅可以对“最终结果”打分,也可对“中间过程”进行逐步评估。

这一框架能够把许多不同的推理阶段增强方法,统一到“(Proposer)做生成 + (Verifier)做评价+筛选”的闭环中去。

整体我们可以用“Proposer & Verifier”这一统一视角,将不同方法分为:

  • 只关注最终结果 (ORM / Outcome Reward Model) 的策略
  • 关注中间过程 (PRM / Process Reward Model) 的策略
  • 自改进 (Self-Improve) 这一更迭代化的策略

 


1. Proposer & Verifier 统一视角

  • Proposer(提议者):通常是语言模型本身,负责“生成”可能的答案路径;若是多步推理任务,就会依次生成步骤 (step by step)。
  • Verifier(验证者):对已有生成进行打分或判断,必要时回退错误步骤或筛选最优答案。
    • ORM (Outcome Reward Model):“结果级别”的打分模型,只关心最终答案对不对/好不好。
    • PRM (Process Reward Model):“过程级别”的打分模型,可对推理过程中每个步骤给出奖励信号。

 


2. 只看最终答案:Best-of-N、Best-of-N Weighted

Best-of-N(或 Rejection Sampling):一次性采样 N 条回答,用一个判别方式(如奖励模型或统计一致性)选出最优。

  • 做法

    1. 从同一个提示 (prompt) 出发,令 Proposer 并行或快速生成 N 条候选答案。
    2. 用 Verifier (通常只对最终答案做判分) 选出一个最高分 / 最优解输出。
  • 优势

    1. 易实现:只需做 N 次推理,然后统一打分或做简单判别/投票。
    2. 可并行:多条候选的生成基本上可以并行进行,不耽误时间。
    3. 对简单中等难度任务有效:多次随机采样往往能找到相对更好的解。
  • 劣势

    1. N 增大时收益递减:当 N 较小时,能显著提高正确率,但再大时边际收益不明显。
    2. 无法对过程中的“局部错误”进行精细纠正:只能在最终结果里挑优,没有指导生成过程的机制。

 

Best-of-N Weighted:不仅只选最高得分的单条,还可做多条候选分数的加权或投票来决定最终输出。

  • 做法

    • 生成 N 条答案后,不是只选最佳,而是对每个答案进行评分,根据分数做加权融合(例如投票、概率加权)来得到最终答案。
  • 典型场景

    • 当答案可以用某种“统计方式”集合(例如多次采样得到多个自然语言解释,再做少数服从多数的融合)。
    • 或者在抽象问答、情感分析任务中,把多条候选的预测结果加权后得到更可靠的输出。
  • 优劣

    • 类似普通 Best-of-N,但在决策时可能更精细;需要有合适的“融合”方法,且并不适用所有需要精确唯一解的任务(如数学题往往只有一个正确解)。

 


3. 关注中间过程:引入过程奖励模型 (PRM)

  • 为什么需要 PRM
    • 结果级别(ORM)常见问题:只在最终答案对/错时给反馈,反馈可能过于粗糙不精细;对复杂多步推理来说,不知道哪个步骤出了问题。

PRM (Process Reward Model) 的优势

  • 能对推理过程中的每个步骤给出更细粒度的打分,从而在搜索时“及时纠偏”。

  • 有助于在多步生成阶段筛选错误路径,保留正确路径,从而大幅减少无效探索。

 

PRM 数据如何标注?

  • 人工标注 (OpenAI “Let’s verify step-by-step” 风格):让人对每步推理做“正确 / 错误 / 可接受”打分,用于训练 PRM。

请添加图片描述

  • 自动化标注 (Math-Shepherd 思路):用蒙特卡洛采样/rollout 来估计当前 step 之后能走向正确答案的概率(reward-to-go)。

用 o1 Pro 生成 step-by-step 的标注:

请添加图片描述

 

  • 二分搜索式高效标注 (OmegaPRM):在每条解题链上二分查找首个错误 Step,减少大量 rollouts。

传统的方法标注太多了,每个 step 都需要 N 次 rollout。

做了一个假设:如果答案是对的,那么之前的过程就是对的; 如果当前步骤答案是错的,后面的步骤都是错的。

rollout 就像树搜索中的“向前模拟”,用于判断从当前状态(某一推理步骤)出发,最终能否得到正确答案、可能的奖励是多少。

在推理过程中从某个中间步骤继续往后生成完整解答、并评估结果的过程。

因此,在 OmegaPRM 中,为了找出“最先出错的具体步骤”,我们可以用“二分查找”的方式反复进行“部分推理 + rollout 验证”。

之所以这么做,是为了减少对整个解题链做全量多次生成的开销,用更少的测试就能定位问题出在哪一步。

 

论文:Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters

PRM 在推理时的常见搜索

  • Best-of-N + PRM: 仍是并行地生成 N 条不同推理链,但这次对于每条链不只看最终结果,而是可以用 PRM 对过程评分,最终选出过程分数最高的链。

  • Beam Search + PRM: 逐步扩展束宽,每一步都要用 PRM 给每个分支打分,然后保留 top-k 路径继续扩展,直到生成完整解;再选最高分作为最终答案。

  • Lookahead Search: 类似 Beam Search 的前瞻式搜索,也是一种“多步后评估”的策略。

    • 可以在每一步都做前瞻式多分支扩展、估算后续可能的最高得分,挑选最优走向。
    • 这种方法在推理层面更像 MCTS(蒙特卡洛树搜索)思路,过程奖励就像模拟中棋局评分一样。

 

适用场景与优劣

  • 适合

    • 多步推理、过程可能非常冗长的复杂任务(数学题、程序生成、逻辑推导等)。
    • 需要在中间就能识别关键错误,避免浪费大量计算在错误路径上。
  • 挑战

    • 需要有一个可靠的过程奖励模型,如果 PRM 自己也经常误判,就会把搜索带到错误方向去。
    • 训练 PRM 的高质量数据通常获取成本也不低。

 


4. 自改进(Self-Improve / Revision)的思路

为什么需要 Self-Improve?

语言模型单次输出容易埋下局部错误,加上缺乏中间纠偏环节,导致在复杂任务上难以保证答案正确性。

  • 单纯依赖搜索,若模型本身推理能力有限,还是无法触及高难度问题的真正正确解。
  • 搜索策略更多是“从头到尾”进行多次生成和筛选;
  • 自改进则偏向在生成后对已有答案进行后续修订或重写。
  • 有时模型一次性产物并不是“完全错误”,而是局部有 bug,借由“再思考 / 再校正”可以修正。
  • 自改进也可以看做是:反复调用 Proposer,每轮输入都带着前一次的输出与错误信息,让模型“对症下药”地修改答案。

人类做复杂决策时倾向于“分阶段测试+迭代修正”,而非一次性给出终极答案;这种模式可不断聚拢正确解。

高难度任务对“局部错误的容忍度”极低。

一旦多步链式推理中任何关键节点出错,就会导致后续推导全面崩溃;如果没有后续改正机制,最终结果几乎必然出错。

语言模型在一次性推理中难免犯下局部错误,高难度任务对错误的容忍度又极低;只有通过多轮修订与验证,才能在实践中有效地将正确率推高。

 

数据采集 & 训练

  • 有时要专门训练一个 “Revision Model”,学习如何在给定“错误回答”的上下文下进行改写或修正。
  • 输入是“初版答案 + (可选)错误标注 + 原始问题”,输出新的改进答案。

采集数据可结合并行 (parallel) 与顺序 (sequential) 的多次生成,筛出最优修正答案,用于 SFT 或 RL 训练。

  1. 让模型生成多条答案(可能包含错误)。
  2. 收集人类或自动判题器对错误点的反馈。
  3. 将 “(初版答案, 错误点, 原题)” -> “(正确答案)” 这一过程作为监督训练样本。
  4. 或者在 RL 场景下,通过多次探索与修正,以逐步提高最终得分。

 

  • 优点
    1. 克服小模型的“记忆不足”:如果它在第一版输出中体现出了部分思路,后续可以保留正确片段、修正错误处。
    2. 相同推理 FLOPs 下,往往比单纯多路采样 (Best-of-N) 效果更好:因为 Revision 是有针对性地修补错误,而不是纯粹随机多次输出。
  • 缺点
    1. 工程复杂度更高:需要有合适的“反馈机制”告诉模型哪里错了(Verifier 筛选规则),以及如何把旧答案嵌入新上下文再生成(如何将错误答案融入新 Prompt);“多轮对话式”场景更适用,但实现需要更好的 Prompt 设计和场景管理。
    2. 对高难度任务仍有瓶颈:如果问题本身需要远超模型容量的大量知识或高级推理能力,即使能不断修订,小模型也可能反复出错、难以真正摸到正确解。

 


三、小模型 + 大推理 VS. 大模型 + 普通推理

  1. 引入 Exchange Rate

    • 为了公平比较“小模型 + 增加 k 倍推理算力”与“大模型 + 普通推理”,需要给预训练和推理分别计入 FLOPs,求解“相同总计算量”下两者的表现差异。
  2. 结论

    • 对“中低难度”的题目:小模型只要投入足够多的推理算力(多次生成+验证+搜索+修正),可以逼近甚至超过大模型的贪心解码水平。
    • 对“高难度”题目:小模型的“推理阶段扩展”收益大幅下降;本身的推理能力不足时,完全堆叠推理算力仍无法弥补先天差距。

 


四、进一步:MCTS 与 AlphaZero-Like 搜索

当我们谈到“树搜索”在 LLM 推理中的应用时,会联想到下列主题:

  1. 蒙特卡洛树搜索 (MCTS)

    • 在围棋(AlphaGo、AlphaZero)中,MCTS 能基于“状态、动作、价值估计”等机制高效搜索。
    • 若把多步推理问题视为“从空白状态开始,一步步产出文字(动作),直到答案状态”,理论可引入 MCTS。
  2. AlphaZero-Like Tree Search 与 LLM

    • 不同之处在于语言生成的动作空间极大(往往是 Token 级别),导致计算代价极高;可能需做Step 级搜索人工限制动作空间
    • 也可结合 PRM (过程价值估计) 取代围棋中的价值网络;在推理中进行搜索回溯、剪枝。
    • 若再做 RL 训练 (PPO/Policy Gradient) + MCTS,就对应“AlphaZero-LLM”的思路(比如 OpenR 框架、AlphaMath 等)。
  3. 工程挑战

    • 超大动作空间的并行搜索需要精心的缓存管理(KV-Cache)、加速解码(Speculative Decoding)等。
    • 算力投入非常庞大;更多处于学术前沿或大厂内部探索阶段,尚未广泛普及。

复现 o1 的方案:

借助 MCTS 来在推理阶段搜索最优解答,并通过一个“Value 模型(或称 PRM/Reward/价值头)”对生成进行打分。

这与“AlphaZero-Like Tree Search”非常相似。

AlphaZero-Like MCTS + 一个Critic值模型,只不过将“围棋局面”换成了“LLM 逐步生成的文本状态”,把“赢/输”换成了正确/错误或reward。

MCTS(Tree Search) + (过程)价值模型来进行多步推理搜索。

 


五、PRM 在推理与训练中的多种用途

  1. 推理阶段

    • PRM + Beam Search、Best-of-N、MCTS 等,用来实时筛选“下一步生成”或最终答案;精细化过程监督比只看最终结果更可靠。
  2. 训练阶段 (替换 RLHF 中的 ORM)

    • 传统 RLHF 用人类偏好数据训练一个 Outcome Reward Model (ORM),对完整回答打分。
    • PRM 则提供每个中间步骤的奖励,更像强化学习里的 dense reward,有时能加速收敛并减少“错误信息的回传延迟”。
  3. 数据合成

    • 通过 PRM 对大量采样进行打分,把得分高的中间推理轨迹当作训练数据(自监督或 RL),实现自动数据增广。
    • 相比人工逐步标注正确/错误,自动化方法可 Scale,但需要可靠的自动标注(如 Math-Shepherd / OmegaPRM / 结合外部执行器等)。

 


六、Self-Play 与 Self-Improve

  1. 自我对弈 (Self-Play)

    • 类 AlphaGo-Zero:没有人类棋谱数据,完全通过模型自己对自己对弈产生数据并迭代训练。
    • 对 LLM 而言,“自我生成问题 + 自我解答”或“多模型交互”,可在代码/数学等有确定性检验场景中滚雪球式地产生训练数据。
  2. 自我修改 (Self-Improve / Revision)

    • 更聚焦“拿到错误回答后,如何在新 Prompt 中集成这些错误提示或思路,进而得到正确答案”;
    • 可以不使用 RL,而在推理时多轮迭代生成(修正),或专门训练“Revision Model”。

 


七、OpenR 框架与综合视角

链接:https://github.com/openreasoner/openr

  • OpenR:一个开源的 LLM 高级推理研究框架,尝试把“过程奖励(PRM)+ 搜索 + 自我迭代训练”结合起来。
  • 训练阶段:
    1. 用 MCTS / PRM 做数据增广(收集每个 step 的“正确性/成功率”),得到更多高质量步骤级监督;
    2. 训练出 PRM (value function);
    3. 对语言模型则可采用 PPO/Policy Iteration,在搜索生成的数据基础上进一步训练。
  • 推理阶段:
    1. 也可以结合 PRM 指导“哪条解题路径”继续扩展;
    2. 对于最终多条候选答案,则可用 Majority Vote / RM-MAX / RM-Vote 等方式选出最佳。

 


八、整体结论与思考

  1. Test-Time 扩展(搜索、并行采样、迭代修正) 对中等难度问题能带来显著收益,甚至可在相同 FLOPs 下让“小模型 + 大推理”超过“大模型 + 贪心”。
  2. 纯推理扩展的极限:若任务过难,模型本身的推理能力不足时,光靠推理阶段搜索/修正也无法弥补差距。
  3. 过程奖励(PRM) 在数学、代码、程序执行等确定性场景有显著优势,极大提升了搜索的效率和可靠性;但需要精巧的数据标注或自动标注方案来支持。
  4. MCTS/AlphaZero-Like 思路虽然在理论上令人兴奋,但在自然语言生成中动作空间极大,真实落地面临高昂算力和工程难度,需要探索各种加速/剪枝/并行技术。
  5. 自改进(Self-Improve / Self-Play) 是另一条重要路径:借助迭代式或多模型交互,用自生成数据不断细化模型推理能力,摆脱对人工监督的强依赖。
  6. 从研发角度看,这些方法通常既可用于推理阶段(提升场上表现),也可用于训练或数据增广(提升模型本身实力),两者往往结合更佳。

 


4 种解法拆解

                  ┌── 子解法 A: 并行采样 (N 条候选)
                  │        ↓
用户问题 --> 语言模型 -->  验证/打分 (ORM/PRM) --> 选出最优回答
                  │   \
                  │    └─> ① Step-wise Beam Search + PRM (子解法 B1)/ \
                  │        /   \ Lookahead Search or其他剪枝 (B2)
                  │       ↓
                  │   得到若干条多步路径(选最优)
                  │
                  └── 子解法 C: 多轮revision自修正
                          ↓
                     (可结合 A、B 的采样或搜索,进行多次迭代修正)

[可选] 子解法 D(MCTS/AlphaZero-like Search + 自对弈/强化训练)
- 训练时:搜索结合价值/策略网络,不断迭代
- 推理时:执行 MCTS 进行深度扩展

从整体来看,“解法”可概括为:在预训练规模触顶时,通过「在推理阶段(Test Time)对语言模型进行多种扩展和改进」来提升复杂推理能力

为便于拆解,我们将这个大解法拆成以下四大子解法(每个子解法又可以再细化成更小的子步骤,直到不可继续拆解):


子解法 A:纯增加推理计算量(“多样采样 + 验证”)

  • 对应特征:依赖现成的大语言模型,不重新训练或只做极少量微调;主要通过在生成时多次采样、然后用验证器筛选结果,来提高正确率。
  • 核心思路:一次提问时,从同一个 Prompt 并行生成 N 条答案(常称为 Best-of-N 或 Rejection Sampling),然后利用判别模型(Verifier)选出最优回答。
  • 为什么可行
    1. 语言模型的输出分布是随机的,多生成若干候选后,总有一部分答案可能更接近正确解。
    2. 验证模型(例如基于 Outcome Reward Model/Process Reward Model 的打分)可以帮助挑出更优回答。
  • 进一步细分
    1. Best-of-N / Rejection Sampling:生成 N 条完整答案,只在最后一步用奖励模型挑选。
    2. Self-Consistency:采样多条 Chain of Thought 答案,再统计投票出现频率最高的最终结论。
    3. Best-of-N Weighted:不仅看哪个答案得分最高,也可以看答案族的“加权”或“平均得分”来选出最后答案。
  • 举个例子:做一道数学题,设置 N=16 并行解码,最后仅将 16 条解答都传给一个判分器(ORM 或 PRM 的最后一步分数)来打分,最高分的就是最终回答。

进一步的子级拆解:

  1. Proposer(提议者):语言模型本体负责生成。
  2. Verifier(验证者):可以是 Outcome Reward Model (ORM) 或 Process Reward Model (PRM)。
  3. 如何聚合
    • 只看最后一步打分(Last-step 的奖励);
    • 或者看整条推理链各步奖励之和,再挑出累计最高者。

子解法 B:过程奖励模型(PRM)与搜索式推理(Beam Search / Lookahead / 等)

  • 对应特征:在多步推理中,每一步都可能对最终正确性产生影响,需要更密集的“过程级”奖励来指导搜索。
  • 核心思路
    1. 将问题拆解为多步解答,每步解答都用 PRM 来打分(即对当前解答步骤的“合理性”/“正确性”进行二分类或多分类),分数越高表示这一步走得更正确。
    2. 利用搜索(如 Beam Search、Lookahead Search),在每一步都根据 PRM 分数筛选或扩展最优路径。
  • 为什么可行
    1. 对于复杂推理而言,最终答案的对错并不足以指导整条推理链;过程中若走偏,最后一刻才给奖励会导致搜索开销大。
    2. 过程奖励可以让我们“剪枝”掉错误或不靠谱的中间步骤,缩小大规模搜索空间。
  • 进一步细分
    1. Beam Search + PRM:每个搜索层保留 top-k 条高分 partial 解答再往下展开,直到抵达终止。
    2. Lookahead Search:在当前步先 rollout k 步,得到未来 k 步的价值,再用该价值回传到当前节点决定扩展方向。
    3. OmegaPRM:针对如何自动化给每一步打标注的效率改进(如二分搜索找“首个错误步”)等。
  • 举个例子:数学题共 5 步推理,每一步都可并行采样 3 个子分支,然后用 PRM 打分,保留得分最高的若干条分支继续生成,最后在所有完整路径中再选出分数最高的一条做输出。

子解法 C:多轮 Revision / Self-Improve(自修正)

  • 对应特征:同一个模型在推理阶段就能自我质疑、修正错误,逐轮迭代地提高输出质量;或借助外部提示来修改回答。
  • 核心思路
    1. 先生成一个初步答案 (y₁),如果判定不够好,就把 (x, y₁) 作为新的输入上下文,再次调用模型生成修正后的答案 y₂;
    2. 这一修正过程可以多次叠加,每一轮都基于前一轮回答中暴露的错误信息来 refine。
    3. 若配合训练(如 SFT 或 PPO)让模型学会“如何读懂自身错误并改进”,则称为 Self-Improve (或 self-correction)。
  • 为什么可行
    1. 二次以上回答使得模型可以显式或隐式地“改变输入分布”,减少重复错误;
    2. 在一定程度上模拟了人类做题时的“回看、反思、再改写”的流程。
  • 进一步细分
    1. Sequential Revision:先顺序产生多轮回答 y₁ → y₂ → … → yₖ,每一轮都依赖上一轮答案。
    2. Parallel + Iterative:可并行产生多条解答链,各链再进行多轮自修正,然后用 Verifier 选最优结果。
    3. Self-Critique / CriticGPT:将“批评角色”与“生成角色”在对话里拆分,由批评者显式标注错误原因,生成者再修正。
  • 举个例子:如果第一次回答漏考虑某个约束条件,模型在第二轮就可以从“第一轮答案+提示错误点”出发,做针对性改写。

子解法 D:MCTS / AlphaZero-like 思路(结合自对弈 / RL 训练)

  • 对应特征:借鉴 AlphaGo、AlphaZero 这种“搜索 + 神经网络”范式,模型既可在训练时用自我博弈(Self-Play)不断迭代变强,也可在推理时先使用蒙特卡洛树搜索(MCTS)来决定最优路径。
  • 核心思路
    1. 将问题的多步推理视为一棵树,状态为“已生成的部分答案”,动作为“继续生成的下一步解答”。
    2. 借助 MCTS 的“多次模拟 + 价值回溯 + 策略更新”找到高价值路径。
    3. 在训练期间,模型策略网络(Policy)与价值网络(Value 或 PRM)互相促进;在推理阶段则执行若干次树搜索来提升精确度。
  • 为什么可行
    1. MCTS 在复杂决策空间里能有效探索,并避免局部贪心;
    2. 过程奖励或价值网络可以像 AlphaGo-Zero 一样提供“当前状态的胜率估计”,从而有效扩展优质节点。
  • 进一步细分
    1. AlphaGo 式:先基于外部示例(相当于人类棋谱)做初步监督,再在搜索中逐渐优化;
    2. AlphaZero 式:纯自对弈起家,多轮迭代增强;
    3. rSTaR / OpenR:实际工程实现中往往需要减少动作空间(比如只在“step”级别进行搜索,而非“token”级别)。
  • 举个例子:给定一个推理任务可以走 5 步;每步可以选 3 种思路(动作)。MCTS 反复模拟→ 回溯更新每个节点的价值 → 最终选出在搜索树中综合价值最高的整条推理路径。这种自对弈式数据还可继续拿来做 RL 训练,让策略网络更“懂”如何选对分支。

  1. 子解法之间的逻辑链条与结构

整体上,这四类子解法更像一个“网络”式的选择树,而不只是单线的链式流程。

  • 子解法 A(纯增加并行采样 + 最终挑选)是最直观、最容易上手的做法;
  • 子解法 B(PRM + 搜索)实际上可以接在子解法 A 之后,用更精细的过程级验证来剪枝不良路径;
  • 子解法 C(多轮 Revision)则可与 A、B 并行或结合,即既能在每一轮生成中多样采样,也能对每一步做 PRM 评估,并在不满意时再回到模型进行“修正扩展”;
  • 子解法 D(MCTS / AlphaZero-like)则可视为在子解法 B 的搜索思路上,进一步引入 RL 和自对弈来迭代强化模型本身。

  1. 分析是否有隐性方法(关键步骤没有直接被命名,但在解法中扮演重要角色)

在以上所有子解法中,往往会出现一些**“并未在文献标题或常规名词”中直接出现,但确实起重要作用的做法**。

这里列举几个常见的“隐性方法”:

  1. 动态 Prompt 改写

    • 在子解法 C(Self-Improve)中,第二轮生成时并不仅仅是简单地“在旧回答后再写一句”。往往我们会对 Prompt 进行更有针对性的改写,如明确提示上一轮错误原因或让模型自我思考应该如何修正。这种提示工程(Prompt Engineering)往往是隐含的。
  2. Answer Aggregation 策略

    • 当 N 条答案相似度很高时,如何合并成一个最终答案?可能会用“加权投票”或“只要大多数一致就选这一项”之类,这些聚合步骤在论文中常常是一两句话带过,但对实际应用很重要。
  3. 解码加速手段

    • 大规模并行的 Best-of-N、Beam Search、或 MCTS 都对推理速度有额外开销。实际落地时,可能会用到像 Speculative Decoding、分块 KV-Cache 复用、或者 VLLM 等库来加速大批量解码。很多时候这些工程手段在论文里并未详述,但在大规模部署中至关重要。
  4. 过程标签的自动化生成

    • 比如 Math-Shepherd / OmegaPRM 中,利用蒙特卡洛 Rollout 或二分搜索去估计每一步正确率,这些自动标注步骤(用不同配置的并行采样)往往非常繁琐,但在文章中却被一两句概括为“自动得到 step-wise label”。这是一个典型“隐形方法”。

  1. 分析是否有隐性特征(不在问题或条件中,而是解题中间才显露)

许多“特征”只有在对推理链进行观察、或在搜索过程中看到某些现象时才会被我们意识到:

  1. 推理难度分级

    • “题目难度”其实并非题面直接告诉我们,而是通过大量采样发现:LLM 对某些问题 100 次采样都无法答对,才推断这是模型所定义的“难题”。这可被视为一个“隐性特征”:它并不写在问题描述里,而是通过多次试错才显露。
  2. 路径一致性

    • 在过程奖励模型 (PRM) 的多步验证里,如果第 k 步就出现了明显矛盾,后续步骤也大概率出错。这在搜索空间中是“隐性剪枝特征”:不在明面条件(比如题目)出现,却在生成过程中发现“已矛盾应终止扩展”。
  3. PRM/ORM 对输入的敏感性

    • 有时同一道问题,不同形式的提示(例如额外的解释文本、不同格式的中间步骤)会显著改变 PRM/ORM 的打分。这些差异并非题目本身的显式设定,而是推理中间过程对模型分数产生的“隐性影响”。

  1. 方法可能存在哪些潜在局限性

  2. 计算/资源开销大

    • Best-of-N、Beam Search、MCTS 都会增加推理时的 Token 级生成量。一旦 N 或搜索深度很大,推理延迟和 GPU 算力都会成倍增加。
  3. 收益递减

    • 对特别难的任务,纯粹堆叠推理算力(子解法 A 或 B)也未必能显著提升准确率;若模型本身 Reasoning 能力不足,再多采样也可能都错。
  4. 标注或验证器质量

    • 如果使用 PRM,需要训练过程级奖励模型;但过程级别标注本就十分昂贵或难以自动化(虽然有 Math-Shepherd/OmegaPRM 等技巧,也依旧很耗时)。标注质量不足,会导致 PRM 无法准确筛选。
  5. Prompt 稳定性

    • 自修正 (Self-Improve) 强烈依赖模型对自己错误的“觉察力”,有时可能出现“越改越糟”或再次重复同类错误的情况。Prompt 稍微改写,可能导致答案完全变动。
  6. 策略空间过大

    • MCTS/AlphaZero-like 方法如果直接在 token 级展开,会面临天文数字的分支,必须要做降维或动作空间离散化,否则搜索难以进行。

综上所述,“Scaling LLM Test Time + 搜索式推理 + 自修正 + RL 训练”构成了一个大的“多路并行”网络解法,不同子解法之间可以组合、互补或为对方提供数据和反馈。

  • 子解法 A(纯多样采样 + 验证)最易上手,但在复杂推理上潜力有限;
  • 子解法 B(PRM + 多种搜索)可更精准筛选,但需要过程奖励建模;
  • 子解法 C(Revision / Self-Improve)提高了模型在推理阶段的动态纠错能力;
  • 子解法 D(MCTS / AlphaZero)将以上方法进一步放大,允许训练和推理的搜索循环结合,构造自对弈式迭代进化。

在实际应用中,我们往往会综合这些思路,并辅以必要的“隐性方法”(如 Prompt 改写、解码加速、自动标注等),来根据任务的规模与难度做取舍。

每种方法也都伴随着相应限制,主要集中在算力、标注和搜索空间规模这三大方面。

 


o1 医疗:树搜索

论文:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning

DeepSeek-R1 所谓“慢系统”,本质是让模型自然写出超长推理链 (因为 RL 回合数够多,Reward 主要看最终对错+格式),相当于一种纯后验策略:一边生成 COT,一边计算结果能不能通过,让模型在训练中逐渐形成了“先多想一会再回答”的习惯。

过程里会自然涌现出非常长的 CoT、reflection、检测错误等高级推理特征。

其训练方式不依赖过程级别奖励 PRM,也不做 MCTS + Value 的自我搜索(上文方法)。

请添加图片描述

请添加图片描述

  1. 训练思路与适配度
    • DeepSeek-R1HuatuoGPT-o1 均属于“让模型直接学习多步推理链”的思路,前者靠大规模 Outcome-based RL,后者靠“生成正确思路+Verifier”的多阶段监督与RL。
    • Baichuan-M1-14B 强调的是“多阶段数据+ELO/TDPO/PPO”全流程优化,通过分段式的训练与对齐,从语言通识到医学进阶,层层递进并注重思维链优化,是更“系统化”的多步推理实现。
    • O1 Replication 偏向“推理时增强”,适合直接拿已有较强模型做少量改动,快速提升答案质量;若底层模型弱,就收效有限。
    • MCTS+过程价值 理想最优,但几乎没有大规模工业化先例,且对医疗数据、搜索框架、实时评估等要求过高。

 

  1. 数据需求与实现难度
    • DeepSeek-R1 最依赖大规模、可自动判对错的数据,且需要庞大算力来支撑RL反复训练。
    • HuatuoGPT-o1Baichuan-M1-14B 均在可控规模的医疗数据上即可(几万~十万量级),但需保证数据或偏序对(preference pairs)质量、训练流程成熟。
    • O1 Replication 在训练上几乎“零改动”,但基础模型需要先有足够的医疗知识。
    • MCTS+过程价值 在定义过程Reward与搭建搜索系统上,难度极高。

 

  1. 推理性能与可解释性
    • DeepSeek-R1 若训练充分,推理性能可极高;但需要保证自动判分“对错”足够准确。
    • HuatuoGPT-o1 已在多项医疗基准测试中表现不俗,一次生成的长链思路也易于解释;在真实诊断场景中有一定可行性。
    • Baichuan-M1-14B 通过多阶段的思维链优化与偏好对齐,兼顾推理的连贯性和用户偏好;在通用与医疗场景都有较好表现,且仅 14B 参数就能体现较强效果,推理效率和可解释性兼具。
    • O1 Replication 多次抽样投票虽能提升准确率,但推理时开销上升,长思路的合理性也要看底层模型能力。
    • MCTS+过程价值 理论上可最优且过程可解释,但在医疗复杂度和实现难度面前,尚难大规模落地。

http://www.kler.cn/a/520321.html

相关文章:

  • Linux进程概念:【环境变量】【程序地址空间】
  • uva 1354 Mobile Computing
  • 「 机器人 」扑翼飞行器混合控制策略缺点浅谈
  • 使用云服务器自建Zotero同步的WebDAV服务教程
  • C++多线程习题:非原创增加注释(02-2)
  • 电脑无法开机,重装系统后没有驱动且驱动安装失败
  • 【Elasticsearch】ANN解决了kNN的什么问题?
  • mysql索引。。
  • Effective C++ 规则49:了解 new-handler 的行为
  • C语言之图像文件的属性
  • 60.await与sleep的原理分析 C#例子 WPF例子
  • 八股文 (一)
  • GD32的GD库开发
  • 删除全表数据sql
  • 企业微信SCRM开创客户管理新纪元推动私域流量高效转化
  • Linux 命令行十六进制编辑器:高效操作二进制文件
  • 解决老游戏不兼容新系统win10win11问题
  • MFC结构体数据文件读写实例
  • 使用飞书群机器人监控服务器GPU使用率
  • 动手学图神经网络(3):利用图神经网络进行节点分类 从理论到实践
  • 理解C++中的右值引用
  • ui-automator定位官网文档下载及使用
  • 第25篇 基于ARM A9处理器用C语言实现中断<一>
  • 无人机微波图像传输数据链技术详解
  • STM32使用VScode开发
  • XML外部实体注入--漏洞利用