第 17 · 推理 · 9 min
先思考,再回答
思考tokens、扩展推理、思考预算。推理模型如何在回答之前生成隐藏的思维链。
快速给出的答案往往是错的
7¹⁰⁰ 的最后一位数字是几?
如果你把这个问题抛给一个普通的 LLM,它大概会在不到一秒内告诉你"7"。听起来合理:7 以 7 开头,7² = 49,如果不仔细想,你可能会假设它一直保持是 7。这个答案是错的——其实是 1。
但如果你把同样的问题抛给一个推理模型,它会犹豫。它会"思考"10 秒、20 秒,有时甚至 60 秒。然后它会得到正确的答案。OpenAI 在 2024 年底用 o1 打开了这条路,DeepSeek-R1 在 2025 年初把它公开化;今天所有大模型都有了这类模式。
差异不在架构上——还是同一个 Transformer。差异在于这个模型是怎么被训练的,以及我们允许它在回答之前做什么。
Thinking tokens(思考 Token)
每个 LLM 都是从左到右、一个接一个地生成 Token。推理模型与众不同的地方在于,它们会先生成一长串工作用的 Token——一段内心独白——然后才产出最终答案。至于你能看到多少,取决于厂商:有的完整展示,有的只给一份摘要,有的干脆什么都不给。
这些隐藏的 Token 被称为 thinking tokens(思考 Token)。
模型可以在那里写任何东西:中间计算、它随后又推翻的假设、被放弃的探索分支、反复核对。这是一份草稿,它会在向你展示干净的结果之前把它擦掉。
这不是魔法。这只是为处理一个困难问题留出的额外空间。
自己试试
把思考预算设为"无(Aucun)",然后点击"开始推理(Raisonner)"。看看那个瞬时的回答。然后切换到"完整(Complet)",再运行一次。
灰色块是模型的内部思维链——它在假设、验证,有时回退。这些 thinking tokens 在延迟和价格上有代价,但能解锁直接回答模式无法解决的问题。
两者的差异不在模型的能力上——而在于我们允许它使用的推理时计算(inference-time compute)。
技术上是怎么实现的
这并不是另一种架构。同样的 Transformer,同样的注意力机制,同样的自回归生成。
变的是训练和解码方式。而且和大家想象的不同,我们并没有给它看成千上万段写得漂亮的推理让它模仿。
我们做的是更聪明的一件事:让它自己去摸索。模型产出自己的尝试,我们机械地验证哪些真的得到了正确结果——算式可以核对,程序能不能过测试也可以核对——然后强化那些走通了的路径。这些推理没有任何人写过:是模型自己找出来的,我们只保留了能走到终点的那些。这就是第 08 章讲过的 RLVR。DeepSeek 甚至用 R1-Zero 证明了,一个模型可以在完全没有任何推理标注样本的情况下,从零发展出这些策略。
在推理时,我们给它一个思考 Token 预算——可以生成的隐藏 Token 数量上限。预算越大,它能探索得越多。超过某个预算之后,在困难任务上的质量提升会开始进入平台期。
一个重要细节:thinking tokens 是在答案之前生成的,处于同一个 Token 流之内。模型并不是在并行"思考"——它是串行思考的,并且和其他东西一样要消耗 Token。
扩展推理 vs chain-of-thought
你也许见过 chain-of-thought(CoT,思维链)这种技术,也就是在提示里明确要求模型"一步一步地思考"。这是一回事,但不完全一样。
| 思维链(提示式) | 扩展推理(原生) | |
|---|---|---|
| 由谁触发 | 用户在提示里 | 模型自己 |
| 可见性 | 在回答中可见 | 隐藏(thinking tokens) |
| 控制度 | 用户可以引导步骤 | 模型自己选择计划 |
| 例子 | GPT-4 加 "let's think step by step" | o1、o3、Claude 的 extended thinking |
提示式 CoT 同样能提升表现——但原生推理走得更远,因为模型并不被强迫写出可读的步骤。它可以在隐藏空间里探索混乱的路径、做之后会丢弃的计算、自相矛盾再自我纠正。
什么时候值得用
扩展推理在以下任务上能显著提升表现:
- 数学和逻辑 —— 证明、组合数学、精确算术
- 复杂代码 —— 多文件调试、非平凡算法
- 结构化推理 —— 谜题、链式演绎
- 规划 —— 在行动前需要先制定策略的任务
而对于简单的事实性问题("法国的首都是什么?")、创意写作或翻译,扩展推理什么都加不上——而且更贵。
说到幻觉(第 13 章),这里必须讲得精确一些,因为直觉会骗人。推理真正帮得上忙的地方,是那些可验证的错误:算错了一步、推得不严密、漏了一种情况。模型把过程铺开、回头再读、把自己接住。
而在纯粹的事实性上——一个人名、一个日期、一句引文——收益并没有保证。OpenAI 自己公布过测量结果:在某些知识类测试上,o3 的幻觉比它的前代还要多。想得更久并不会凭空变出模型本来就没有的信息:它只是获得了更大的空间,围绕自以为知道的东西编出一个更自洽的故事。
成本才是真正的限制。Thinking tokens 是按普通 Token 计费的。一个模型在给出 30 个 Token 的答案前生成了 1000 个思考 Token,账单上就是 1030 个 Token。在数百万次请求的尺度上,账就大了。
Test-time compute scaling(推理时算力扩展)
推理模型揭示出来的是:你可以在推理时购买智能——分配的 thinking tokens 越多,在困难任务上的回答就越好。
这就是所谓的 test-time compute scaling——与那种在训练时增加模型参数的常规扩展相对。
这条曲线和经典的缩放定律很像:把思考预算翻倍能提升表现,但收益递减。到某个点之后,思考更长时间也无法再补偿什么。
而这是一个重要发现:一个 LLM 的智能并不是被它的权重一锤定音的固定常量。它还取决于回答那一刻它被给了多少算力。
一个在困难问题上长时间思考的模型,可以胜过一个回答得很快的更大模型。速度不总是一种美德。
但"长时间思考"落到实处,意思是在开口回答之前,先一个一个地生成上千个 Token。而我们在第 09 章已经知道,每个 Token 都必须回头看它前面的所有 Token。如果第一千个 Token 真的要把前面全部重读一遍,这些推理模式没有一个付得起账。是什么让第一千个 Token 和第二个一样快?下一章掀开推理引擎的盖子。
更新于