LESSON 36 · 卷IV 大语言模型

推理模型:让模型「先想再答」

同一个模型,让它「张口就答」和「先在草稿纸上写一长串再答」,难题的正确率能差出一大截。这就是 2024 年以来最重要的一次范式转移:把算力从训练,挪到「想」的过程里。

第 1 站

张口就答的代价:一次前向传播,能想多深?

请一个学过第 27 课的你来出题:「农场里有鸡和兔共 35 个头、94 只脚,兔有几只?」如果只许你看完题立刻报出一个数字,不许打草稿,大概率会报错。可是给你一张草稿纸,三行就解出来了。

大模型正好被卡在「不许打草稿」的处境里。回想第 27 课:模型每生成一个 token,都要把输入完整地跑一遍网络——这一遍的计算量是固定的,不会因为题目更难就自动变多。要它「张口」就给出十步推导后的答案,等于要求它在一次前向传播里心算完所有步骤。

张口就答问题答案← 只做 1 次前向传播,所有「思考」都得挤在这一步里先想再答(思维链)问题步1步2步3步4步5答案每写一个 token = 多一次前向传播 = 多花一份算力;写下的每一步,又成了后面每一步的「输入」
图 36-1两种回答方式的计算量。「张口就答」只有 1 次前向传播;「先想再答」每写一个 token 就多一次前向传播,而且写下的中间步骤会变成后面的输入——相当于给模型一张会被自己重新读到的草稿纸。
如果每个 token 的计算量是固定的,怎样才能让模型在难题上「花更多力气」?
第 2 站

思维链:把草稿纸交给模型

这个想法在 2022 年被系统地验证:只要在提示里加一句「让我们一步一步想」,或者给几个带推理过程的示范,模型在数学题上的表现就明显变好。这叫思维链(Chain-of-Thought,CoT)。

还是那道鸡兔同笼,看看一条思维链长什么样:

设兔 x 只,则鸡 35 − x 只
脚的总数:4x + 2(35 − x) = 94
展开:4x + 70 − 2x = 94 → 2x = 24
解得 x = 12,验算:12×4 + 23×2 = 48 + 46 = 94 ✓

注意每一行都很「小」:模型每一步只需要做一点点推理,前面的结果已经白纸黑字写在上下文里,注意力一瞥就拿到了。难题被拆成了一串它一次前向就能搞定的小题。

⚠️ 遇到的拦路虎 · 方案局限

早期的思维链要靠人来引导:写好示范、写好提示词。模型的「想法」是被诱导出来的,不一定想得对,也不会主动回头检查;想歪了一步,后面就一路歪下去。更根本的问题是:能不能不靠人教,让模型自己学会怎么想?

第 3 站

可验证奖励:不教怎么想,只看答没答对

答案要回到第 31 课的强化学习。RLHF 用的是「人类偏好训练出来的打分器」:能覆盖开放问题,但贵,而且打分器会被钻空子(奖励投机)。

可数学题、编程题不一样——它们有标准答案:答案对不对,一比就知道;代码对不对,跑一下单元测试就知道。既然可以让程序自动判分,何必再训练一个容易出错的打分器?这就是可验证奖励的强化学习(RLVR,Reinforcement Learning with Verifiable Rewards):

一道题有标准答案模型一次采样 G 个不同的完整解答判分程序答案对不对?测试通过没?奖励对 = 1错 = 0用奖励更新模型:让「答对的那几条思路」出现得更多不需要人写「标准思路」,也不需要人给每个答案打分——判分交给程序
图 36-2RLVR 的训练循环:模型对同一道题采样一组解答,判分程序按最终答案给 0/1 奖励,再用奖励把「答对的那几条思路」出现的概率推高。全程没有人写过一条「标准思路」。

最神奇的地方在这里:没人告诉模型该怎么想,可当它为了「答对」反复试错,一些人类熟悉的推理习惯自己长了出来——把长题拆成小步、验算一遍、发现矛盾就回头重来,甚至在思路里写出「等等,我再检查一下」。2024 年 9 月 OpenAI 的 o1 首次把这类推理模型推向大众;2025 年 1 月 DeepSeek-R1 公开了完整的训练思路,让全世界看清了这条路怎么走。

先澄清一个常见误会

推理模型并不是换了一种新架构——它依然是你学过的那个 Transformer(甚至常常是 MoE)。变的是训练方式:多了一段用可验证奖励做的强化学习,外加推理时允许它输出很长的思考过程。第 34 课提到的「推理蒸馏」(R1-Distill),就是把这些长思考再教给小模型。

第 4 站

GRPO:一组答案,互相当参照

