推理旨在解决什么目标?
关于推理,有一个直观但过于简化的说法:让模型思考得久一点,它就更可能得出正确答案。这很符合人类的直觉——多花时间和精力思考,就更可能找到正确答案。
但这个说法并不能解释所有现象。在 RL 训练中,模型学会写更长的思维链,准确率也随之提升。可如果你拿一个训练好的模型,强行让某一条思维链跑得更长,一开始还有帮助,之后就不再有效了。1 有时答案甚至会变得更差,仿佛它在过度思考。2 如果思维链真的在向某个最优解收敛,更多的步骤不应该让结果变差。那么在推理时真正起作用的,究竟是不是每条链的长度?还是背后有更微妙的东西?
这篇文章是我试图厘清这个困惑的一次尝试(主要是为了自己想明白),方法是把推理看作在 token 空间中的寻路过程。我们会看到,RL 最大化的是「找到一条从 $x$ 到 $\Scal_x$ 的路径」的概率,但单条路径并不保证收敛到正确答案。作为附带收获,这个视角还能解释关于推理模型的一些奇怪现象,比如不忠实的思维链和 reward hacking。
把推理看作寻路#
把同一道数学题问推理模型十次,你会得到十条不同的思维链。与其把推理想象成一个奔向答案的神秘过程,不如把它看作 token 空间中的寻路:从题目到正确答案有许多条路径,模型每次采样就走其中一条。
以这道题为例:「$1 + 2 + 3 + \cdots + 10$ 等于多少?」一种解法是逐个累加:1、3、6、10……一直加到 55。另一种解法是从两头往中间配对:$1 + 10$、$2 + 9$、$3 + 8$、$4 + 7$、$5 + 6$,每对都是 11,五个 11 就是 55。这两条路径都到达了正确答案 55。
我们可以将推理过程视为遵循一种通用模式。给定一个起点,即提示词,我们将其记为 $x$。我们的目标是找到一条路径 $z$,它从 $x$ 出发,最终抵达一个正确答案 $y$。为了判断路径是否落在正确终点,我们假设存在一个验证器 $r(x, y)$:若 $y$ 正确则返回 1,否则返回 0。
因此,给定起点 $x$,我们需要找到一条由 token 组成的路径 $z$,使其落在集合 $\Scal_x = \{y : r(x, y) = 1\}$ 中。
本文顶部的示意图勾勒了这一图景。图中每条灰色线条代表一条采样路径:它们从左侧的提示词出发,通过在 token 空间中采样 $z$ 蜿蜒前行,其中部分路径最终落入 $\Scal_x$。
由于许多路径都落在 $\Scal_x$ 中,成功概率是所有这些路径概率的总和。设 $\pi(z \mid x)$ 为模型在提示 $x$ 下生成路径 $z$ 的概率,$y(z)$ 表示路径 $z$ 结束时的最终答案。成功概率等于生成每条路径的概率乘以该路径落入 $\Scal_x$ 的概率,并对所有路径求和:
$$p_x = \prob{\text{a path lands in } \Scal_x \mid x} = \sum_{z} \underbrace{\pi(z \mid x)}_{\text{samples path } z}\; \underbrace{\prob{y(z) \in \Scal_x \mid z}}_{\text{path } z \text{ lands in }\Scal_x}.$$第二个因子在路径落入 $\Scal_x$ 时为 1,否则为 0,因此我们只需对落入 $\Scal_x$ 的路径概率求和:
$$p_x = \sum_{z} \pi(z \mid x)\, \ind{y(z) \in \Scal_x} = \sum_{z \,:\, y(z) \in \Scal_x} \pi(z \mid x).$$我们将 $p_x$ 称为 成功概率。最大化这一概率,意味着模型更有可能采样到一条落入 $\Scal_x$ 的路径。
需要注意的是,提高这一概率有两种方式:模型可以采样多条通往同一答案的路径,每条概率较小;或者模型可以以极高概率采样一条通往答案的路径。成功概率不区分这两种情况,但在实践中,我们可能希望优先选择特定路径或确保采样的多样性3。
如何提高我们的成功概率?#
Best-of-$k$ 采样#
最简单的寻径方法是让模型 $\pi$ 持续采样路径 $z$,直到某条路径落入 $\Scal_x$ 为止。
既然我们假设存在验证器,就可以做 best-of-$k$ 采样:采样 $k$ 条路径,看是否至少有一条成功。每条路径失败的概率是 $1 - p_x$,所以 $k$ 条全部失败的概率是 $(1-p_x)^k$,成功概率就从 $p_x$ 提升到
$$\prob{\text{at least one of } k \text{ paths lands in } \Scal_x \mid x} = 1 - \underbrace{(1-p_x)^k}_{\text{all } k \text{ paths miss}}.$$这是一条确定的算力扩展路径。只要 $p_x > 0$,成功概率就会随着采样路径数量的增加而单调上升,所以把更多算力花在更多采样上总有帮助,Brown et al. 2024 早期就观察到了这一点。不过,这里的扩展靠的是采样数量,而不是路径长度(即“想得更久”)。
训练模型以生成更好的样本#
到目前为止模型是固定的,$p_x$ 也因此固定不变。那么能否改变模型,直接提高 $p_x$?
这里有一个简单做法:收集大量答案可验证的 prompt,对每个 prompt 从模型采样若干条路径,保留那些落入 $\Scal_x$ 的路径,再用它们训练模型,然后重复这个过程。每一轮都在训练模型,让它给采样出的成功路径分配更高概率。这个循环被称为 rejection-sampling fine-tuning(拒绝采样微调),STaR 是其在推理任务上的早期实现。如今推理模型所采用的带可验证奖励的强化学习(RL with verifiable reward),本质上做的几乎是同一件事。设 $\pi_\theta$ 为权重为 $\theta$ 的模型。由于 $r(x, y(z)) = 1$ 当且仅当 $y(z) \in \Scal_x$:
$$ \begin{aligned} p_x &= \sum_{z \,:\, y(z) \in \Scal_x} \pi_\theta(z \mid x) \\ &= \sum_{z} \pi_\theta(z \mid x)\, \ind{y(z) \in \Scal_x} \\ &= \sum_{z} \pi_\theta(z \mid x)\, r(x, y(z)) \\ &= \ev[z \sim \pi_\theta(\cdot \mid x)]{r(x, y(z))}, \end{aligned} $$也就是说,二值奖励的期望恰好就是成功概率 $p_x$。
通过 log-derivative 技巧对成功概率求梯度,我们得到
$$\grad_\theta\, p_x = \ev[z \sim \pi_\theta(\cdot \mid x)]{r(x, y(z))\, \grad_\theta \log \pi_\theta(z \mid x)},$$这正是策略梯度,也称为 REINFORCE 估计器。 现在用 $N$ 条采样路径 $z_1, \dots, z_N$ 来估计这个梯度。失败路径的 $r = 0$ 并会被剔除,而落入 $\Scal_x$ 的路径 $r = 1$。若 $N$ 条路径中有 $M$ 条成功,则估计值为
$$\grad_\theta\, p_x \approx \frac{1}{N} \sum_{i \,:\, \text{landed}} \grad_\theta \log \pi_\theta(z_i \mid x) = \underbrace{\frac{M}{N}}_{\text{success rate}} \cdot \underbrace{\frac{1}{M} \sum_{i \,:\, \text{landed}} \grad_\theta \log \pi_\theta(z_i \mid x)}_{\text{log likelihood of the successful paths}}.$$该梯度由两项组成:经验成功率 $M/N$,以及成功路径的平均对数似然。
换句话说,在二元奖励下进行 REINFORCE 的一步更新,等价于在模型自身采样路径上进行一次拒绝采样微调,并按当前成功率 $M/N$ 进行缩放。
这也解释了引言中的第一个观察现象,即在 RL 训练过程中思维链会变长。每一步更新都会让模型向成功路径靠拢,如果成功路径往往比失败路径更长(例如因为它们包含回溯操作、从环境获取了更多反馈,或者只是运气更好),模型就会学会生成更长的路径。
摊销与泛化#
在 RL 训练中,我们消耗大量算力搜索优质路径,再训练模型直接生成这些路径。训练完成后,模型无需再进行多路径采样等额外计算即可直接输出答案。这被称为搜索的摊销(amortizing):我们在训练阶段一次性支付搜索成本,从而避免每次向模型提问时都重复支付。4 由于我们使用单一模型在大量提示词上进行训练,该模型有可能泛化(generalize)到从未见过的新提示词。
下图展示了四个 prompt 的例子,每个 prompt 有各自的 $\Scal_x$,并在训练前后的模型之间切换。训练时,我们从每个 prompt 采样推理路径,保留成功的那些,再用它们做 SFT。百分比表示每个 prompt 的经验成功率。空心 prompt 是模型从未见过的新 prompt,但训练后模型能泛化到这个新 prompt 上。新 prompt 离训练分布越远,准确率就越低(试着拖动它!)。
重新审视关于 reasoning 的一些观察#
一旦我们把 reasoning 模型看作一个训练成在给定任意 $x$ 时落入 $\Scal_x$ 的分布,这些模型的一些奇怪现象就变得很好理解了。
思维链并不保证忠实#
上文中的验证器只检查答案是否正确:如果 $y(z) \in \Scal_x$ 就奖励 1,否则为 0。所以中间 token $z$ 只是模型抵达答案的一种手段。没有任何机制要求这些 token 必须真实,或者必须解释随后的答案——当然由于预训练的原因,两者往往相关。
如果我们想要有意义的思维链,就需要调整奖励或训练目标。
Reward hacking 同时来自验证器和采样器#
我们还假设验证器从不犯错,即当且仅当 $y$ 确实是 $x$ 的正确答案时才有 $r(x, y)=1$。但实践中验证器可能不完美,此时验证器接受的答案集合 $\Scal_x$ 就不再等于正确答案的集合:它可能包含错误答案,也可能漏掉正确答案。这种偏差为 $\Scal_x$ 开辟了模型可能学会落入的区域,尽管这并非我们的本意。
因此 reward hacking 有两个来源:一是不完美的验证器,它没能刻画我们真正想要的东西;二是不完美的采样过程,它没能避开这些捷径区域。
在下图中,虚线圆表示正确答案的集合,红色椭圆表示 $\Scal_x$。椭圆的末端伸向提示词方向,因此它的错误答案最容易触达,训练后大多数路径都会落在那里。
这个可视化还解释了为什么扩大 RL 规模(生成更多、更长的样本)会提高 reward hacking 的概率。我们对验证器的“模糊测试”越充分,就越容易找到落入 $\Scal_x$ 误指定区域的路径。一旦模型发现这条捷径,训练就会推动模型做出类似行为。
那么推理究竟在解决什么目标?#
推理其实并没有真正解决任何目标。单条路径并不保证收敛到正确答案。只有在路径分布的聚合层面,我们才能获得较高的成功概率。
RL 训练直接提升了成功概率 $p_x$,方法是投入大量算力搜索成功路径,并训练模型复现这些路径。思考时间更长之所以有帮助,是因为训练教会了模型利用额外的 token,而不是因为生成更多 token 本质上就更好。RL 采样阶段的成本被摊销到了模型权重中。推理时模型很可能在一次采样中就成功,但单次采样并不保证成功。
Muennighoff 等人(2025) 通过在模型试图停止时追加“Wait”来强制其继续思考。准确率起初上升,随后趋于平稳。 ↩︎
一个典型的例子是 Gema 等人(2025),他们发现了某些任务中推理时间越长准确率反而越低的案例。 ↩︎
我们可能会在未来的文章中重新探讨这一点。 ↩︎
用昂贵的搜索找到更好的答案,再训练网络以低成本方式直接输出这个答案,这种思路在语言模型之外也有应用。AlphaZero 在自我对弈的每一步都运行树搜索,并训练其策略网络倾向于选择搜索发现的走法(expert iteration 也是同样的思路)。物理学家和气象预报员用模拟器做类似的事情:先运行一次昂贵的人工设计模拟得到结果,再训练神经网络直接预测这个结果。↩︎