思考深度参数解剖:你调的不是智力,是串行计算的租借额度

reasoning_effort、budget_tokens、thinkingBudget——每家大模型 API 都有一个"思考深度"旋钮,但它到底控制内核的什么?结合表达力理论(CoT 扩展固定深度 Transformer 的计算类)、s1 预算强制、L1 长度条件 RL、gpt-oss 的一行提示词实现和激活空间的"思考速度"方向,把这个参数从外壳拆到内核:它不改权重不加层,只控制模型租借多少串行计算步数。

reasoning_effort"low" 调到 "high" 的那一刻,模型没有任何变化:没有一层网络变深,没有一个权重被改动,没有加载任何”更聪明的版本”。可是答案质量确实上去了,账单也确实上去了。那多出来的”思考深度”到底从哪来?答案藏在一个容易被忽略的事实里:Transformer 每生成一个 token,才做一次完整的前向传播。所谓思考深度参数,调的不是模型的智力——智力在训练结束那一刻就定死了——它调的是这次推理里,模型被允许用多少个中间 token 去租借串行计算步数。

一句话主线

思考深度参数是一个”串行计算租借额度”的阀门:固定深度的 Transformer 一次前向只能做高度并行、深度受限的计算,每多生成一个思考 token 就多租一步串行计算;各家 API 的 effort/budget 参数,无论实现成硬截断、一行提示词、RL 长度条件还是激活方向,控制的都是同一件事——这条租借通道的开度。

一、先看外壳:每家的”思考深度”旋钮长什么样

截至写作时(2026-08),主流 API 的思考深度参数是这样的:

厂商参数形态语义
OpenAIreasoning.effort档位制(minimal/low/medium/high 等,可用档位随型号)引导模型在隐藏推理阶段花多少 token,推理 token 不返回但计费、占输出上限
Anthropicthinking.budget_tokenseffort前者是思考 token 的数值上限(须小于 max_tokens);Claude 4.6 起弃用固定预算,转向自适应思考 + effort 档位控制 Claude “花 token 的意愿”
GooglethinkingBudgetthinking_levelGemini 2.5 系列是 token 数(按型号 0–32768,-1 为动态,且是软上限);Gemini 3 起改档位制指导思考阶段的 token 用量
Qwen3(开源)thinking budgettoken 数;预算耗尽就结束思考、用一段早停提示词引导模型直接出答案同上,且实现完全可见

四家形态各异,但把表格竖着读一遍,共同点只有一个:没有任何一个参数在改模型本身,它们全都在控制”思考阶段生成多少 token”。OpenAI 的文档说得很直白:推理 token 是”隐藏 token,不作为消息内容返回,但被模型用来帮助生成最终答案”——你买的不是一个更强的模型,是同一个模型的更多中间生成。

于是问题就变成了:为什么”多生成一些不给你看的 token”,就等于”想得更深”?

二、再拆内核:为什么多生成 token 就是想得更深

2.1 固定深度的天花板

一个 Transformer 的层数 LL 在训练时就固定了。推理时每生成一个 token,输入序列过一遍这 LL 层——不管问题是 “2+3=?” 还是一道 AIME 竞赛题,单次前向传播的计算深度完全相同

这不只是直觉上的别扭,是有定理的。Merrill 和 Sabharwal 在 ICLR 2024 的论文《The Expressive Power of Transformers with Chain of Thought》(arXiv:2310.07923)里给出了刻画:标准 Transformer 一次前向传播能做的计算,被限制在一个高度可并行、电路深度受限的复杂度类里(在标准假设下位于 TC0\mathsf{TC}^0 附近)。后果很具体——一些看起来很简单的问题,比如判断图上两个节点是否连通、模拟一个有限状态机,“读完题立刻作答”的 Transformer 在理论上就做不了。这些问题的共性是:它们本质上是串行的,第 tt 步依赖第 t1t-1 步的结果,没法用固定深度的并行电路一口气算完。Li 等人的同期工作干脆把这写进了标题:《Chain of Thought Empowers Transformers to Solve Inherently Serial Problems》(arXiv:2402.12875)。

