Skip to main content

第33章:推理模型与慢思考

想象你面前有一道题:"一列火车从 A 城出发,速度 120 km/h,另一列从 B 城出发,速度 80 km/h,两城相距 500 km,同时出发相向而行,何时相遇?"大多数人不会直接报出答案,而是在草稿纸上列方程、代入数字、验算结果。这个"用草稿纸"的过程,正是本章要讨论的核心问题。

33.1 传统模型的推理局限

直接预测答案的困境

标准语言模型在生成每个 token 时,本质上是在做一次"直接预测":给定上下文,预测下一个最可能的 token。对于"法国的首都是什么"这类问题,直接预测完全够用——答案就在训练数据中,模型只需"回忆"。

但对于需要多步推导的问题,直接预测就力不从心了。考虑以下例子:

问:Roger 有 5 个网球,他又买了 2 罐,每罐 3 个,他现在共有几个网球?

模型如果直接从问题跳到答案,需要在一次前向传播中完成"5 + 2×3 = 11"的计算。这对于简单题还好,但当逻辑链条拉长——比如数学归纳法证明、多步代码调试、复杂因果推断——模型就会频繁出错。

根本原因在于:模型没有"工作草稿"。Transformer 的注意力机制让它能回看所有已生成的 token,但如果中间推理过程从未被写出来,注意力就无处着力。

Chain-of-Thought:让模型先写草稿

2022 年,Wei et al. 在论文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 中提出了一个简单而深刻的想法:在 few-shot 示例中,不只给出答案,而是给出带推理过程的答案

Few-shot CoT(Chain-of-Thought, 思维链) 示例:

问:Roger 有 5 个网球,他又买了 2 罐,每罐 3 个,他现在共有几个网球?
答:Roger 原有 5 个网球。他买了 2 罐,每罐 3 个,即 2×3=6 个。
5+6=11。答案是 11 个。

问:食堂有 23 个苹果,午饭用了 20 个,又买了 6 个,现在有几个苹果?
答:

模型看到这个格式,就会"模仿"前面的推理步骤,逐步写出自己的推导过程。实验表明,这种方法在 GSM8K(小学数学应用题)上将准确率从约 18% 提升到约 57%。

Zero-shot CoT 更简单,由 Kojima et al.(2022)发现:只需在问题末尾加上一句魔法咒语——

"Let's think step by step."(让我们一步一步来想)

模型就会自发地输出推理过程,无需任何示例。这个发现暗示了一个重要事实:推理能力其实已经潜伏在大模型中,缺的只是"被激活"的信号

:::info 为什么 CoT 有效? 从信息论角度理解:生成中间步骤等于在上下文中存入了"计算状态"。后续 token 的生成可以"读取"这些状态,相当于增加了有效的计算深度。每个中间步骤都是一次注意力可以聚焦的锚点。 :::


33.2 o1 / R1 范式:让模型想更久

CoT 提示法是一个好的开始,但它依赖于提示格式,而不是模型本身真正学会了"思考"。真正的突破来自于:把"思考"训练进模型

OpenAI o1:大规模强化学习训练思维链

2024 年 9 月,OpenAI 发布了 o1 模型。与之前模型最大的区别不在于参数量,而在于训练范式

  • 使用大规模强化学习(Reinforcement Learning)训练模型生成"思维链"
  • 模型在给出最终答案前,会先产生一段内部推理过程(internal chain of thought)
  • 这段推理过程对用户部分不可见(OpenAI 出于商业原因隐藏了具体内容)

效果极为显著:在 MATH 竞赛数学数据集上,o1 的准确率达到 90%,而 GPT-4o 约为 60%。在 AIME(美国数学邀请赛)上,o1 能解决其中约 83% 的题目,而普通模型不足 10%。

o1 的训练细节未完全公开,但核心机制可以概括为:

奖励信号=1[最终答案正确]\text{奖励信号} = \mathbb{1}[\text{最终答案正确}]

