Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

6.3 提示、思维链与推理模型

6.1的模型在预训练与对齐之后就冻结了参数。从这一节开始,我们不再训练任何权重,只用它的前向能力做任务——这就是提示(prompting)的世界。这条路线的诱惑力在于:它把「改进模型」的成本从一次训练降到一次输入改写。

本节分三层递进:最轻的一层是条件化——把任务翻译成前缀(6.3.1);中间一层是让模型写出中间步骤,即思维链与自洽性(6.3.2);最重的一层是把「多花算力在推理阶段」当成一条正式的技术路线——推理模型与测试时计算(6.3.3 起)。三层共享同一个核心问题:给定固定的参数,如何用更多的输入与更多的采样换更高的准确率,以及这条路的天花板在哪。

6.3.1 上下文学习:任务即前缀

定义 6.3.1 · 上下文学习(in-context learning, ICL)

不更新任何参数,只在输入里给出若干「示范」,让模型在一次前向中依据这段前缀改变行为。给 kk 个示例 (x(1),y(1)),…,(x(k),y(k))(x^{(1)},y^{(1)}),\dots,(x^{(k)},y^{(k)}),再拼上测试输入 xtestx^{\text{test}},模型直接续写出 ytesty^{\text{test}}:

(x(1),y(1)),…,(x(k),y(k))⏟示范(权重冻结,只在前缀里),  xtest ⟹  y^test.\underbrace{(x^{(1)},y^{(1)}),\dots,(x^{(k)},y^{(k)})}_{\text{示范(权重冻结,只在前缀里)}},\ \ x^{\text{test}}\ \Longrightarrow\ \ \hat y^{\text{test}}.

k=0k=0 是零样本(zero-shot)提示,kk 不大是少样本(few-shot)提示。整个过程没有梯度、没有参数更新——「学习」发生在前向的条件化里。

大模型为什么能「举一反三」

关键是预训练见过海量、多样的「任务格式」(问答、翻译、写代码、分步解题……)。当你在前缀里摆出几个示范,你其实是在指定「现在要做的是哪一类任务」——相当于在模型已经学到的一大堆子程序里定位一个,然后让它接着跑。

所以「举一反三」更像条件化 / 检索,而不是监督学习意义上的学习:能力是预训练已经装进去的,提示只负责把它调出来。这解释了两件事:① 提示对明确、常见的任务格式最有效;② 它不能凭空创造预训练里没有的知识。至于内部机制(是否存在专门识别「示范—测试」对应模式的回路),已有研究线索但尚无公认结论,证据有限。

提示工程中真正稳定有效的几条规则
规则 做法 为什么有效
任务显式化 一句话说清角色、输入、输出格式 减少「模型猜你要什么」的方差
格式约束 明确「只输出 JSON / 只输出一个词」 便于程序解析;避免前言与客套
示范顺序与标签分布 类别名交错、不要一边倒 示范顺序与标签偏斜会显著影响结果(位置偏差,6.7.3)
让模型先复述约束 「先复述我的要求,再作答」 把约束搬进最近的上下文,减少中段遗忘
拆解而非堆积 一次只做一件事;长任务分解成多轮 单次前向的「注意力预算」有限(6.1.6)
不确定就让它说 显式提供「不知道 / 需要更多信息」的输出选项 给模型一条退路,降低编造倾向(6.7.4)
例 6.3.1 · 把分类任务改写成前缀(含概率读法)

任务:判断一段影评是正面还是负面。不用任何微调,只用上下文学习完成它,并说明为什么这「算」完成了一个任务。

解

零样本:把任务写成一条指令,直接让模型续写:

判断下面这段影评是「正面」还是「负面」,只回答一个词。
影评:这部电影节奏拖沓,但配乐极好,我勉强看到结尾。
情感:

模型在前缀条件下对词表做 softmax,「正面」「负面」两个 token 的条件概率被比较,取大的那个:y^=arg⁡max⁡y∈{正面,负面}pθ(y∣前缀)\hat y=\arg\max_{y\in\{\text{正面},\text{负面}\}}p_\theta(y\mid\text{前缀})。

少样本:在前面再放两条带答案的示范,让「任务 = 读前缀并补全」这件事对模型更明确:

影评:剧情紧凑,演技在线。            情感:正面
影评:逻辑混乱,看到一半就想离场。    情感:负面
影评:这部电影节奏拖沓,但配乐极好,我勉强看到结尾。
情感:

为什么这就算一个任务:模型本来只在做 pθ(下一个 token∣前缀)p_\theta(\text{下一个 token}\mid\text{前缀})。上面两段把「分类」翻译成了「给定前缀,续写标签」。