2.2 思考 token = 外置的串行寄存器

出路在生成本身。让模型先生成中间 token 再作答,每个中间 token 都会发生两件事:

  1. 这个 token 被写回输入序列——第 tt 步的中间结果,物理上变成了第 t+1t+1 步前向传播的输入;
  2. 它的 K/V 向量进入 KV cache——如果你熟悉 KV cache,思考过程的”草稿纸”在显存里就住在这:每一个思考 token 都在 KV cache 里占一行,后续每一步注意力都能回读它

单次前向的深度还是 LL,没变;但串行链条的长度从 1 变成了思考 token 数 TT。Merrill & Sabharwal 证明了这个链条长度直接决定计算能力的档位:中间步数是对数级时能力提升有限,线性乃至多项式级的中间步数则实打实地扩大了可解问题的类

所以”思考深度”这个名字其实起对了,只是深度不在网络里,在时间里:

网络深度 LL 是空间上的深度,训练时定死;思考 token 数 TT 是时间上的深度,推理时现租。思考深度参数控制的就是 TT

这也解释了为什么这个参数总跟钱和延迟绑在一起:每租一步串行计算,就是一次完整的前向传播、一行 KV cache、一个按输出价计费的 token。串行深度是推理时唯一能现买的稀缺资源,而这个参数就是它的额度审批单。

2.3 光有额度还不够:模型得会用

有一个反对意见值得先接住:如果多生成 token 就是多算力,那让任何模型多说废话岂不是都变聪明了?并不是。表达力定理给的是上限——有了 TT 步中间生成,模型才有可能完成串行计算;但要让这 TT 步真的花在拆解、验算、回溯上而不是花在车轱辘话上,需要训练侧配合(R1 式的结果奖励 RL 就是干这个的)。思考深度参数的前提,是模型已经被训练成”给它串行额度、它就能把额度换成正确率”的形态。参数本身只管开闸,水质由训练决定。

三、拆开阀门:四种实现,干预点一层比一层深

“控制思考 token 数”听起来是一件事,工程上却有四种做法,干预位置从输出端一路深入到隐藏状态。这条谱系值得完整看一遍,因为它恰好是”外壳参数”逐步兑换成”内核机制”的过程。

graph LR
    A["① 输出端硬截断<br/>s1 / Qwen3"] --> B["② 输入端文本条件<br/>gpt-oss 'Reasoning: high'"]
    B --> C["③ 训练目标内化<br/>L1 / LCPO"]
    C --> D["④ 隐藏状态方向<br/>h ← h + αv"]

① 输出端:硬截断与预算强制

最直接的做法是在解码循环里数 token。斯坦福等机构的 s1(arXiv:2501.19393)把它命名为 budget forcing(预算强制),机制朴素到可以在任何推理框架里手写:

  • 想让它少想:思考 token 超预算时,强行插入思考结束分隔符,模型只能转入作答;
  • 想让它多想:模型要输出思考结束符时,压制这个 token,改为追加一个 "Wait"——模型读到 “Wait” 会继续检查自己刚才的推理,经常因此修正错误。

就靠这一个词的干预,加上 1000 条精选样本、16 张 H100 上 26 分钟的微调,s1-32B 在竞赛数学(MATH 和 AIME24)上比 o1-preview 最高高出 27%。Qwen3 的技术报告(arXiv:2505.09388)用的是同一思路的产品化版本:思考预算耗尽就结束思考,插入一段早停提示语引导模型基于已有思考直接给结论;报告同时指出,调大思考预算能在各类任务上带来一致的性能提升。

这个层面的实现告诉我们一件重要的事:思考深度参数最底层的形态,就是解码循环里的一个计数器加一个特殊 token。没有任何魔法。

② 输入端:参数其实是一行提示词

