【大模型Wiki】18 · 推理模型与强化学习
推理模型与强化学习:从 CoT 提示到 RLVR
大模型 Wiki · 补充篇 14 | 2026-09 整理
如果说 2020–2023 的主旋律是"预训练 Scaling Law",那 2024–2026 的主旋律就是推理时间计算(test-time compute):让模型想得更久、更强,并且用强化学习把这种能力练出来。
这一转变的底层逻辑非常朴素:预训练把"世界知识"压缩进了权重,但"如何正确思考一个问题"并不能仅靠 next-token 预测学会——它需要在"试错—反馈"的循环里被强化。于是 2024 年 OpenAI 用 o1 证明了一条新路:用强化学习(RL)直接优化"思考过程"本身,让模型在回答前先产出一长串可验证、可纠错的思维链(Chain-of-Thought, CoT),再把思考结果收敛成最终答案。
本篇沿着"提示式 CoT → 搜索式推理 → RL 训练长 CoT → 可验证奖励 RL → agentic RL"的脉络,把推理模型的方法学、训练算法(重点是 GRPO)与工程形态讲透,并在末尾给出实践小结。
一、时间线
| 时间 | 事件 | 意义 |
|---|---|---|
| 2022 | Chain-of-Thought 提示 | 上下文里"想一步" |
| 2023 | Self-Consistency、ToT | 采样/搜索式推理 |
| 2024-09 | OpenAI o1 发布 | 首个商用"思考型"模型,RL 训练长思维链 |
| 2025-01 | DeepSeek-R1 开源 | RLVR 路线跑通且开源,行业引爆点 |
| 2025 | Claude 3.7 混合推理、QwQ-32B、Gemini Thinking | 思考/快速双模式成标配 |
| 2025-08 | GPT-5(内置路由) | 统一快模型与推理模型 |
| 2026 | GPT-6 Astra、DeepSeek-V4、Kimi K3 | RL 压榨到极致,agentic RL 成主战场 |
把这张表读成一条"能力释放曲线"会更清楚:
- 2022 的 CoT 提示只是"告诉模型你该一步步想",思考质量取决于模型已有的能力,没有人专门去训练它"想得好"。
- 2023 的 Self-Consistency / Tree-of-Thought(ToT)把推理从"一次性生成"变成"多次采样 + 搜索/投票",属于推理时的算法增强,不改动模型权重,但显著提升了数学与谜题类任务的准确率。
- 2024 的 o1第一次把"长思考"烧进权重:模型在训练阶段就被 RL 教会"先展开长 CoT、再给答案",推理时只需设一个预算,模型自己决定想多久。
- 2025 的 R1把整套方法开源(含训练配方与蒸馏小模型),直接把"推理模型"从奢侈品变成人人可复现的基线能力。
- 2026的竞争焦点已经不是"会不会想",而是"想完之后能不能在真实环境里把事办成"——这就是 agentic RL。
一句话:CoT 是"被提示出来的思考",o1/R1 是"被强化出来的思考",agentic RL 是"在真实世界里被验证的思考"。
二、RLHF → RLVR:奖励信号的革命
推理模型能跑通,关键在于奖励信号从"人类主观偏好"换成了"客观可验证结果"。这一节先讲清楚旧范式为什么不够,再讲新范式为什么有效。
2.1 RLHF 的困境
传统 RLHF(基于人类反馈的强化学习)用奖励模型(reward model,RM)打分——RM 本身是用人类偏好标注训练出来的一个神经网络。第 02 篇已述其三阶段流程(SFT → RM 训练 → PPO 对齐)。它在"有用、无害、诚实"这类主观维度上效果很好,但放到推理场景有三个硬伤:
- reward hacking(奖励黑客):RM 是个可欺骗的神经网络。模型会学会生成"看起来符合人类偏好"的话术(比如更啰嗦、更谄媚、更爱用列表),而非真正更好的答案。一旦优化步数够多,策略会钻 RM 的空子,真实质量反而下降——这就是著名的"Goodhart 定律"在 RLHF 上的体现。
- 标注昂贵且不可扩展:每一条偏好标注都要人看、要比对,数学/代码这种"对错一眼可判"的任务也要人标,成本极高,且难以覆盖海量题目。
- 主观标不准:对"哪个回答更有洞见",不同人差异很大;RM 学到的往往是"平均人类偏好",会拉低尖端推理能力(聪明人觉得对的,普通人未必觉得好)。
因此 RLHF 适合"对齐价值观",但不适合"提升硬推理"。推理需要的是"对错分明、即时反馈、不可作弊"的信号——这就是 RLVR。
2.2 RLVR(可验证奖励强化学习)
RLVR(Reinforcement Learning with Verifiable Rewards)对答案可自动验证的任务(数学、代码、逻辑、形式化证明),直接用规则/测试通过率当奖励,彻底绕开奖励模型:
奖励 = 答案是否正确(数学:最终结果比对;代码:单元测试通过)
具体落地时,奖励通常由两部分组成:
- 准确性奖励(accuracy reward):数学题把模型最终答案解析出来(通常用
<boxed{...}>等定界符抽取),与标准答案字符串比对;代码题把生成代码放进沙箱跑隐藏测试用例,按通过率给分。 - 格式奖励(format reward):鼓励模型把"思考"包在固定标签(如
<think:6124c78e>...</think:6124c78e>)里、"答案"放在固定标签里,便于解析与工程化。格式奖励是可验证的(正则即可判),不算主观。
RLVR 为什么能解锁推理能力:
- 无法被"讨好"式 hacking(几乎):模型没法靠话术骗过"单元测试"或"数值比对"——要么对要么错。这把优化目标钉死在"真正做对题"上。
- 零人工标注、无限供给:只要有一堆带标准答案/测试用例的题,奖励就能自动产生,数据规模不再受人力约束。
- 信号稠密且即时:每道题一发完就有对错,比"人类偏好"这种噪声大、延迟高的信号干净得多。
注意措辞"几乎":RLVR 仍有盲区。比如模型可能记住某道题的特定测试用例、或把答案写成"恰好能通过正则"的形式而不真懂。所以工业界通常会叠加"测试集多样性 + 去重 + 格式鲁棒性"等工程护栏。
- GRPO(Group Relative Policy Optimization,DeepSeek 提出):同题采样一组,组内相对优势代替 critic,省显存省算力,已成事实标准;后续变体 GSPO(阿里)、CISPO(MiniMax)、SAO(智谱)各有取舍。
2.3 从"会考试"到"会干活":agentic RL
2026 年 RL 的新战场是长程任务:在真实环境(终端、浏览器、IDE)里多步执行,用任务完成度做奖励。Grok 4.5 用 Cursor 开发会话轨迹做异步 agentic RL;GPT-6 Astra 的 OSWorld/AutomationBench 成绩就是这条路线的产出。要点:多轮环境交互、稀疏奖励、轨迹过滤(trainability filtering)、熵控制防止模式坍缩。
和"做题"相比,agentic RL 难在三点:
- 奖励极度稀疏:写一个功能、修一个 bug,往往是几十上百步操作后才有"测试通过/任务完成"这一条信号,中间全是 0 奖励。如何在稀疏信号下不训崩,是核心难题。
- 轨迹可训练性过滤(trainability filtering):不是所有失败轨迹都有学习价值。一条"第一步就跑偏、后面全错"的轨迹,梯度噪声极大;工程上会过滤掉"太简单(全对,无梯度)"和"太难(全错,梯度爆炸)"的样本,只保留"有得学"的中间难度轨迹。
- 熵控制防模式坍缩:长程任务里,策略容易过早收敛到某一种"看起来安全但低效"的固定套路。需要保熵(entropy regularization)鼓励探索,又不能在推理任务上抖得太厉害——这是 2026 年各家的调参重心。
2.4 GRPO 算法原理:为什么去掉 critic
GRPO 是 R1 能够"开源且可复现"的算法基石。要理解它,先回顾 PPO(RLHF 用的主力)。
PPO 为什么重:PPO 是 actor-critic 架构,除了策略模型(policy / actor)外,还要训练一个价值模型(critic / value)来估计每个状态的价值 V(s),用作优势函数 A = R - V(s) 的基线(baseline)。价值模型要和策略模型一样大,于是训练时显存与算力接近翻倍;而且价值模型本身也要训准,不准就会带偏优势估计。
GRPO 的核心洞见:对"同一道题"采样一组(group)回答,用这组回答奖励的均值当基线,组内相对高低就是优势——根本不需要单独的价值模型。
对 prompt x:采样 G 条回答 {o_1 ... o_G}
计算每条奖励 {r_1 ... r_G}
组内基线 mean = (Σ r_i) / G
组内标准差 std = sqrt(Σ (r_i - mean)^2 / G)
优势 Â_i = (r_i - mean) / std # 组内相对优势,天然去中心化
为什么"组内相对"就够?因为强化学习要的是"哪些回答更好"的比较信号,而不是"绝对有多好"。同一道题的 G 条回答共享同一上下文,彼此可比;用组均值做基线,等价于用一个"随 prompt 变化的、零参数的条件基线",既消除了奖励量纲差异,又省掉了 critic。
GRPO 的目标函数(带 KL 约束,防止策略离参考模型太远而跑飞):
L_GRPO = - E_x [ (1/G) Σ_i min( ρ_i · Â_i, clip(ρ_i, 1-ε, 1+ε) · Â_i ) ] + β · KL(π_θ || π_ref)
其中 ρ_i = π_θ(o_i | x) / π_ref(o_i | x) # 新旧策略概率比,PPO 式裁剪
Â_i = (r_i - mean(r)) / std(r) # 组内相对优势
β = KL 惩罚系数,把策略拉在参考模型附近
工程收益小结:
- 省显存:去掉一个和策略同规模的 critic,训练显存常降 30–50%。
- 省算力、更稳:少一个要训准的网络,梯度噪声更小,超参更友好。
- 天然适配 RLVR:RLVR 的奖励是 per-sample 的标量,正好喂给"组内标准化",无需价值网络插值。
也正因为 GRPO 把"推理 RL"的工程门槛砍掉一大截,R1 才能把完整配方开源,带动后续 GSPO(阿里,对概率比做裁剪的位置更稳)、CISPO(MiniMax,裁剪重要性采样权重防离群)、SAO(智谱)等变体百花齐放——它们都在"组内相对优势"这同一个骨架上做局部改良。
伪代码实现见下方"实现过程"小节。
2.5 奖励建模的工程实践:格式 + 准确性 + 稳定性
工业界把 RLVR 奖励落地的几个经验:
- 答案抽取要鲁棒:数学题不能只比"最后一个数字",要解析
<boxed{}>、处理单位/格式;代码题要把"隐藏测试"与"可见测试"分开,防止过拟合可见集。 - 格式奖励要轻:格式奖励权重过高会诱导"空话套格式";常见做法是格式只占小比例,主力仍是准确性。
- 重复/长度惩罚:长 CoT 容易陷入"换汤不换药"的重复,需要加重复 n-gram 惩罚或长度惩罚,避免模型用"写更长"骗取探索。
- KL 系数要调:β 太大模型不敢探索、收益上不去;太小则分布漂移、生成乱码。R1 系多在训练中逐步退火 β。
# 一个最小可用的 RLVR 奖励函数(伪代码,带中文注释)
def rlvr_reward(question, model_output, gold=None, tests=None):
# 1) 抽取思考与答案部分
think = extract_tag(model_output, "think") # 思考内容(仅记录,不奖励)
answer = extract_tag(model_output, "answer") # 最终答案
acc = 0.0
if gold is not None: # 数学/客观题:结果比对
pred = parse_answer(answer)
acc = 1.0 if normalize(pred) == normalize(gold) else 0.0
if tests is not None: # 代码题:跑沙箱测试
acc = run_tests(answer, tests) # 返回 0~1 的通过率
fmt = 0.1 if (think and answer) else 0.0 # 轻量格式奖励
return acc + fmt # 主信号是 acc
三、思考模式的工程形态
推理能力进了权重,接下来是"怎么把它交到用户手里"的工程问题:模型该想多久、怎么想、想崩了怎么办。
3.1 混合推理
Claude 3.7 首创"一个模型两种模式":简单问题秒回,难题进入思考模式展开长 CoT。现为主流设计。
混合推理的本质是在同一个权重里塞下"快思考"与"慢思考"两套行为,靠一个开关或系统提示切换:
- 快速模式:直接出答案,延迟低、成本低,适合闲聊、补代码、格式转换。
- 思考模式:先
<think:6124c78e>长链再<answer>,适合数学、竞赛题、复杂多步规划。
为什么"一个模型两种模式"比"两个独立模型"好?因为共享权重让快/慢模式互相借力:思考模式里学到的推理能力,会悄悄提升快速模式的准度;而快速模式的高频使用数据,又能反哺思考模式的表达。GPT-5 之后更是内置实时路由器,由模型自己判断"这题要不要想",用户无感知。
3.2 思考预算(thinking budget)
控制推理 token 上限/强度。GPT-6 Astra 提供 low→max 五档推理强度,用户按任务难度权衡成本——思考深度本身成了定价维度(见第 15 篇"推理速度商品化")。
思考预算的工程实现通常有两种:
- 软预算:在系统提示里写"请用不超过 N 个词思考",靠模型自觉;实现简单但不可控。
- 硬预算:推理时统计
<think:6124c78e>内 token,超过上限强制截断并进入"收尾"阶段;更可控但可能截断在关键步。
预算档位对应的其实是"test-time compute 的旋钮":low 档省 token 但易错,max 档贵但准。对用户而言,"这道题值不值得让模型多想"成了一个需要自己做的成本决策——这正是推理商品化的核心。
3.3 有效的技巧
- 让模型"再想一步"(追问、反思、自我验证)通常有收益,但要防过度思考(简单任务上浪费 token,甚至自我怀疑翻车)。
- 结构化输出 + 工具调用穿插思考:代码类任务"写代码 → 跑测试 → 修错"的外部反馈循环,比纯内部 CoT 更有效。
补充几条实战经验:
- 追问比一次到位更稳:对难题,先要"草稿",再要"定稿",往往比一次生成终稿更准(本质是把 test-time compute 显式分段)。
- 把验证外包给工具:数学让模型"先给解法,再代入检验";代码让模型"写完立刻跑测试"——外部可执行反馈比模型自我感觉可靠得多。
- 温度与思考预算联动:难题用低温度保一致性,简单题用高温度保多样;思考预算高时温度可略高以鼓励探索。
3.4 思维链长度与效果的关系
"想得越久越好吗?"——经验上正相关但有拐点。
- 上升段:在任务难度适中时,更长的 CoT 让模型有机会展开子目标、验证中间结论,Pass@1 随长度稳定上升。这也是 test-time scaling 的直观证据:同样的权重,给它更多 token,它就更强。
- 平台段:到达某个长度后收益递减,再加 token 只是换种说法重复,准确率不再涨。
- 下降段(过度思考):过长时模型会"自我怀疑"——先得出正确结论,又在后续步骤里反复推翻、绕回错误分支,反而把对答案改错。R1 系模型在简单题上尤其容易"想太多翻车"。
所以"长度缩放"不是无脑拉长,而是按难度配预算:难题给足,简单题收紧。这也是思考预算(3.2)存在的意义。
准确率
│ ╱─────────╲
│ ╱ ╲___ 下降(过度思考)
│ ╱ 平台(递减)
│ ╱ 上升(test-time scaling)
│╱
└──────────────────────────► CoT 长度
3.5 反思与验证机制
推理模型最迷人的涌现行为,是会"回头看":
- 回溯(backtracking):当某条推导走死,模型会在 CoT 里写"等等,这里不对",然后换个方向——R1-Zero 训练中期自发出现,被称为"aha moment(顿悟时刻)"。
- 自我验证(self-verification):在给出答案前,模型会重算关键步骤、代入检验、交叉核对约束。
- 多视角校验:难题里模型可能"先假设 A 推一遍、再假设 B 推一遍",最后选更自洽的。
工程上可以显式强化这些机制:
- 在 RLVR 奖励里加"是否做了验证步骤"的轻奖励;
- 用提示引导"请先列出验证方式,再作答";
- 更彻底的是"生成 + 独立验证两模型"或"采样多解投票"(Self-Consistency 思路的 RL 版)。
但要警惕:验证本身也会被 hack——模型可能写出"看似在验证"的空话。验证的有效性最终仍要靠可验证信号的闭环(测试通过、结果一致)来保证。
四、与蒸馏的分工
第 11 篇已详述,这里给结论:
- RL 负责"创造":把模型能力推到教师之上(R1 的涌现、Astra 的 FrontierMath 97.6%)。
- 蒸馏负责"普及":把 RL 习得的能力以 1/100 成本传给小模型(R1-Distill 系列)。
- 两者的组合是当前所有前沿实验室后训练管线的骨架。
把分工说得更细:
- RL 是"能力上限的拓荒者":只有大模型(数十亿激活以上)才喂得动长程 RL——它要试错、要探索、要扛住稀疏奖励。RL 产出的不是"一个答案",而是"一种会思考的权重分布"。
- 蒸馏是"能力的搬运工":用小模型去模仿大模型(教师)在难题上的思考轨迹(CoT 蒸馏),让 7B/14B 级别模型也能"学着像大模型那样想"。代价极低——一次 SFT 即可,无需 RL 的昂贵采样。
- 互补而非替代:蒸馏的小模型上限被教师锁死(不会超过教师),但 RL 又依赖大模型才跑得动。于是"大模型 RL 拓荒 → 蒸馏下沉到小模型"成了标准闭环。R1-Distill 系列正是把 R1(671B)的推理行为蒸馏进 Qwen/LLaMA 系的 1.5B~70B 小模型,让消费级显卡也能跑强推理。
实践提示:如果你只有单卡/小集群,别硬上 RL——直接用 R1-Distill 类权重做 SFT 微调,性价比远高于自己训 RL。
五、R1 训练流程全解:从 R1-Zero 到多阶段流水线
这是本篇的方法学高潮。DeepSeek 把"推理 RL"拆成两条路线公开,理解它能吃透整代推理模型的训练哲学。
5.1 R1-Zero:纯 RL,不做 SFT
R1-Zero 的起点是 DeepSeek-V3-Base(基座,未经指令微调),直接上 GRPO:
DeepSeek-V3-Base
│ 直接 RL(GRPO + RLVR 奖励:准确性 + 格式)
▼
R1-Zero ← 没有任何 SFT 冷启动
它的惊人之处在于:不教任何"怎么思考"的示范,模型自己从"对错反馈"里涌现出了长 CoT、反思、多步规划。这证明"会推理"可以由 RL 端到端逼出来,而非必须先有人类示范。
但 R1-Zero 有两个可见缺陷,促使了 R1 的诞生:
- 可读性差:思考过程语言混杂、格式乱,人类难读。
- 语言混杂:中英混杂、符号乱飞,不利于对齐与落地。
5.2 R1:多阶段 SFT + RL 流水线
R1 用"先给少量示范、再 RL、再回收、再对齐"的四段式,既保留 R1-Zero 的能力,又修掉可读性:
① 冷启动 SFT:用几千条"高质量长 CoT"示范微调基座
↓
② 推理 RL(GRPO):在数学/代码上强化,奖励同 R1-Zero
↓
③ 拒绝采样 SFT:用训练好的策略采样大量回答,只保留正确且可读的,
混合通用能力数据(写作/角色/安全)做一轮 SFT
↓
④ 通用 RL(对齐):在推理能力之上叠加有用性 + 安全性奖励,
输出最终 R1
各阶段意图:
- ① 冷启动:给模型一个"好思考长什么样"的初始模板,避免从零探索的混乱;少量即可(远少于 RL 所需数据)。
- ② 推理 RL:把能力推到顶(对应 R1-Zero 那一步,但有更好起点)。
- ③ 拒绝采样:用"策略自己生成 + 自动筛选正确答案"的方式,廉价地造出大批高质量 SFT 数据,顺便把写作/安全等通用能力混进来,避免"只会做题"。
- ④ 通用 RL:最后用含安全性/有用性的奖励做整体对齐,压住越权与有害输出。
这条流水线揭示的方法论:RL 负责"能力",SFT(冷启动 + 拒绝采样)负责"形态与可读性",通用 RL 负责"对齐"。三者各管一段,比"一把梭 RL"更可控、可调试。
5.3 实现过程:GRPO 一步训练(伪代码)
把 2.4 的算法落成可运行骨架:
import torch, statistics
# GRPO 训练一步(伪代码,带中文注释)
def grpo_step(policy, ref_policy, prompts, reward_fn, G=8, beta=0.0, eps=0.2):
batch = []
for x in prompts:
# 1) 对同一个 prompt 采样 G 条回答(同一策略、同温度)
responses = [policy.sample(x) for _ in range(G)]
# 2) 用可验证奖励给每条打分(数学判对错/代码跑测试)
rewards = [reward_fn(x, r) for r in responses]
# 3) 组内标准化:用组的均值和标准差做基线,无需 critic
mean = statistics.mean(rewards)
std = statistics.pstdev(rewards) + 1e-6
advantages = [(r - mean) / std for r in rewards]
for r, a in zip(responses, advantages):
batch.append((x, r, a))
# 4) 策略梯度更新(组内相对优势做权重 + KL 约束)
policy.optimizer.zero_grad()
for x, r, a in batch:
logp = policy.logprob(x, r)
logp_ref = ref_policy.logprob(x, r) # 冻结的参考模型
ratio = torch.exp(logp - logp_ref)
# PPO 式裁剪,防止单步更新过猛
clipped = torch.clamp(ratio, 1 - eps, 1 + eps) * a
unclipped = ratio * a
policy_loss = -torch.min(unclipped, clipped).mean()
kl = beta * (logp - logp_ref) # 把策略拉在参考模型附近
(policy_loss + kl).backward()
policy.optimizer.step()
注意三个工程要点:(a) 参考模型 ref_policy 冻结,只用于算 KL,不更新;(b) 组内优势天然去中心化,没有 critic;(c) 采样时 G 条共享同一 prompt,保证"可比"。
六、遗留问题
- 推理泛化性:RLVR 在数学/代码收益巨大,开放域写作/主观任务仍依赖偏好优化(DPO/RLHF)。一个能解竞赛题的模型,未必更会写一首好诗——推理 RL 的信号只覆盖"可验证"的那部分能力。
- 过度思考与思考崩坏:长 CoT 的语言混杂、重复循环,需要熵正则与长度惩罚调参。模型有时会为了"显得在思考"而堆砌无效步骤,甚至自我推翻正确结论(见 3.4)。
- 奖励设计的盲区:不可验证领域(医疗建议、伦理判断)依然没有好奖励信号。无法用"对错"定义的事,RLVR 就使不上劲,仍要回到人类偏好。
- 能耗/成本:思考 token 让推理成本上升一个数量级,"想多久"本身就是新的资源调度问题。test-time scaling 在拉高上限的同时,也把"成本旋钮"交到了每个调用方手里。
- 评估失真:用"标准答案比对"训练出来的模型,可能在分布外的真实任务上过拟合"考试形态",迁移到 agentic 场景需重新设计奖励(见 2.3 的 agentic RL)。
七、实践小结
把本篇浓缩成可执行的认知:
- 想提升硬推理,优先 RLVR 而非 RLHF:奖励信号从"人觉得好"换成"题做对",纯度与扩展性都上一个台阶。
- GRPO 是 RLVR 的默认算法:组内相对优势替掉 critic,省显存、稳训练,是 R1 能开源复现的关键。
- 训练哲学 = RL 拓荒 + SFT 塑形 + 对齐收口:R1 的四段式比一把梭更可控;冷启动与拒绝采样解决"可读性与通用性"。
- 把验证外包给可执行环境:代码跑测试、数学代入检验,比模型"自称验证过"可靠。
- 思考预算按难度配:test-time compute 是旋钮,简单题收紧、难题放开,平衡成本与准确率。
- 小团队走蒸馏:自己训 RL 门槛高,直接用 R1-Distill 类权重做 SFT,是性价比最高的上手路径。
下一篇(第 20 篇)会从"模型能力"切到"运行模型的产品"——DeepSeek 官方开源的 Agent 运行时 Harness,看工程侧如何把"会思考的模型"接进真实工具与环境。

浙公网安备 33010602011771号