模型通过试错学习:哪些思考路径会导向正确答案,哪些会走入死胡同。强化学习不断强化"有效的思考模式"。

DeepSeek-R1:开源推理模型的惊喜

2025 年 1 月,DeepSeek 发布了 R1 模型,将这一范式带入开源领域。R1 使用了 GRPO(Group Relative Policy Optimization) 算法训练。

GRPO 的核心思想是对一批生成的输出进行组内相对评分:

LGRPO=E[irirˉσrlogπθ(oiq)]\mathcal{L}_{\text{GRPO}} = -\mathbb{E}\left[\sum_{i} \frac{r_i - \bar{r}}{\sigma_r} \log \pi_\theta(o_i | q)\right]

其中 rir_i 是第 ii 条输出的奖励,rˉ\bar{r}σr\sigma_r 是组内均值和标准差。相比标准 PPO,GRPO 不需要额外训练一个价值网络(critic),更加稳定高效。

最令人惊讶的发现:R1 的训练过程中,不需要人工标注的思维链数据。模型完全通过奖励信号(答案是否正确)自发地涌现出反思行为——它会在思维链中写出诸如"等等,我之前算错了,重新来"的自我纠错片段。

:::tip 涌现的反思能力 DeepSeek-R1 的思维链中出现了自发的"aha moment"——模型写道类似"Hmm, let me reconsider..."的片段,并推翻了之前的错误方向。这种行为没有被显式训练,完全是从结果导向的强化学习中自然涌现。 :::

模型发布时间训练方式MATH 准确率开源
GPT-4o2024.5RLHF + SFT~60%
OpenAI o12024.9大规模 RL~90%
DeepSeek-R12025.1GRPO~90%

33.3 Test-Time Compute 扩展

o1/R1 的成功引发了一个更深的思考:我们对"扩展"的理解是不是太窄了?

传统 Scaling Law 的局限

传统的 Scaling Law(扩展定律)告诉我们:

L(N,D)(NcN)αN+(DcD)αDL(N, D) \approx \left(\frac{N_c}{N}\right)^{\alpha_N} + \left(\frac{D_c}{D}\right)^{\alpha_D}

更多参数(NN)、更多数据(DD)→ 更低的损失 → 更好的性能。但这种提升需要花费训练时的计算资源,成本极高,而且每次提升都要重新训练整个模型。

Test-Time Compute Scaling

新的范式是:在推理时(test-time)投入更多计算,换取更好的答案。这是一个完全不同的维度:

答案质量=f(模型能力,推理时计算量新维度)\text{答案质量} = f(\text{模型能力}, \underbrace{\text{推理时计算量}}_{\text{新维度}})

方式一:更长的思维链

让模型生成更多的中间推理步骤。o1 在回答复杂问题时可能生成数千个内部思考 token,而标准模型只生成几十个 token 的回答。

方式二:并行采样 + 验证

生成多个候选解法,然后用某种策略选出最好的:

  • 多数投票(Majority Voting):生成 kk 个答案,选出现频率最高的
  • Best-of-N with Verifier:训练一个独立的验证模型(verifier/reward model),对 NN 个候选答案打分,选最高分

Best-of-N: a^=argmaxa{a1,...,aN}V(q,a)\text{Best-of-N: } \hat{a} = \arg\max_{a \in \{a_1,...,a_N\}} V(q, a)

实验表明,对于数学题,Best-of-N(N=100N=100)可以将准确率提升 10-20 个百分点。

边际效益递减

:::warning 并非所有问题都受益于"想更久" Test-time compute 的提升并非线性的:

  • 简单问题:答案已经直接可得,更长的思维链只是浪费计算
  • 知识型问题("谁写了《战争与和平》"):再多思考也无法弥补知识缺失
  • 复杂推理问题:投入更多计算效果显著
  • 超出分布的问题:即使思考很久,模型也可能在某个关键步骤失败