那 OpenAI 的 reasoning_effort="high" 传进去之后变成了什么?闭源模型看不到,但 OpenAI 开源的 gpt-oss 泄了底:在它必须使用的 harmony 对话格式里,这个参数被聊天模板渲染成系统提示里的一行纯文本:

<|start|>system<|message|>You are ChatGPT, ...
Knowledge cutoff: 2024-06
Current date: 2025-06-28

Reasoning: high

# Valid channels: analysis, commentary, final. ...<|end|>

Reasoning: high 就这么夹在日期和频道声明中间。模型在训练时见过三档(low/medium/high)对应的思考长度分布,于是推理时读到这行字,就自发生成相应长度和结构的思考链。API 参数在这里完成了一次”外壳到内核”的翻译:壳层是一个枚举参数,核层是几个条件 token——和你在 prompt 里写”请仔细想想”没有本质区别,区别只在于模型被系统性地训练过要服从这行字。

③ 训练目标:把长度服从练进权重

文本条件的服从度可以更进一步,直接写进奖励函数。CMU 的 L1(arXiv:2503.04697)提出 LCPO(Length Controlled Policy Optimization):把目标长度写进 prompt(如”用不超过 N 个 token 思考”),RL 奖励同时看两项——答案对不对、长度符不符合约束。训练出的模型能按指令精确控制思考长度,准确率-算力曲线可以平滑滑动;1.5B 的 L1 在相同生成长度下能追平 GPT-4o。这一层的意义是:思考长度从一个被外部强制的量,变成了模型内部的一个可服从的条件变量——闭源 API 的档位制 effort,大概率就是这条技术路线的产物。

④ 隐藏状态:内核里真的有一个”思考速度”方向

最深的一层来自可解释性研究,它回答的正是”这个参数最终拨动了内核里的什么”。《Controlling Thinking Speed in Reasoning Models》(arXiv:2507.03704)对比长思考和短思考轨迹的激活,提取出一个对比方向向量 vv,推理时直接改隐藏状态:

h(l)h(l)+αv(l)h^{(l)} \leftarrow h^{(l)} + \alpha \cdot v^{(l)}

α\alpha 取正,思考变短变快;取负,思考变长变谨慎——不需要任何 prompt 和截断,直接在激活空间里拧这个旋钮就行。Venhoff 等人的工作(arXiv:2506.18167)进一步发现,思考里的具体行为——表达不确定、举例验证、回溯——各自对应激活空间里可加减的线性方向。

把四层连起来看就清楚了:思考深度参数在外壳上是档位或数字,进入内核后先变成条件 token,条件 token 经训练与隐藏状态里一组”思考倾向”的线性方向挂钩,这些方向最终决定模型在每一步是继续展开推理、还是收束作答。你调的那个参数,末端连着的是激活空间里一个可测量、可干预的方向。

四、为什么不是拧到最大就最好

如果串行计算这么值钱,effort 永远设 high 不就完了?三个证据说不行。

简单题多想是纯浪费。 腾讯 AI Lab 与上交的过度思考研究(arXiv:2412.21187)标题就是全文摘要:《Do NOT Think That Much for 2+3=?》——o1 类模型面对”2 加 3 等于几”会花掉比常规模型多得多的 token,反复验算一个不需要验算的答案。多租的串行步数没有转化为正确率,全部转化成了账单。

最优分配依赖难度。 DeepMind 与 UC Berkeley 的 compute-optimal 研究(arXiv:2408.03314)系统测了这件事:按题目难度自适应分配测试时算力,比统一预算的 best-of-N 基线效率高 4 倍以上;在小模型已有一定基础的难度区间,把算力花在推理时甚至能胜过一个大 14 倍的模型。但同一篇论文也划了边界:对小模型完全够不着的最难题,再多思考预算也救不回来,该上大模型还得上大模型。思考深度换不来能力上限,只能把训练时埋进权重的能力更充分地兑现出来。

