怎么让模型想得更久,又能控制它想多久?
本课一问:数学题、代码题,一口气写出答案经常错,先想一想再答就好得多。怎么训出一个「会想」的模型?想得越久越好吗——想多久又怎么控制?
这一课先不碰:小模型怎么继承大模型的思考(第 7 课);思考与工具调用交错(第 8 课)。
从已有出发
第 5 课的 R1-Zero 在 RL 过程中出现了一个没人教过的现象:回答越写越长,开始在里面回头检查、换思路。DeepSeek 把单条回答的上限从 32,768 个 token 放宽到 65,536 个之后,成绩和回答长度又一起跳了一截(第 8,200 步) 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条共 10,400 步、约 1.6 个 epoch;每步 32 道题 × 16 个样本。 出处DeepSeek-R1 v2 §2.3 与图 1(本地 PDF) ↗ 。贯穿提问在 Qwen3.8 的训练样本里长这样:思考块 <think>…</think> 就在助手的回答里,和正文一样是训练目标(这条样本里 18 个思考 token 都算 loss):
<|im_start|>assistant↵):
Qwen3.8 切成 3 个 token,GPT-2 切成 10 个:
<|im_start|>assistant↵。
特殊 token 是在词表里显式注册的:没注册过的词表只会把它当成一串普通字符。
- 解决了Qwen3-235B 推理 RL:3,995 个 query-verifier 对,AIME’24 170 步内 70.1 → 85.1;同一个模型能想能不想。卡在小模型自己做 RL:Qwen2.5-32B 直接做 R1-Zero 式 RL,AIME 2024 只有 47.0。
先自己设计:提示它「一步一步想」
最省事的做法不训练:在提示里加几个带推理步骤的示例(Wei et al. 2022 的思维链提示),或者只加一句「Let’s think step by step」(Kojima et al. 2022)。
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
| PaLM 540B(思维链原文表 4) | GSM8K | SVAMP | ASDiv | AQuA | MAWPS |
|---|---|---|---|---|---|
| 普通提示 | 17.9 | 69.4 | 72.1 | 25.2 | 79.2 |
| 思维链提示 | 56.9 | 79.0 | 73.9 | 35.8 | 93.3 |
同一个 540B 模型,只换提示,GSM8K 从 17.9 涨到 56.9——能力本来就在,提示把它引了出来 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条原文:chain-of-thought prompting does not positively impact performance for small models, and only yields performance gains when used with models of ∼100B parameters。 出处Wei et al. 2022 §3(本地 PDF) ↗ 。可小模型用同样的提示,生成的推理「通顺但不合逻辑」。
R1-Zero 直接在基座模型上做 RL,奖励只看最终答案对不对、格式对不对,不给任何推理示范:AIME 2024 从 15.6% 升到 77.9%(v2),思考长度在训练中自己涨上去。「想」变成了模型为了拿奖励而学会的行为。
改进一:R1 的四段流程——让思考可读、可用
R1-Zero 想得好,但回答可读性差、中英混杂,也只会做推理题。DeepSeek-R1 的流程是四段:① 用几千条「对话式、像人一样」的长思维链做冷启动 SFT;② 推理 RL(GRPO),额外加一个「语言一致性」奖励;③ 用 RL 模型拒绝采样出约 60 万条推理样本、再加非推理数据做一轮 SFT;④ 覆盖全部场景的第二轮 RL,推理题用规则奖励、通用题用偏好奖励(只放在最后 400 步) 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条语言一致性奖励让可读性变好,消融显示推理成绩略有下降——作者接受了这个取舍。 出处DeepSeek-R1 v2 §3、附录 B.3(本地 PDF) ↗ 。OpenAI 的 o1(2024-09)是更早的闭源先例,只公开了结论,没有公开做法。
改进二:同一个模型,能想也能不想
一直想也不行:简单问题想几千个 token 是浪费,用户也不想等。Qwen3 的做法叫模式融合:在推理 RL 之后,把「有思考」和「思考块为空」两种 SFT 样本混在一起训(用户消息里加 /think、/no_think 标记),让同一个权重学会两种模式。原文还观察到一个副产品:模型学会两种模式后,能基于不完整的思考直接作答——于是可以做「思考预算」:思考写到用户给的上限时,强行插入一句停止思考的指令,模型接着就给出回答。原文强调这个能力「不是显式训练的,而是模式融合后自然出现的」 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方自报;停止思考指令原文见下面组件。Qwen3-235B 推理 RL 用 3,995 个 query-verifier 对,AIME'24 在 170 步内从 70.1 升到 85.1(§4.2)。 出处Qwen3 技术报告 §4.3 ↗需联网 。
锚点 Qwen3.8 把这件事做进了官方聊天模板。下面是模板在四种设置下真正生成的提示(Qwen3.8 真 tokenizer 现数):
试三件事:① 看「推理力度」一列:xhigh 和 low 各是一段模板自动写进 system 的英文指令,medium 什么都不写——「力度」不是模型里的一个开关,是一段文字,模型要在后训练里学会读懂它;② 看「关闭思考」:模板替模型写好 <think>↵↵</think>↵↵ 这个空思考块(4 个 token),模型从回答开始写;③ 回到本页开头的模板组件,点「两轮 · 删掉历史思考」和「保留历史思考」:Qwen3.8 默认把历史轮的思考留在上下文里(preserve_thinking),第 8 课会看到为什么 agent 场景需要它。
改进三:用 RL 直接训「想多久」
提示和模板只能表达意图,真正让模型学会收住的是奖励。2026 年几家的做法:
- Kimi K3:每道题有一个冷启动模型估出的预算 b0,思考超过 τ·b0 的轨迹,奖励直接改成 −1;先用大 τ 训出最高力度的专家,再把 τ 逐步调小,得到 high、low 两档 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条agentic 任务里预算按全部输出 token 算,包括推理和工具调用参数。 出处Kimi K3 技术报告 §4.1.2(本地 PDF) ↗ 。
- DeepSeek-V4.1:把 1–100 的力度标量 b 写进 system prompt,长度惩罚随 b 指数变化,奖励只在同一力度的子组里做均值中心化,不同力度的回答不互相比 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方技术报告(R3 调研 §1.5 l));API 的 max / high / low 对应 b = 100 / 75 / 50。 出处待补 。
- Qwen3.8、GLM-5.3 在 API 层提供三档 reasoning_effort;RL 细节没有公开。
K3 的规则可以自己算一遍(8 条轨迹的思考长度与对错是教学数据):
试三件事:① τ 拖到 6(预算 12,000):没有轨迹超预算,优势为正的轨迹平均思考 4,380 个 token;② 拖回 2(预算 4,000):5,200 和 9,800 那两条答对了,却因为超预算奖励变成 −1——被奖励的轨迹平均思考长度降到 2,300;③ 拖到 1.5:连 3,100 那条也超了,组内平均奖励变成负数——两条答错但很短的轨迹(800、1,500 token)优势也变成了正的 +0.302。预算罚得太狠,会连「短而错」一起奖励;这就是 K3 先用大 τ、再逐步收紧的原因。
测试时算力:想得多为什么有用
「想更久」本质上是在推理时多花算力。最简单的一种是同一题独立采 N 次、多数投票:
单次正确率 0.6 时,5、15、64 次投票的正确率是 0.683、0.787、0.946;单次正确率 0.4 时却是 0.317、0.213、0.054——越投越差 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条二项分布:多数投票把「对的概率 > 一半」放大、把「< 一半」压低(Condorcet 陪审团定理的简单情形)。组件假设错答都相同,是对投票最不利的情形。 出处待补 。测试时算力放大的是模型已有的倾向。OpenAI 报告 o1 在 AIME 2024 上单样本 74%、64 个样本共识 83%、1,000 个样本用打分模型重排 93% 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方博客自报;该页面对脚本访问返回 403,数字经搜索结果核对(11.1 / 12.5 / 13.9 题,满分 15)。 出处OpenAI「Learning to Reason with LLMs」2024-09-12 ↗需联网 ;Snell et al. 2024 发现按题目难度分配测试时算力,比 best-of-N 省 4 倍以上,算力对齐时能胜过大 14 倍的模型 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条在他们的模型与 MATH 数据上;难题上多想的收益有限。 出处Snell et al. 2024 ↗需联网 。思考模型把「多采样、再挑」的一部分搬进了单条回答内部:在一条回答里自己试、自己检查、自己改。
常见误解一:「思考模式是另一个模型。」 Qwen3 与 Qwen3.8 都是同一个权重,由模板和 system 指令决定想不想、想多深。
常见误解二:「关闭思考就是不生成 think 标签。」 模板替模型写好了一个空的思考块,模型从回答开始接着写;训练里也要有这种样本,模型才学得会。
常见误解三:「想得越久一定越好。」 单次正确率低于一半时投票越投越差;K3、V4 都专门惩罚超预算的思考。Qwen3 报告的图 2 里成绩确实随思考预算平滑上升——多想通常有用,但每多一个 token 都要付推理时间和钱,「想多久」是一个要权衡的旋钮,不是越大越好。
证据三问
| 问 | 本课的回答 |
|---|---|
| ① 它解决什么问题? | 提示只能引出已有能力、不可控;要把「想」训成行为,还要能按需收住 |
| ② 数学上为什么可能有效? | 多数投票对单次正确率 > 0.5 的放大可证明 证据等级 · 数学可证明 在写明的前提下可以严格推导出来,不依赖实验。只要前提成立,换数据、换规模仍然成立。 本条二项分布。 出处待补 ;「在一条回答里多想 ≈ 在推理时多花算力」是理论动机 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条思考 token 让模型在给出答案前做更多串行计算;没有定理保证它一定更好。 出处待补 |
| ③ 实验上为什么选了它? | R1-Zero 15.6% → 77.9%;Qwen3 170 步 70.1 → 85.1;o1 74% → 83% → 93% 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条均为官方自报,各自的模型与设置。 出处待补 |
一句话
思考是模型自己生成的 token:RL 让它学会在需要时多想,模式融合让同一个模型能想能不想,预算和力度决定想多久。
先停在这里:记住「思维链提示只能引出;R1 四段;模式融合 + 预算;力度是一段 system 指令;投票只放大已有倾向」。
再深一层:在预算组件里找出让所有对答案都拿正优势的最小 τ,再去读 K3 §4.1.2。
下一个缺口
235B 的模型能靠 RL 想明白,小模型呢?DeepSeek 在 Qwen2.5-32B 上直接做 R1-Zero 式 RL,AIME 2024 只有 47.0;而用 R1 生成的数据给同一个底座做 SFT,是 72.6。小模型自己做 RL 又贵又差——能不能直接继承大模型? → 第 7 课:蒸馏
你可能会问
- 「思考内容要给用户看吗?」 各家不同。Qwen3.8 与 GLM 开放思考内容;很多闭源模型只给摘要。训练上,思考块和正文一样是目标;agent 场景里还涉及下一轮要不要保留它(第 8 课)。
- 「思考预算那句停止指令是 Qwen3.8 的吗?」 是 Qwen3 技术报告公开的那一句;组件只是用 Qwen3.8 的 tokenizer 数了它的长度。Qwen3.8 的公开资料没有写它用什么方式截断。
- 「过程奖励(给每一步打分)为什么没成主流?」 R1 报告说明他们没有用过程奖励模型,理由之一是「一步」很难定义、PRM 本身也会被钻空子;DeepSeekMath 试过过程监督。第 5 课的 Dig 有更多。