一道答案是整数的竞赛题,模型采样 64 次:26 次答 A,30 次答 B,剩下 8 次各不相同。投票会交出 B;如果正确答案是 A,采样再多也只会让 B 赢得更稳。投票最终收敛到模型最常给出的那个答案,所以它只在正确答案本来就是众数时有用;验证器可以绕开这一点,但它放过错解的比例定下了能达到的上限。

待审核草稿。 这一篇还没有经过站主审阅,事实、取舍和措辞都可能修改;引用前请回到文中链接的一手资料核对。

先分清三件事:覆盖、挑选、搜索

  • 覆盖:N 份样本里至少有一份是对的。单题单次答对的概率是 $p$、各次独立时,覆盖率(coverage)是 $1-(1-p)^N$。
  • 挑选:从 N 份里交出一份。投票、验证器、奖励(reward)模型都属于这一步。
  • 搜索:不等整份答案写完,在中间步骤上就分配计算,只保留有希望的前缀。

覆盖只说明正确答案在样本里,不说明你能把它交出来。Brown 等(2024-07)在多个任务上看到,覆盖率在四个数量级的采样数上近似对数线性增长;在 SWE-bench Lite 上,DeepSeek-Coder-V2-Instruct 采 1 次解决 15.9%,采 250 次 56%,因为每份补丁都能直接跑测试。没有自动验证器的任务上,他们发现投票和奖励模型在几百个样本以后就不再随采样数增长。覆盖和挑选之间差的那一截,就是这一篇要讲的东西。pass@1 和 pass@k 的一般关系,站内对齐税已经讲过。

覆盖率(有完美验证器时的成绩)和几种常用挑选方法(多数投票、奖励模型挑选、奖励模型加权投票)随采样数的变化:覆盖率接近 100%,各种挑选方法却在 100 个样本之前就饱和,一直低于覆盖率。
原文图覆盖率(有完美验证器时的成绩)和几种常用挑选方法(多数投票、奖励模型挑选、奖励模型加权投票)随采样数的变化:覆盖率接近 100%,各种挑选方法却在 100 个样本之前就饱和,一直低于覆盖率。图源:Brown et al., 2024 · Large Language Monkeys · Figure 7 · CC BY 4.0 · 转为 WebP

多数投票:手算一次

Self-consistency(Wang 等,2022-03,ICLR 2023)采样多条推理路径,只看最终答案,选出现次数最多的那个;原文报告在 GSM8K 上比贪心解码的思维链高 17.9 个点。下面用三种手造的答案分布算多数投票的准确率 maj@N。规则:交出票数最多的答案,平票时随机选一个。

情形一:错误答案各不相同。 $p=0.4$,错的那 60% 每次都是不同的数,比如算错的方式五花八门。N=3 时,设正确答案拿到 $a$ 票:

$$ \text{maj@3}=P(a\ge2)+\tfrac13P(a=1)=(0.064+0.288)+\tfrac13\times0.432=0.496 $$

$a=1$ 时三个答案各一票,三方平票,随机选中正确答案的概率是 1/3。N=5 时同样的算法给出 $0.663+\tfrac15\times0.259\approx0.715$:两票就已经是唯一的最高票。

情形二:错误答案集中在一个。 还是 $p=0.4$,但错的那 60% 全是同一个答案 B,比如题目里有个常见陷阱。这时正确答案必须过半才能赢:maj@3 $=P(a\ge2)=0.352$,maj@5 $=P(a\ge3)\approx0.317$,比只采一次还低。

情形三: $p=0.6$,错误答案集中在一个 B(0.4)。maj@3 $=0.648$,maj@5 $\approx0.683$。

单题的答案分布 N=1 N=3 N=5 N→∞
对 0.4,错误各不相同 0.400 0.496 0.715 1
对 0.4,错误全是 B(0.6) 0.400 0.352 0.317 0
对 0.6,错误全是 B(0.4) 0.600 0.648 0.683 1

N 越大,投票越接近“交出模型在这道题上的众数答案”。规律只有一条:正确答案是这道题的众数,投票就有用;不是,投票会把错误答案投得更稳。 情形一和情形二的 $p$ 一样,结论相反,差别只在错误答案是分散还是集中。数据集上的平均准确率混合了这两类题,所以平均 $p$ 推不出投票之后的平均成绩,得逐题看。

公开结果里两种情况都有。OpenAI 2024-09-12 自报 o1 在 AIME 2024 上 pass@1 74.4%、64 票投票 83.3%;同一张表里 GPQA Diamond 的生物子集,64 票投票 68.4%,pass@1 69.2%,投票没有帮上忙(差距很小,说明不了投票有害)。Let's Verify Step by Step 里,多数投票在每题 1860 个样本时停在 69.6%,低于两种奖励模型。投票还要求答案能判等:数值、选项可以直接比,开放写作就得请 judge 判“是不是同一个意思”,judge 自己的问题见 LLM-as-a-Judge。