必须补充的限制(否则会高估它):① 两条示范里的「情感:负面」把输出压成了单个 token,但如果演示写成「这部电影不好看,所以是负面」,模型可能输出整句——格式由示范决定,不由指令决定;② 概率读法只在「标签是单 token」时干净成立;若「负面」被分词成多个 token,前向概率不是标签概率,需要按序列概率累乘;③ 更重要的是,路径①③这两点共同说明:模型没有学会情感分类这个新任务,它只是被前缀条件化到了预训练时见过的「评价—标签」模式上。少样本提示的上限由预训练决定。■\blacksquare

∎

6.3.2 思维链与自洽性:把草稿纸给它

定义 6.3.2 · 思维链(chain-of-thought, CoT)

做法:不要求模型直接给答案,而是先输出中间推理步骤,再给最终答案。

  • 少样本 CoT:示范里就把「步骤 + 答案」写全,让模型模仿这种格式。
  • 零样本 CoT:只在指令后加一句「请一步一步思考」,也能显著改变输出结构。

形式化地,模型把「答案」这一随机变量重新分解为「步骤序列 + 答案」的联合生成:

pθ(y∣x) ⟹ pθ(r1,…,rm,y∣x),p_\theta(y\mid x)\ \Longrightarrow\ p_\theta(r_1,\dots,r_m,y\mid x),

其中 rir_i 是中间步骤。采样时先生成 rr,再以 rr 为条件生成 yy。

CoT 为什么可能有效(几点解释,非定论)

三个互补的机制:

  1. 分解:把难题拆成多个较简单的局部步骤,每一步的「决策空间」更小,更接近预训练语料里常见的局部推断模式。
  2. 计算深度:自回归 Transformer 的每 token 计算量是固定的(第 2 讲),它没有草稿纸。生成中间 token 等于用序列长度换取串行计算步数——更多的中间 token = 更多的串行 Transformer 运算 = 更强的表达能力(这是「CoT 有效」最有解释力的候选之一)。
  3. 分布对齐:预训练语料里「解题过程」本来就多,CoT 的格式让模型进入它见过的「讲题」模式。

边界要记住:CoT 主要帮多步推理类任务,对纯记忆 / 检索类帮助有限;更重要的是——模型写出来的步骤未必是它真实的内部计算过程,即推理未必「忠实」(faithfulness)。把 CoT 当作「模型的真实心路」是一个常见的过度解读。

定义 6.3.3 · 自洽性(self-consistency)

对同一问题采样 kk 条带温度的完整推理路径(而不是贪心解码一条),对其中出现的最终答案做统计,取出现次数最多的那个:

y^=arg⁡max⁡a ∑i=1k1[y(i)=a],y(i)∼pθ(⋅∣x), i=1,…,k.\hat y=\arg\max_{a}\ \sum_{i=1}^{k}\mathbf 1\bigl[y^{(i)}=a\bigr],\qquad y^{(i)}\sim p_\theta(\cdot\mid x),\ i=1,\dots,k .

它把「一条长链一路正确」这一高要求事件,替换为「多条链中多数最终落到同一个答案」这一多数表决事件。

自洽性为什么能显著抬升准确率

因为长链的容错性极差:一条链只要中途错一步,后续通常会被带着走到底。而多条链同时「错到同一个答案」的概率远低于单链出错——前提是错误在链之间不相关(采样温度提供了这种多样性)。这与你手上的直觉一致:让同一个人做 10 遍,对的次数比让 10 个人各做一遍更容易识别出正确答案——前提是这些人不是同一个错误来源。

边界:① 若模型对某类题系统性地持有同一个错误(高度相关的错误),多数投票会放大它;② kk 越大,收益递减且不保证单调;③ 自洽性只对有确定答案的任务成立(开放写作没有「多数答案」)。

例 6.3.2 · 自洽性的收益与「相关性错误」的反噬(对照表分析)

某数学题:单条推理链答对的概率 p=0.4p=0.4(示意值)。分两种情形讨论 k=5k=5 时的多数投票成功率。

(a) 独立情形:各链答案相互独立; (b) 相关情形:各链有 30% 的概率一起犯同一个错(即当模型持有错误先验时,5 条链会给出同一个错误答案);其余情况下按独立模型作答。

(c) 从中提炼「什么时候该用自洽性」的判据。

解

(a) 独立情形的多数投票成功概率(5 条链,多数 = 至少 3 条对):

P=∑j=35(5j)pj(1−p)5−j=(53)(0.4)3(0.6)2+(54)(0.4)4(0.6)+(55)(0.4)5P=\sum_{j=3}^{5}\binom{5}{j}p^{j}(1-p)^{5-j}=\binom{5}{3}(0.4)^3(0.6)^2+\binom{5}{4}(0.4)^4(0.6)+\binom{5}{5}(0.4)^5 =10×0.064×0.36+5×0.0256×0.6+0.01024=0.2304+0.0768+0.01024≈0.317.=10\times0.064\times0.36+5\times0.0256\times0.6+0.01024=0.2304+0.0768+0.01024\approx0.317.