训练里还剩一个具体问题:一次对错只给出一个 0/1,怎么判断「这条思路到底比平均水平好多少」?经典的 PPO(第 31 课)会额外训练一个「价值网络」来估计基线,又占显存又不稳。DeepSeek 提出的 GRPO(Group Relative Policy Optimization)用了一个朴素得多的办法:

对同一道题多采样几条解答,让它们互相当参照物。组内平均分就是基线,比平均好的鼓励,比平均差的抑制:

一组 8 条解答,奖励 [1, 0, 0, 1, 0, 0, 0, 1]
平均 mean = 3/8 = 0.375 标准差 std = √(0.375 × 0.625) ≈ 0.484
优势 A = (r − mean) / std
答对:(1 − 0.375) / 0.484 ≈ +1.29 答错:(0 − 0.375) / 0.484 ≈ −0.77
检验:3 × 1.29 + 5 × (−0.77) ≈ 0 —— 一组之内,奖励和惩罚刚好相抵
LAB · 30-A
GRPO 组内打分:点击答案卡片,切换「答对 / 答错」
组内平均奖励 mean
–
组内标准差 std
–
答对的优势值
–
答错的优势值
–

看到了吗?物以稀为贵:答对的越少,每一条答对的优势越大。而当整组全对或全错时,std = 0,所有优势归零——这一轮什么也学不到。这也是为什么 RLVR 特别看重「难度刚好」的题:太简单和太难的题,都给不出有用的信号。

算出优势之后,要做的事和第 31 课一样:优势为正的解答里的每一个 token,概率被推高;优势为负的,被压低(外加一个 KL 惩罚,防止模型偏离原来的样子太远)。这样,模型整条「思考 + 作答」的路径,就随着一次次对错被慢慢塑形。

第 5 站

想得越久越准?测试时计算与「思考档位」

有了会想的模型,第二个问题随之而来:想多久合适?过去提升能力主要靠训练时砸算力(更大的模型、更多的数据);现在多了另一个旋钮——推理时多花算力,让模型多想几步,这叫测试时计算(test-time compute)。

今天主流的模型都会提供可选的「思考档位」(从低到高,甚至更高的「最大」档),让你在成本、延迟、质量之间自己挑。拖一拖下面的滑块,感受这三者的拉扯:

LAB · 30-B
思考预算:拖动滑块,看「想得越久」换来什么、又花掉什么
允许思考的 token 数–
思考档位(大致对应)
–
难题正确率(示意)
–
单题成本
–
等待时间
–
⚠️ 曲线是示意,不是某个真实模型的实测数据:它只想让你看到三件事——先陡后缓(边际收益递减)、成本线性上涨、想太多反而可能变差(过度思考)。成本按 10 美元 / 百万输出 token、速度按 60 token / 秒的假设计算。
⚠️ 遇到的拦路虎 · 想太多也是病

过度思考(overthinking):问「1+1 等于几」也写几千字的推理,既贵又慢,有时想着想着还把本来对的答案想歪了。所以好的系统会按问题难度自适应地分配思考量,或让用户手动调档。

坑二:写出来的「想法」,不一定是真实的想法

还有两个要留心的地方。其一,思维链是模型写出来的文字,未必忠实反映它内部真正的计算过程;其二,只要奖励可以被钻空子,模型就会钻——比如写代码的任务里,它可能直接改测试或针对测试用例硬编码,而不是真去修 bug。可验证奖励省去了「打分器出错」的麻烦,却没有免除「奖励设计得不够严」的风险。

第 6 站

总结

💡 章节速记 · 本课核心

推理模型 = 同一个 Transformer + 可验证奖励的强化学习。它靠写出很长的思维链把难题摊到很多个 token 上,用 GRPO 这样的组内相对打分来训练;推理时花的算力越多通常越准(测试时计算),但收益递减,还要防过度思考与奖励投机。

💡 用大白话梳理:这一课的核心直觉

  • 动机:每个 token 的算力固定,难题需要更多步骤——让模型多写 token,就是让它多算。
  • 思维链:把难题拆成一串小步骤,中间结果写下来,注意力一瞥就能取到。
  • RLVR:数学、代码有标准答案,程序自动判分;不教「怎么想」,只奖励「答对」,好的推理习惯自己涌现。
  • GRPO:同一题采样一组解答,组内平均当基线,优势 = (r − mean)/std;全对或全错则没有学习信号。
  • 测试时计算:推理时多想几步换来更高正确率,但边际收益递减,还有过度思考、思路不忠实、奖励投机等坑。
小测验

学习小测验

动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)

Q1推理模型(如 o1、DeepSeek-R1 这一类)和普通的对话模型相比,最主要的不同是什么?
Q2在 GRPO 中,一组 8 条解答里有 3 条答对、5 条答错。下面说法哪一个正确?