收益会饱和,且饱和点可探测。 EAT(arXiv:2509.26522)给了一个漂亮的探针:在思考中途试探性地拼上思考结束符,看下一个 token 的熵——熵降下来并稳住,说明模型对答案已经确定,继续思考是空转。靠这个信号提前退出,在 MATH-500 和 AIME-2025 上省 13–21% 的 token,准确率不掉。

所以工程上的取舍很清晰:竞赛数学、多步代码调试、需要回溯的规划类任务,把额度开大;抽取、分类、格式转换、延迟敏感的交互场景,把额度关小。灰度地带(比如中等复杂度的分析任务)才是真正需要你拿自己的任务分布去实测的地方。

顺带一提,这也解释了各家 API 的演化方向为什么惊人一致:Anthropic 弃用固定 budget_tokens 转向自适应思考,Gemini 用 -1 表示动态预算、Gemini 3 干脆改成档位,OpenAI 的模型”在各档位内自适应——简单任务少花 token,复杂任务多想”。行业正在把”每道题该租多少串行步数”这个分配决策本身,也从人手里收走交给学习——苦涩教训的又一次小型重演:人类手工设定的预算,竞争不过模型自己学出来的预算分配策略。

五、带走的模型

一张卡片收束全文:

思考深度参数 = 串行计算的租借额度阀门。

  • 它不控制什么:权重、层数、模型能力上限——这些训练时已定死;
  • 它控制什么:思考阶段的中间 token 数 TT,即这次推理租借的串行计算步数;
  • 为什么有效:固定深度 Transformer 单次前向 ≈ 受限并行电路,本质串行的问题必须靠中间 token 把结果写回输入、存进 KV cache,才能一步步递推(表达力定理);
  • 四种实现,由浅入深:解码循环硬截断(s1/Qwen3)→ 系统提示一行字(gpt-oss)→ RL 长度条件(L1)→ 激活空间线性方向(h+αvh + \alpha v);
  • 使用原则:额度只能兑现能力、不能创造能力;按难度分配,警惕简单题上的空转。

最后留一个可以亲手做的验证(本文所有论断来自论文与官方文档,以下数字我尚未亲测):用 ollama 拉一个 gpt-oss-20b,同一道 AIME 题分别在系统提示里写 Reasoning: lowReasoning: high 各跑 5 次,数思考 token 的均值和正确次数;再换一道”2+3=?”级别的题重复一遍。四组数字到手,这篇文章的主线——额度换正确率、以及简单题上的浪费——你就有了自己的论断-数字账本,而不是我的转述。

参考来源

理论:思考 token 为什么扩展计算能力

  • Merrill & Sabharwal, The Expressive Power of Transformers with Chain of Thought, ICLR 2024 — arXiv:2310.07923
  • Li et al., Chain of Thought Empowers Transformers to Solve Inherently Serial ProblemsarXiv:2402.12875

控制机制:预算怎么实现

  • Muennighoff et al., s1: Simple test-time scaling(budget forcing)— arXiv:2501.19393
  • Aggarwal & Welleck, L1: Controlling How Long A Reasoning Model Thinks With Reinforcement Learning(LCPO)— arXiv:2503.04697
  • Qwen Team, Qwen3 Technical Report(thinking budget 机制)— arXiv:2505.09388
  • Controlling Thinking Speed in Reasoning Models(激活方向 h+αvh+\alpha v)— arXiv:2507.03704
  • Venhoff et al., Understanding Reasoning in Thinking Language Models via Steering VectorsarXiv:2506.18167

分配策略:预算该怎么花

  • Snell et al., Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters, ICLR 2025 — arXiv:2408.03314
  • Chen et al., Do NOT Think That Much for 2+3=? On the Overthinking of o1-Like LLMsarXiv:2412.21187
  • EAT: Entropy After ⟨/Think⟩ for reasoning model early exitingarXiv:2509.26522

工程实践:各家 API 文档