Best-of-N 加验证器:误判率定下上限

换一种挑法:每份样本交给验证器,它只说接受或拒绝。设验证器接受正确答案的概率是 $r$,错误地接受错误答案的概率是 $f$(false positive rate),而且对每份样本独立判断。策略是:采 N 份,交出任意一份被接受的;一份都没被接受,就交第一份。

单份样本被拒绝的概率是 $q=1-pr-(1-p)f$;被接受的样本里正确的比例(精度)是 $pr/\big(pr+(1-p)f\big)$。于是

$$ \text{acc}(N)=\big(1-q^N\big)\cdot\frac{pr}{pr+(1-p)f}+q^N\cdot\frac{p(1-r)}{q} $$

第一项是“至少一份被接受”时交对的概率,第二项是全被拒绝、只好交第一份时碰巧对的概率。取 $p=0.4$、$r=1$(正确答案总被接受),第二项为 0:

放过错解的比例 $f$ N=1 N=4 N=16 上限(N→∞)
0(完美验证器) 0.400 0.870 1.000 1
0.1 0.400 0.796 0.870 0.870
0.3 0.400 0.668 0.690 0.690

验证器完美时,best-of-N 就等于覆盖率 $1-0.6^N$。只要 $f>0$,再多采样也只能逼近精度 $0.4/(0.4+0.6f)$:$f=0.1$ 时 87.0%,$f=0.3$ 时 69.0%。$r<1$ 也会压低上限,比如 $r=0.8$、$f=0.1$ 时精度是 $0.32/0.38\approx84.2\%$。这两个数和生成、验证、再训练里“测试放过错解”的算例完全一样:推理时用验证器挑答案,和训练时用它筛数据,撞上的是同一个上限。

再和投票比。情形二(错误全是 B)里投票会趋向 0,而 $f=0.1$ 的验证器仍能到 87%,因为验证器带来了模型分布之外的信息。但上面假设验证器对每份样本的误判是独立的。如果它恰好也掉进 B 那个陷阱,每次都接受 B(对 B 来说 $f=1$),被接受的样本里正确的比例就退回 0.4,跟只采一次一样。验证器有没有用,要看它的错误和生成器的错误是否相关。

验证器给的是分数而不是 0/1 时,常见做法是取最高分。N 越大,越容易挑到“分数高但其实错”的样本,拒绝采样里有一个两份样本就能看出来的反例。Snell 等报告,用公开的 PRM800K 训练的过程奖励模型去挑 PaLM 2 的答案,连朴素的 best-of-N 都能钻到它的空子,他们归因于两边生成模型的分布不同。

结果奖励模型和过程奖励模型

验证器可以是程序(单元测试、答案比对、Lean),也可以是训练出来的模型。后者分两种:结果奖励模型(ORM)只看整份答案给一个分;过程奖励模型(PRM)给每一步打分,再合成整份答案的分数。

Lightman 等(2023-05)用从 GPT-4 微调(fine-tuning)的生成器,在 500 道 MATH 测试题上比较:每题 1860 个样本里挑一个,PRM 挑对 78.2%,ORM 72.4%,多数投票 69.6%,而且 N 越大 PRM 领先越多。PRM 的训练数据 PRM800K 是 1.2 万道题、7.5 万份解答上的 80 万个步级人工标注;标注时专门挑当前 PRM 打高分、最终答案却错的“有说服力的错解”给人看。整份答案的分数取各步“正确”概率的乘积。这项研究固定生成器,比的是挑答案的本事,没有用 RL 训练生成器,可验证奖励专门讨论过这一区别。

PRM 难在标注,也难在定义“一步”。Snell 等改用 Monte Carlo rollout 估计“走到这一步之后还能做对的概率”来训练 PRM,不要人工标注;整份答案取最后一步的分数;再把最终答案相同的所有样本的分数加起来比较(他们叫 best-of-N weighted),等于把投票和验证器合在了一起。DeepSeek-R1 v1 报告(§4.2)把 PRM 列为没成功的尝试:一般推理里很难定义细粒度的步,模型自动标注效果不好、人工标注又难以扩展,神经网络 PRM 放进大规模 RL 会被 reward hacking。他们的结论是 PRM 适合给 top-N 重排或辅助搜索,但在大规模 RL 里收益抵不过开销。