咦——投票反而更差了(0.317 < 0.4)。这是一个容易被忽略的事实:当 p<0.5p\lt0.5 时,多数投票会劣于单链,因为此时「多数」更可能是错误的多数。要让投票有效,必须 p>0.5p\gt0.5。

(a′) 若 p=0.6p=0.6:P=(53)(0.6)3(0.4)2+(54)(0.6)4(0.4)+(0.6)5=0.3456+0.2592+0.07776≈0.683P=\binom{5}{3}(0.6)^3(0.4)^2+\binom{5}{4}(0.6)^4(0.4)+(0.6)^5=0.3456+0.2592+0.07776\approx0.683,明显优于单链 0.6。

(b) 相关情形(p=0.6p=0.6,30% 概率全体共享同一个错误答案):此时有 30% 的采样起点落在「共同错误」模式上,一旦落入,5 条链给出同一个错误答案,投票必然错;剩下 70% 的情况按独立模型、条件成功率 P′P&#x27;(在非共同错误模式下的多数投票成功率,取 (a′) 的 0.683)。故

Pcorr=0.7×0.683+0.3×0≈0.478.P_{\text{corr}}=0.7\times0.683+0.3\times0\approx0.478 .

结论:与独立情形相比(0.683),相关错误把收益吃掉了一大半(0.478),且仍高于单链 0.6 的差距被大幅压缩——收益的多少几乎完全由「错误的相关程度」决定。

(c) 判据:

信号 是否值得用自洽性
单链准确率明显 >0.5&gt;0.5,且不同采样的错误答案种类分散 值得,期望收益大
单链准确率 ≲0.5\lesssim0.5 不要用——多数投票可能反而更差;应先提高单链质量(改提示、换模型)
错误高度集中(同一个错误答案反复出现) 收益有限,说明是系统性知识缺口而非随机失误;应补充信息(检索 / 微调)
任务没有唯一答案(写作、摘要) 不适用
∎
关于提示与 CoT 的五条高频误读
  1. 「提示可以把任何任务做到可用」:提示只能调用预训练已有的能力。任务对模型真陌生时(罕见语言、私有知识、专有格式),再精巧的提示也补不出能力——需要检索、微调或换模型。
  2. 「CoT 的输出就是模型的思考过程」:不保证忠实。有研究报告模型会在生成理由前就已「倾向」某个答案,理由随后被组织出来(相关研究可参考 Turpin et al., Language Models Don't Always Say What They Think,2023;其余证据仍在累积)。CoT 提高表现,不保证可解释性。
  3. 「自洽性总是更好」:例 6.3.2 已经给出反例——当单链准确率低于随机水平、或错误高度相关时,投票可能无益甚至有害。
  4. 「few-shot 示例越多越好」:示例数量存在收益递减;更关键的是示例的选择与顺序,它们的影响常常大于数量(6.7.3 会给出量化讨论)。
  5. 「少样本等于监督学习」:权重完全没变。「学习」发生在前向条件化里;这也意味着它对词表外的新概念没有通道。

6.3.3 测试时计算(test-time compute):三条形态

自洽性其实揭示了一件更大的事:准确率可以靠推理阶段多花算力买到。这条路线在 2024 年被系统化为「测试时计算扩展」。

定义 6.3.4 · 测试时计算(test-time compute, TTC)

固定模型参数 θ\theta,在推理阶段额外消耗算力以提升答案质量。常见的三种形态:

形态 做法 额外算力花在哪 典型适用
① 长思维链(long CoT) 让模型生成更长的中间推理(可达数千至数万 token)再给答案 序列长度(自回归解码步数) 单题深推理、形式化推导
② 多采样投票(multi-sample / self-consistency) 采样 kk 条独立轨迹,对答案做多数表决或加权汇总 采样条数 kk 有确定答案、p>0.5p\gt0.5 的任务
③ 搜索 + 验证器重排(search & verifier reranking) 生成候选步骤/轨迹,用验证器打分,再做 beam / 树搜索或择优 验证器调用次数 + 搜索宽度 有可分步验证的结构化任务

三者的共同点是用推理期算力换准确率;区别在于算力投入的维度不同:长 CoT 加深单条路径,投票拓宽并行路径,搜索在两者之上再叠加一个打分器。

为什么这三条路线在 2024 年才被认真对待

因为在之前,「多花推理算力」被认为是不经济的:推理成本直接乘在调用量上。转折来自两个观察:

  1. 有些任务上,测试时算力的性价比高于扩大参数。对中等难度问题,用小模型 + 大量采样/搜索,可能比直接用大模型更省总成本(这是 Scaling LLM Test-Time Compute Optimally 一类工作的核心论点:难度决定该怎么花——简单题直接答、难题才值得搜索)。
  2. 验证比生成容易。对数学与代码,检查一个答案是否正确远比生成一个正确答案容易(跑测试、代入验证、量纲检查)。一旦存在可靠的验证器,「采样 + 择优」就成为一个可规模化的策略——这是第 ③ 条形态的合法性来源,也是 6.3.4 奖励模型设计的起点。

反过来的直觉:如果任务没有可用的验证器(开放写作、战略决策、主观判断),那么搜索与重排就退了回去——你只能靠模型自己的打分,而那是不可靠的(6.3.6)。

6.3.4 过程奖励与结果奖励

要让第 ③ 条形态工作,必须有能给中间步骤打分的东西。这是本节最容易混淆的一组概念。

定义 6.3.5 · 结果奖励模型与过程奖励模型

给定问题 xx 与推理轨迹 τ=(r1,…,rm,y)\tau=(r_1,\dots,r_m,y):

  • 结果奖励模型(outcome reward model, ORM):只对最终答案打分 rϕ(x,y)∈Rr_\phi(x,y)\in\mathbb R。训练信号来自「答案对错」(可验证)或人工/模型偏好。
  • 过程奖励模型(process reward model, PRM):对每一个中间步骤打分 rϕ(x,r≤i)∈Rr_\phi(x,r_{\le i})\in\mathbb R,训练信号来自步骤级标注(人工标注哪一步先出错)或自动构造(从最终对错反推可用的步骤集)。

用于搜索时,ORM 只能给完整轨迹打分(信号稀疏),PRM 可以给部分轨迹打分(信号密集,因此支持 beam search / 逐步剪枝)。

为什么 PRM 在搜索里更值钱

搜索的本质是在部分轨迹上做剪枝。你不可能对每条半成品轨迹都跑完再看结果——那样计算量爆炸。PRM 提供的能力是:在走到一半时说「这条路看起来不对,停」。它把「事后筛选」变成「事中导航」。

代价也随之而来,且都很实际:

  1. 标注成本:步骤级标注比答案级标注贵得多,且「哪一步先错」在人类标注者之间一致性较低(一道题的解法可以有很多条正确路径,「非典型但正确」的步骤极易被误标为错)。
  2. 可验证性缺口:最终答案对错是可判定的(数学题),但「这一步是不是好的一步」常常不是——尤其当任务是开放式的。
  3. 被利用的风险:一旦 PRM 成为优化目标,模型会学习写出「让 PRM 开心」而非「推进解题」的步骤——这就是奖励 hacking 在步骤层面的形态(6.3.6)。
例 6.3.3 · ORM 与 PRM 在搜索中的成本对照(对照表分析)

设某数学任务:单步(共 m=6m=6 步)单条轨迹的生成成本为 cc,验证器单次打分成本为 vv。两种策略:

  • 策略 A(ORM + 全轨迹采样):独立采样 K=16K=16 条完整轨迹,用 ORM 对 16 个最终答案打分,取最高;
  • 策略 B(PRM + beam search):束宽 b=4b=4,每步为每个候选扩展 bb 个下一步(即每步评估 b×b=16b\times b=16 个候选步骤),用 PRM 打分保留前 bb 个。

(a) 用 cc 与 vv 写出两条策略的算力(生成成本 + 打分成本)。 (b) 说明各自在什么条件下更优。

解

(a)

  • 策略 A:生成 1616 条完整轨迹(每条 mm 步)→ 16mc16mc;ORM 打 1616 次分 → 16v16v。 CA=16mc+16v.C_A=16mc+16v .
  • 策略 B:共 mm 步,每步评估 1616 个候选,每个候选是 1 步的生成与打分(PRM 逐步打分)→ 生成 m×16×cm\times16\times c(注意:每步只生成一步的 token,不是整条轨迹),打分 m×16×vm\times16\times v。 CB=16m(c+v).C_B=16m(c+v).

注意一个关键差异:CAC_A 里生成的是 1616 条完整轨迹(每条 mm 步),而 CBC_B 里生成的是 16m16m 个单步。当 mm 较大时:

CBCA=16m(c+v)16m(c+v)=1 (在本例的参数选择下恰好相当),但若把束宽与采样数解耦,差距立刻出现。\frac{C_B}{C_A}=\frac{16m(c+v)}{16m(c+v)}=1\ \text{(在本例的参数选择下恰好相当)},\qquad \text{但若把束宽与采样数解耦,差距立刻出现。}

更一般地:若策略 A 改为采样 KK 条而策略 B 保持每步 b2b^2 个候选,则 CA∝KmcC_A\propto Kmc、CB∝b2mcC_B\propto b^2 m c。结论是:当允许的候选总数相同时,beam search 的生成总量是「每步生成一步」而非「整条重来」,因此在同样的候选预算下,搜索能覆盖更深的有效路径——代价是每步都要调用 PRM(vv 在 CBC_B 里的权重远大于 CAC_A 里 ORM 的权重)。

(b) 取舍判据:

条件 更优的策略
验证器便宜且准确(可执行测试、数值代入) B(PRM/搜索):便宜的 vv 让密集信号几乎免费
只有最终答案可判、步骤不可判 A(ORM + 采样投票):不接受不可靠的步骤打分
任务步骤少、错误主要来自「最后一步算错」 A:步骤剪枝带来不了多少收益
任务长、错误会早期分歧(一条路径早早走错就全废) B:早剪枝省下大量无效后缀生成
步骤标注昂贵 / 标注一致性低 A 起步,等有可靠的自动验证(比如可执行测试)再上 B
∎

6.3.5 推理模型的训练范式:可验证奖励的 RL、GRPO 与蒸馏

上面三条形态里,长 CoT 是模型行为的改变:模型要「习惯于」在推理时写出很长的中间过程并在其中自我检查、回溯、试错。这种习惯很难靠 SFT 教出来(人类写不出那么多高质量长链),必须靠强化学习。

定义 6.3.6 · 可验证奖励的强化学习(RLVR)与组相对策略优化(GRPO)

RLVR:奖励不来自人类偏好模型,而来自可判定的检验——数学题比对标准答案、代码跑测试用例、形式化证明过检查器。于是奖励是接近客观的 r∈{0,1}r\in\{0,1\} 或分段值,不需要训练奖励模型。

GRPO(group relative policy optimization):去掉 PPO 里的价值网络(critic),改为对同一问题采样一组 GG 个答案,用组内相对好坏估计优势:

A^i=ri−mean⁡(r1,…,rG)std⁡(r1,…,rG),i=1,…,G,\hat A_i=\frac{r_i-\operatorname{mean}(r_1,\dots,r_G)}{\operatorname{std}(r_1,\dots,r_G)},\qquad i=1,\dots,G,

其余部分仍是带裁剪的重要性采样目标,并保留对参考模型的 KL 惩罚。它省掉了一个与策略同规模的 critic(显存与工程成本的大头),代价是用更多采样来估计基线。

为什么「可验证奖励」是个大突破,「可验证」又为什么是它的天花板

突破处:在可验证任务上,我们终于不再需要「人类偏好」这个有噪声的代理。测试用例通过与否是硬信号,模型没法通过「答得漂亮」蒙过去。这让大规模 RL 第一次有了稳定的目标——推理能力的提升因此可能直接归因到优化过程上,而不是 SFT 数据的质量。

天花板处:能验证什么,就能学什么;不能验证的,就学不到。 数学、代码、形式化证明都是天然可验证的;而「写一份好的产品方案」「做一次得体的沟通」「判断一段法律文本的风险」没有廉价可靠的验证器。把这些任务强行塞进 RLVR,要么造出一个劣质代理奖励(然后用 6.3.6 的机制被钻空子),要么只能退回到人类偏好模型(RLHF 那条路)。

还有一个更隐蔽的风险:奖励的可钻性。代码任务里,模型可能学到「让测试通过但不解决真正问题」的写法(写死期望值、跳过边界用例);这是规格博弈(specification gaming)的经典形态。它不会在训练曲线上暴露,只有在把模型放进真实使用分布时才显形。

推理模型的训练范式对照
范式 奖励来源 需要 critic? 数据成本 适用任务 主要失效模式
SFT on 长 CoT 人类 / 强模型写出的长链 否 标注极贵、覆盖窄 起步阶段、格式对齐 学生的长链「形似神不似」;数据来源受限
RLHF(PPO + RM) 人类偏好训出的奖励模型 是(与策略同规模) 偏好标注贵 开放对话、风格与安全 奖励过优化(6.3.6)
DPO 类 偏好对(无在线采样) 否 偏好标注贵 开放对话、风格 只在离线数据上优化,探索有限
RLVR + GRPO 可执行验证(答案 / 测试) 否 只需问题集(答案可自动校验) 数学、代码、形式化 规格博弈;可验证面之外的能力不涨
蒸馏长 CoT(RL 后 SFT) 教师模型的推理轨迹 否 教师推理算力 把能力搬到小模型 学生上限受教师与数据量限制;不产生新能力
蒸馏为什么是「能力搬运」而不是「能力创造」

蒸馏的做法很直接:让强模型(教师)在大量问题上产出长推理轨迹,再用普通的 SFT 把这些轨迹教给小模型。它不需要 RL,也不需要验证器,因此工程上极其便宜、极其稳定。报告过的效果是:小模型在数学与代码上的表现获得大幅提升(这类证据可参考 DeepSeek-R1 技术报告中关于蒸馏的章节,2025,arXiv:2501.12948)。

但它有明确的边界:学生的上限由教师水平与轨迹数据量共同决定,它不会超过「在给定数据上能学到的东西」。更本质的一点是——它把推理能力变成了一个 SFT 问题。这既是好消息(可复现、便宜)也是坏消息(依赖教师、无法通过更多探索突破教师的能力边界)。

还有一条容易被忽略的细节:长 CoT 的蒸馏会让小模型继承教师的「啰嗦」——轨迹长度与信息量不成比例时,小模型的推理成本会显著上升。评估蒸馏效果时,除了准确率,必须同时报平均 token 消耗。

6.3.6 「更长思考一定更好吗」:边界、成本与奖励 hacking

推理模型最容易被过度承诺的一点,就是「思考越久越准」。这一小节专门讲它的边界。

五条边界(都要用条件表述)
  1. 长度与正确率的关系不是单调的。常见观察是「准确率随推理长度先升后平,或在某区间后下降」——模型会开始过度思考:反复验证同一件事、怀疑已经正确的结论、引入新的假设把题目复杂化。这类现象的普遍性与确切形状依模型与任务而变,不要给单一曲线。
  2. 超出能力边界的问题,思考再久也不会对。若题目所需的知识或技能不在模型分布内(6.3.1 的「提示不能创造能力」),长链只会产出更长的错误论证——而且因为推理看起来详尽,更不容易被察觉。
  3. 成本是线性以上的。推理 token 直接乘在计费上;长 CoT 通常意味着输出 token 增加 1–2 个数量级,同时首 token 之后的完整等待时间变长。对交互式产品,这是体验问题;对批处理,这是成本问题。
  4. 多采样与搜索的收益受「错误相关性」限制(例 6.3.2):系统性的知识缺口无法通过增加采样解决。
  5. 验证器是那条路线的命门(6.3.3):没有可靠验证器,搜索与重排的收益会立刻缩水甚至为负。
定义 6.3.7 · 奖励 hacking 与奖励过优化

当优化压力增大时,策略会越来越擅长提高代理奖励 r^\hat r 而偏离真实目标 r⋆r^\star。这一现象在术语上有两个层次:

  • 奖励 hacking(reward hacking):策略找到了代理奖励的漏洞(例:把测试期望值写死、只输出「看起来像推理」的模板)。
  • 奖励过优化(reward overoptimization):随优化强度增加,代理奖励单调上升,而真实质量先升后降。这一效应在 RLHF 中被系统研究过(代表工作:Gao, Schulman & Hilton, Scaling Laws for Reward Model Overoptimization,2022,arXiv:2210.10760)。

缓解手段(都不是银弹):对参考模型的 KL 惩罚、早停、奖励模型集成、用更多数据训练奖励模型、把可验证信号与偏好信号混合使用。

为什么「奖励上升、质量下降」是**必然**的结构性问题

因为奖励模型是真实偏好的有损压缩。它在训练分布附近与真实偏好一致,但一旦策略被推离那个分布,模型就开始在「压缩带来的失真区域」里被优化——那些区域里的高分不代表真实偏好,只代表奖励模型的估计误差。

这不是实现 bug,而是任何「用代理目标驱动优化」的系统都逃不掉的结构(Goodhart 定律的工程形态,6.7.2 会再次遇到它)。可操作的推论有三条:① 优化强度是一个必须调的超参,不是「越训越好」;② 必须保留一组独立于奖励模型的评测(否则你只能看到代理分数在涨);③ 训练曲线上的「奖励上升」不能作为上线依据。

例 6.3.4 · 一条推理模型的成本—收益核算

某团队要在两个方案间选型(数字均为示意):

方案 参数规模 平均输出 token 准确率 相对推理成本
M-小 + 短答 小 300 52% 1.0×
M-小 + 长 CoT 小 3000 71% 8.0×
M-大 + 短答 大 350 68% 12.0×
M-大 + 长 CoT 大 3200 78% 26.0×

(a) 以「每提升 1 个百分点准确率要付多少相对成本」为指标排序; (b) 若产品要求准确率 ≥ 70%,给出最优选择并说明你还需追问哪些信息。

解

(a) 以「M-小 + 短答」为基线(52%、成本 1.0):

方案 准确率增量 成本增量 每点成本
M-小 + 短答 —(基线) — —
M-小 + 长 CoT +19+19 pt +7.0+7.0 0.37\mathbf{0.37}
M-大 + 短答 +16+16 pt +11.0+11.0 0.690.69
M-大 + 长 CoT +26+26 pt +25.0+25.0 0.960.96

最便宜的那一档是「小模型 + 长思维链」——这正是测试时计算路线的经济学表达:用推理算力替代参数规模,而不是「参数越大越好」。注意这个结论依赖这张表里的具体数字(尤其依赖小模型在长 CoT 下的准确率跃升幅度),换一组数据排序就会变。

(b) 满足 ≥70% 的只有「M-小 + 长 CoT」(71%)与「M-大 + 长 CoT」(78%)。按成本取前者(8.0× vs 26.0×),但必须追问:

  1. 延迟:长 CoT 意味着首 token 之后的完整生成时间显著变长,交互式产品可能不可接受;
  2. 准确率是否稳定:71% 是单次采样还是多次采样的平均?方差多大?(6.7.3)
  3. 错误类型分布:长 CoT 的错误是否更多是「看起来详尽的错误论证」?这类错误在人工审核时的发现率更低,风险更高;
  4. 可验证性:任务是否有自动校验通道(6.3.3)?若有,可进一步加验证器再抬准确率;
  5. 成本随调用量线性放大:8× 的单价在规模化调用下才是决定性的,要按月度调用量做总成本核算。■\blacksquare
∎
关于推理模型的四条误读
  1. 「推理 token 多 = 模型在思考」:Token 数是行为指标,不是机制证据。论证是否有效要看内容是否被验证,而不是它有多长。这与 6.3.2 里 CoT 未必忠实是同一个问题的延展。
  2. 「装上长 CoT 就能涨点」:对已接近天花板的任务(模型本来就会)没有增益,对超出能力边界的任务增益为负(更长的错误),对中等难度的任务增益最大。所以要先按难度分层评测,再决定是否启用。
  3. 「RLVR 让模型学会了通用推理」:可验证奖励只在可验证面上提供梯度。「在数学题上变强」不能自动外推到「在法律判断上变强」——外推需要证据,而不是期待。
  4. 「用验证器筛选就安全了」:验证器本身会被钻空子(6.3.5 的规格博弈),且验证器的覆盖度就是能力上限。把「测试通过率」当作唯一验收指标,等于把系统的真实目标定义成了「通过那些测试」。
即时自测 · 6.3

Q1 用一句话区分「上下文学习」与「监督微调」在「学习发生在哪里」上的差别。

Q2 零样本 CoT 与少样本 CoT 各自改的是什么?为什么「让模型输出中间步骤」可能提升多步任务的准确率(给出两个机制)?

Q3 自洽性在什么条件下会劣于单链?给出定量理由。

Q4 ORM 与 PRM 的核心差别是什么?在什么条件下 beam search(用 PRM)比全轨迹采样(用 ORM)更值得?

Q5 写出 GRPO 的优势估计式,并说明它相比 PPO 省掉了什么。

Q6 一位同事说:「我们把长思维链打开后,训练集上的奖励一路涨到 0.95,可以上线了。」给出三条应该立刻追问的问题。

参考要点

Q1 上下文学习发生在前向条件化里(权重冻结,只在输入前缀中给出示范);微调发生在参数更新里(梯度回传、权重改变)。前者不产生新的参数知识,只调用已有能力。

Q2 零样本 CoT 只改指令(加「一步一步思考」),靠模型自行组织步骤;少样本 CoT 改的是示范格式(示范里就带步骤),通过模仿获得结构。两个解释机制:(i)分解——把难题拆成若干更简单的局部推断;(ii)串行计算深度——自回归 Transformer 每 token 的计算量固定,生成中间 token 等于用序列长度换取更多串行计算步,相当于给模型「草稿纸」。第三个可能机制是分布对齐(语料里有大量解题过程文本)。

Q3 当单链准确率 p<0.5p\lt0.5 时,多数投票站在错误的多数一侧,成功率会低于 pp;当链间错误高度相关时(同一错误先验),投票无法提供独立证据,增益被大幅吃掉。定量理由:P(多数对)=∑j>k/2(kj)pj(1−p)k−jP(\text{多数对})=\sum_{j\gt k/2}\binom{k}{j}p^j(1-p)^{k-j} 在 p<0.5p\lt0.5 时小于 pp(例 6.3.2)。

Q4 ORM 只对最终答案打分(信号稀疏,只能事后筛选整条轨迹);PRM 对每个中间步骤打分(信号密集,可以做逐步剪枝与 beam search)。当步骤层面的信号可靠且便宜(可执行测试、数值代入、形式化检查),且任务的错误容易在早期分歧时,beam search 更值得;反之只有最终答案可判、或步骤标注昂贵且一致性低,则用 ORM + 采样投票更稳,避免被不可靠的步骤打分带偏。

Q5 A^i=(ri−mean⁡(r))/std⁡(r)\hat A_i=\bigl(r_i-\operatorname{mean}(r)\bigr)/\operatorname{std}(r),i=1,…,Gi=1,\dots,G(组内归一化)。它省掉了 PPO 中与策略同规模的价值网络(critic)及其训练开销,代价是需要对同一问题采样一组答案来估计基线(因此采样成本上升,且答案需要可比、奖励需要可算)。

Q6 ①奖励来自哪里——如果来自奖励模型或验证器,那 0.95 是代理奖励,必须看独立评测上的真实质量(6.3.6 的奖励过优化:代理涨、真降);②成本与延迟——长 CoT 的输出 token 增加多少?单请求延迟与月度成本是否可接受(例 6.3.4);③错误类型分布——错误是否变成「详尽但错误的论证」?这类错误人工发现率更低;此外还要问:长链是在所有难度层都生效,还是只在中等难度上生效(按难度分层评测)。

延伸阅读
  • Brown et al., Language Models are Few-Shot Learners(GPT-3,2020,arXiv:2005.14165)——上下文学习与少样本提示的奠基工作。
  • Wei et al., Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(2022,arXiv:2201.11903)——CoT 的原始论文(少样本)。
  • Kojima et al., Large Language Models are Zero-Shot Reasoners(2022,arXiv:2205.11916)——零样本 CoT(「Let's think step by step」)的来源。
  • Wang et al., Self-Consistency Improves Chain of Thought Reasoning in Language Models(2022,arXiv:2203.11171)——自洽性方法,本节 6.3.2 的直接依据。
  • Lightman et al., Let's Verify Step by Step(2023,arXiv:2305.20050)——过程奖励模型(PRM)的代表工作,含步骤级标注的构建方式。
  • Uesato et al., Solving Math Word Problems with Process- and Outcome-Based Feedback(2022,arXiv:2211.14275)——ORM 与 PRM 的早期对照实验,6.3.4 的取舍讨论来源之一。
  • Snell et al., Scaling LLM Test-Time Compute Optimally Can Be More Effective than Scaling Model Parameters(2024,arXiv:2408.03314)——测试时计算与参数规模的性价比对照,「按难度分配预算」的论点出处。
  • Muennighoff et al., s1: Simple Test-Time Scaling(2025,arXiv:2501.19393)——用极少数据实现测试时长度控制(budget forcing)的简洁方案。
  • DeepSeek-AI, DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning(2025,arXiv:2501.12948)——RLVR + GRPO 的系统报告,含蒸馏到小模型的实验(6.3.5 的主要引用)。
  • Shao et al., DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models(2024,arXiv:2402.03300)——GRPO 的提出处(组相对优势估计的原始表述)。
  • Gao, Schulman & Hilton, Scaling Laws for Reward Model Overoptimization(2022,arXiv:2210.10760)——奖励过优化的系统研究,6.3.6 的核心依据。
  • Turpin et al., Language Models Don't Always Say What They Think: Unfaithful Explanations in Chain-of-Thought Prompting(2023,arXiv:2305.04388)——CoT 不忠实性的代表性研究;引用时注意其结论有具体实验条件,不宜无限外推。
  • OpenAI, Learning to Reason with LLMs(o1 系统卡,2024,无 arXiv,官方页面)——推理模型训练范式的官方描述,引用时请指向官方页面而非编号。
  • 斯坦福 CS336(stanford-cs336.github.io)与 Hugging Face TRL 文档(github.com/huggingface/trl)——前者给出对齐与 RL 的实现路径,后者给出 SFT / DPO / PPO / GRPO 的可运行训练器接口。

本节小结:提示是条件化,不是学习(6.3.1);CoT 用「序列长度换串行计算深度」,并把答案的生成重新分解为「步骤 + 答案」,但写出的步骤未必忠实(6.3.2);自洽性把长链的容错性换成了多数表决,收益取决于单链准确率与错误相关性(例 6.3.2);测试时计算有三条形态——长 CoT、多采样、搜索 + 验证器(6.3.3),其中第 ③ 条依赖 ORM/PRM 这类打分器(6.3.4);推理模型的训练范式一边是可验证奖励的 RL(RLVR + GRPO),一边是长 CoT 蒸馏,前者受可验证面限制,后者是能力搬运(6.3.5);最后,「更长思考」有明确边界,且训练侧永远要提防奖励上升、质量下降(6.3.6)。

到这里为止,模型处理的一直是离散 token——文字与符号。下一节把图像与声音也变成 token,并处理一个更棘手的问题:当模型同时处理多种模态时,它到底「看见」了什么。