关键洞见:有些问题的瓶颈在于"想到"那个决定性的洞见(insight),而不是计算量本身。 :::

一个有意思的经验法则:当问题的"难度"和模型当前的"能力"恰好匹配时,test-time compute 的收益最大——太简单的问题不需要,太难的问题想多久也没用。


33.4 思维链的本质是什么

CoT 和推理模型的成功引发了一个深层问题:模型写出的那些中间步骤,到底是真正的推理,还是只是**"看起来像推理"的格式化输出**?

争议实验

Lanham et al.(2023)做了一个值得深思的实验:故意破坏思维链的中间步骤(比如把数字替换成错误值、删除关键步骤),然后看最终答案是否受影响。

令人不安的发现:在某些情况下,即使思维链被严重破坏,最终答案仍然是正确的

这暗示了一种可能:模型可能在生成思维链的同时,已经在"内部"(隐层表示中)计算出了答案,思维链只是一种"事后解释"(post-hoc rationalization)。

当前共识

研究界目前的主流观点持中间立场:

  1. CoT 确实提供了有用的中间状态:注意力机制可以利用已生成的推理步骤,这在长链推理中尤为重要。函数调用式的中间步骤(如"3×4=12")提供了可靠的锚点。

  2. 但 CoT 不完全等同于人类推理:人类推理是真正串行的、有意识监控的过程。模型的"思维链"更像是"生成一段看起来合理的推理文本",其中不可避免地混有模式匹配成分。

  3. 推理链的忠实性(faithfulness)是有限的:模型可能"知道"答案,但生成的推理路径却不是真正导向这个答案的路径。

:::info 一个有益的类比 把 CoT 想象成一个优秀学生的解题过程和一个"考试机器"的解题过程:

  • 优秀学生的每一步都是真实的思考,步骤之间有因果关系
  • "考试机器"可能先凭直觉得出答案,然后反推出一个"合理的"解题过程

CoT 的本质可能更接近后者,但这并不意味着它没用——"看起来合理的推理过程"往往也确实是正确的推理过程。 :::

未来方向

自我纠正(Self-Correction):让模型在生成答案后,主动检验自己的推理,找到错误并修正。目前的挑战是,如果没有外部反馈,模型很难可靠地发现自己的错误(它用来验证的知识和犯错的知识是同一套)。

多轮验证(Multi-Turn Verification):使用独立的验证模型(或工具)在推理过程中提供中间反馈,形成"推理-验证-修正"的闭环。

程序化推理(Neuro-Symbolic Reasoning):把 LLM 和符号系统(如数学计算引擎、逻辑推理器)结合。LLM 负责理解问题、规划步骤,符号系统负责精确执行每一步计算。这样可以保证关键步骤的正确性,同时保留 LLM 的自然语言理解能力。

问题 → LLM 生成解题计划 → 符号系统执行计算 → LLM 综合得出答案

本章小结

概念核心思想关键贡献
Chain-of-Thought (CoT)在提示中加入中间推理步骤Wei et al., 2022
Zero-shot CoT"Let's think step by step" 激活推理Kojima et al., 2022
OpenAI o1RL 训练内部思维链,MATH 准确率 90%OpenAI, 2024.9
DeepSeek-R1开源 + GRPO 训练,自发涌现反思能力DeepSeek, 2025.1
Test-Time Compute推理时投入更多计算换取更好答案新扩展维度
Best-of-N生成多个候选 + 验证模型选优并行采样策略
CoT 忠实性思维链是真正推理还是事后解释?仍有争议

推理模型代表了 LLM 发展的一个新阶段:从"知识库"到"思考者"。但这种"思考"的本质是什么,它与人类认知的异同在哪里,仍是悬而未决的问题。

这种能力的边界,在很大程度上取决于训练数据的质量和强化学习的奖励信号设计——而这正引出了我们下一章要讨论的话题:如何对齐模型的行为,使其输出真正符合人类意图?