证明题没有可以比对的最终答案。DeepSeekMath-V2(2025-11-27)先训练一个给证明找问题、打分的 LLM 验证器,再用它当证明生成器的奖励,并用更多验证计算去标注难验证的新证明,让验证器跟上越来越强的生成器。推理时每题维护一个候选(candidate)池:先生成 64 份证明、每份验证 64 次;每轮挑平均分最高的 64 份,各配 8 条验证意见去改,最多改 16 轮,或者直到某份证明 64 次验证全部通过。论文自报 IMO 2025 解出 6 题中的 5 题、Putnam 2024 得 118/120,评分由他们请的数学专家完成。

在中间步骤上搜索

Best-of-N 等整份答案写完才挑;搜索在写的过程中就用打分器剪枝。Snell 等比较了三种做法(§5.2):

  • Beam search:每一步采样若干候选,按 PRM 分数留下 $M$ 个前缀继续写。结构和解码里的 beam search一样,只是打分从似然换成了 PRM。
  • Lookahead search:给每个候选步再往前滚 $k$ 步,用滚出来的结果给这一步打分,花费按 $N\times(k+1)$ 个样本算。$k=0$ 就是 beam search;它也可以看作去掉随机探索的 MCTS。
  • Best-of-N weighted:上一节的整份挑选,作为基线(baseline)。

结果是:预算小时 beam search 明显好于 best-of-N;预算加大后收益变小,最后反而低于 best-of-N;同样预算下 lookahead 普遍更差。按难度拆开看,简单题上 beam search 随预算增加反而变差,是在过度优化 PRM;中等难度的题上 beam search 稳定更好;最难的题上几种方法都不太行。这和 Model-based RL 里“规划越努力,越会钻模型漏洞”是同一件事:打分器有错时,搜索越强,越会把它的错找出来。

更早的 Tree of Thoughts(Yao 等,2023-05)把中间“想法”当作树的节点,用 BFS 或 DFS 加上模型自我评估来搜索,GPT-4 在 24 点游戏上从思维链的 4% 提到 74%(宽度 5)。DeepSeek-R1 v1 报告也试过 MCTS:token 空间太大,只能限制每个节点的扩展数,容易困在局部最优;细粒度的价值模型很难训练,靠自我搜索迭代提升做不起来。他们的结论是:配上预训练(pre-training)好的价值模型,MCTS 能在推理时提分,但用它反复训练出更强的模型仍然很难。

Compute-optimal:Snell 等到底说了什么

这篇常被简化成“小模型多想能打败 14 倍大的模型”。准确的说法要带上条件:摘要说的是,按 FLOPs 对齐比较、在小模型已经有一定成功率的题上,“test-time compute can be used to outperform a 14x larger model”,即测试时计算可以胜过一个大 14 倍的模型。

设定。 模型是 PaLM 2-S*,题目是 MATH(沿用 Lightman 等的 1.2 万训练、500 测试划分)。比较两种花测试时计算的机制:用 PRM 做搜索;微调一个看着前几版答案修改的模型,在推理时串行修改。

定义(式 1)。 给定题目 $q$ 和预算 $N$,测试时策略的超参数 $\theta$(比如 beam 宽度、串行和并行的比例)决定输出分布 $\text{Target}(\theta,N,q)$:

$$ \theta^{*}_{q}(N)=\arg\max_{\theta}\;\mathbb{E}_{y\sim \text{Target}(\theta,N,q)}\big[\mathbf{1}\{y=y^{*}(q)\}\big] $$

$y^*(q)$ 是标准答案。意思是:对每道题、每个预算,选能让答对概率最大的那种花法。

近似。 每道题的最优 $\theta$ 事先不知道,他们用“难度”当充分统计量:用基座模型的 2048 个样本估计每题的 pass@1,分成 5 档。oracle 版用标准答案判对错;predicted 版只用 PRM 的平均最终分数,不看答案。然后为每一档挑最好的策略;为了不在同一批题上既挑又测,他们在测试集的每一档里做两折交叉验证。

结论。 第一,按难度选策略,无论用 PRM 搜索还是串行修改,都能用最多少 4 倍的测试时计算达到接近 best-of-N 的准确率。第二,串行和并行的比例有最优点:简单题更受益于串行修改,难题需要两者平衡。第三,和放大参数比(§7):预训练 FLOPs 记为 $6ND_{\text{pretrain}}$,推理 FLOPs 记为 $2ND_{\text{inference}}$。参数放大 $M$ 倍,两项都放大 $M$ 倍;小模型要花同样多的总 FLOPs,推理计算可以乘以

$$ K=M+3\,\frac{D_{\text{pretrain}}}{D_{\text{inference}}}\,(M-1) $$

记 $R=D_{\text{inference}}/D_{\text{pretrain}}$。论文取 $M\approx14$ 和三个 $R$,代进去:

$R$ 场景 小模型可以多花的推理计算 $K$
0.16 推理量远少于预训练,比如自我改进回路 $14+3\times6.25\times13\approx258$ 倍
0.79 两者相当 约 63 倍
22 推理量远大于预训练,比如大规模服务 约 16 倍

