第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 的训练细节未完全公开,但核心机制可以概括为:
模型通过试错学习:哪些思考路径会导向正确答案,哪些会走入死胡同。强化学习不断强化"有效的思考模式"。
DeepSeek-R1:开源推理模型的惊喜
2025 年 1 月,DeepSeek 发布了 R1 模型,将这一范式带入开源领域。R1 使用了 GRPO(Group Relative Policy Optimization) 算法训练。
GRPO 的核心思想是对一批生成的输出进行组内相对评分:
其中 是第 条输出的奖励, 和 是组内均值和标准差。相比标准 PPO,GRPO 不需要额外训练一个价值网络(critic),更加稳定高效。
最令人惊讶的发现:R1 的训练过程中,不需要人工标注的思维链数据。模型完全通过奖励信号(答案是否正确)自发地涌现出反思行为——它会在思维链中写出诸如"等等,我之前算错了,重新来"的自我纠错片段。
:::tip 涌现的反思能力 DeepSeek-R1 的思维链中出现了自发的"aha moment"——模型写道类似"Hmm, let me reconsider..."的片段,并推翻了之前的错误方向。这种行为没有被显式训练,完全是从结果导向的强化学习中自然涌现。 :::
| 模型 | 发布时间 | 训练方式 | MATH 准确率 | 开源 |
|---|---|---|---|---|
| GPT-4o | 2024.5 | RLHF + SFT | ~60% | 否 |
| OpenAI o1 | 2024.9 | 大规模 RL | ~90% | 否 |
| DeepSeek-R1 | 2025.1 | GRPO | ~90% | 是 |
33.3 Test-Time Compute 扩展
o1/R1 的成功引发了一个更深的思考:我们对"扩展"的理解是不是太窄了?
传统 Scaling Law 的局限
传统的 Scaling Law(扩展定律)告诉我们:
更多参数()、更多数据()→ 更低的损失 → 更好的性能。但这种提升需要花费训练时的计算资源,成本极高,而且每次提升都要重新训练整个模型。
Test-Time Compute Scaling
新的范式是:在推理时(test-time)投入更多计算,换取更好的答案。这是一个完全不同的维度:
方式一:更长的思维链
让模型生成更多的中间推理步骤。o1 在回答复杂问题时可能生成数千个内部思考 token,而标准模型只生成几十个 token 的回答。
方式二:并行采样 + 验证
生成多个候选解法,然后用某种策略选出最好的:
- 多数投票(Majority Voting):生成 个答案,选出现频率最高的
- Best-of-N with Verifier:训练一个独立的验证模型(verifier/reward model),对 个候选答案打分,选最高分
实验表明,对于数学题,Best-of-N()可以将准确率提升 10-20 个百分点。
边际效益递减
:::warning 并非所有问题都受益于"想更久" Test-time compute 的提升并非线性的:
- 简单问题:答案已经直接可得,更长的思维链只是浪费计算
- 知识型问题("谁写了《战争与和平》"):再多思考也无法弥补知识缺失
- 复杂推理问题:投入更多计算效果显著
- 超出分布的问题:即使思考很久,模型也可能在某个关键步骤失败
关键洞见:有些问题的瓶颈在于"想到"那个决定性的洞见(insight),而不是计算量本身。 :::
一个有意思的经验法则:当问题的"难度"和模型当前的"能力"恰好匹配时,test-time compute 的收益最大——太简单的问题不需要,太难的问题想多久也没用。
33.4 思维链的本质是什么
CoT 和推理模型的成功引发了一个深层问题:模型写出的那些中间步骤,到底是真正的推理,还是只是**"看起来像推理"的格式化输出**?
争议实验
Lanham et al.(2023)做了一个值得深思的实验:故意破坏思维链的中间步骤(比如把数字替换成错误值、删除关键步骤),然后看最终答案是否受影响。
令人不安的发现:在某些情况下,即使思维链被严重破坏,最终答案仍然是正确的。
这暗示了一种可能:模型可能在生成思维链的同时,已经在"内部"(隐层表示中)计算出了答案,思维链只是一种"事后解释"(post-hoc rationalization)。
当前共识
研究界目前的主流观点持中间立场:
-
CoT 确实提供了有用的中间状态:注意力机制可以利用已生成的推理步骤,这在长链推理中尤为重要。函数调用式的中间步骤(如"3×4=12")提供了可靠的锚点。
-
但 CoT 不完全等同于人类推理:人类推理是真正串行的、有意识监控的过程。模型的"思维链"更像是"生成一段看起来合理的推理文本",其中不可避免地混有模式匹配成分。
-
推理链的忠实性(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 o1 | RL 训练内部思维链,MATH 准确率 90% | OpenAI, 2024.9 |
| DeepSeek-R1 | 开源 + GRPO 训练,自发涌现反思能力 | DeepSeek, 2025.1 |
| Test-Time Compute | 推理时投入更多计算换取更好答案 | 新扩展维度 |
| Best-of-N | 生成多个候选 + 验证模型选优 | 并行采样策略 |
| CoT 忠实性 | 思维链是真正推理还是事后解释? | 仍有争议 |
推理模型代表了 LLM 发展的一个新阶段:从"知识库"到"思考者"。但这种"思考"的本质是什么,它与人类认知的异同在哪里,仍是悬而未决的问题。
这种能力的边界,在很大程度上取决于训练数据的质量和强化学习的奖励信号设计——而这正引出了我们下一章要讨论的话题:如何对齐模型的行为,使其输出真正符合人类意图?