推理负载越重,大模型多出的预训练成本摊得越薄,小模型能多花的计算就越少。论文的结论(图 9)是:简单和中等难度的题、或者推理负载低($R\ll1$)时,测试时计算更划算;最难的题、或者推理负载高($R\gg1$)时,放大预训练更有效。作者明确说两者不是 1 对 1 可换的。

不能据此推出什么。 结论来自一个模型家族和一个数学数据集,早于 R1 这类用 RL 训练长链的模型;估计难度本身也要花计算;“14 倍”是他们选的对照,不是普遍的换算率。

真实系统里的数字

下面都是公司或作者自报的结果,条件各不相同,不能互相比较:

  • o1(OpenAI,2024-09-12):AIME 2024 上单样本 74%,64 个样本投票 83%,用学到的打分函数在 1000 个样本里重排 93%。IOI 2024 中,每题从大量候选里按公开测试、模型生成的测试和打分函数选出 50 份提交,得 213 分;随机提交平均只有 156 分;放开到每题 1 万次提交,得 362.14 分。
  • Claude 3.7 Sonnet(Anthropic,2025-02-24):研究设置下,用相当于 256 个独立样本的计算、一个学到的打分模型、最多 64k token 的思考预算,GPQA 84.8%;文章说明部署的模型没有提供这个并行设置。
  • Navier–Stokes(OpenAI,2026 年 9 月):内部模型驱动的多 agent 系统,解出问题的那一组同时约有 1 万个 agent,约 88 小时后给出证明,再用约 17 小时完成 Lean 形式化,这一题共用约 1300 亿输出 token。这里 Lean 就是验证器,它保证证明对形式化的命题成立;但据 Scientific American(2026-09-21)报道,数学家指出它证明的是允许外力的版本,大家真正关心的无外力问题仍未解决。验证器只检查你写下的规格,规格是不是你关心的问题,是另一件事。

动手时怎么检查

先试什么 应该观察什么 不能据此推出什么
同一批题采 N=1 到 64,同时画覆盖率和 maj@N 两条线之间的差,就是挑选丢掉的部分 覆盖率有多高,交出来的准确率就有多高
逐题对比投票前后 哪些题被投票“投错”:正确答案不是众数 用整体平均 $p$ 预测每道题的投票结果
用一批人工核对过的样本估计验证器的 $r$ 和 $f$ 上限约等于精度 $pr/\big(pr+(1-p)f\big)$ 换了题目分布或生成器,$f$ 还是这么多
逐步加大 N,同时看验证器分数和真实正确率 分数还在涨、正确率不涨甚至下降,说明在钻验证器的空子 N 越大越好
比较两种方法时固定总生成 token 同样花费下谁更准 只比各自最好的那个点

这条线接下来看什么

下面是开放问题,以及什么样的结果会改变现在的判断;不是预测。

  1. 没有标准答案时怎么挑。 Brown 等(2024-07)看到投票和奖励模型在几百个样本后不再涨。DeepConf(Meta AI 等,2025-08)用模型自身的置信度过滤推理轨迹,自报 GPT-OSS-120B 在 AIME 2025 上采 512 份达到 99.9%,比全量并行少生成最多 84.7% 的 token;但 AIME 有标准答案。若在开放任务上经独立评审,挑选准确率能接近覆盖率,这一篇的上限就要改写。
  2. 验证器能不能一直比生成器强。 DeepSeekMath-V2(2025-11)专门花验证计算来维持生成和验证之间的差距;自我改进系列说明这个差距一旦消失,回路就停。看验证器在新一代生成器上的误判率是否公开、是否稳定。
  3. 形式化验证器的规格。 Navier–Stokes 的争论(2026 年 9 月)不在 Lean 证明对不对,而在形式化的命题是不是大家想问的那个。社区公认的形式化题库,会让这类结果更容易判断。
  4. 大规模并行的账。 GPT-5 的 pro 设置(2025-08)、Gemini Deep Think(2025-07)、上万个 agent(2026 年 9 月)都没有公开等计算量的对照。按 token 或 FLOPs 公开“准确率–计算量”曲线,才能看出这些提升里有多少只是来自更多的计算。

下一篇:长思维链是怎样训练出来的。

本页术语 6
覆盖率 coverage
结果覆盖了多少目标内容或类别,计算前需要说清范围和分母
奖励 reward
RL 里指导策略更新的标量信号
微调 fine-tuning
在预训练权重上继续训练以适配具体任务
候选 candidate
召回阶段捞出来、等待精排挑选的内容
基线 baseline
用来比较新方法的参考方法或配置
预训练 pre-training
先用大量数据学习通用表示和能力,再适配具体任务