Cheatsheet · 题解

测试时扩展 (Test-Time Scaling) 速查手册

从顺序/并行扩展、搜索、验证器到计算最优分配


1. 测试时扩展总览 (Overview)

测试时扩展 (test-time scaling, TTS),又称推理时扩展 (inference-time scaling),指在不改变模型权重的前提下,通过在推理阶段投入更多计算来换取更高的准确率。它是 o1 / R1 范式的核心:模型学会"想得更久",评测口径也从"单次准确率"转向"给定算力预算下的准确率"。

训练时算力 (train-time)                 测试时算力 (test-time)
─────────────────────                  ─────────────────────
加参数 / 加数据 / 加训练步              顺序:更长的思考链 (long CoT, budget forcing)
一次投入、固定成本                ⇄     并行:多次采样 + 聚合 (BoN, self-consistency)
推理成本不变                            搜索:验证器引导的树/束搜索 (beam, MCTS)
                                        成本随预算线性/超线性增长

1.1 范式转移:训练时算力 → 测试时算力

传统 scaling law 关注训练时投入(参数、数据、步数);TTS 把另一个旋钮推到台前——单个 query 上花多少推理算力Snell et al.arXiv:2408.03314, ICLR 2025)系统论证:在固定 FLOPs 预算下,最优分配测试时算力(对难题搜索、对易题少采样)在某些设定下比单纯把参数放大更划算。这把"能力是否训练即得"的范式撕开一道口子:一部分能力可以在推理时"现场兑换"。

提示 / Note

一句话直觉:训练时算力提升的是模型的"潜力上限",测试时算力提升的是"单题把潜力兑现的程度"。两者互补——一个会做但常做错的模型,往往能靠 TTS 大幅提分;一个根本不会的题,再多采样也采不出来。

1.2 两个轴:顺序 (深度) vs 并行 (宽度)

机制 代表方法 成本 何时有效
顺序 (sequential) 一条链上想得更久、自我修正 long CoT、budget forcing (s1)、self-refine 串行延迟高 需多步推理、可自我纠错
并行 (parallel) 独立采样多条、再聚合 best-of-N、self-consistency、repeated sampling 可并行、吞吐友好 答案空间可聚合/可验证
搜索 (search) 树状展开 + 验证器剪枝 beam search、ToT、MCTS (rStar-Math) 最高 有可靠过程信号 (PRM)

搜索可视为顺序与并行的混合——在多条部分路径(宽度)上逐步展开(深度),用验证器决定保留哪些。

1.3 核心问题:给定算力预算如何最优分配

TTS 的中心问题不是"能不能更准",而是**"同样 N 倍算力,怎么花最值"**:

下面 §2–§4 逐一展开三个轴,§5 讲贯穿其中的验证器,§6 讲计算最优分配与"RL 如何教会模型用好测试时算力"。


2. 顺序扩展 (Sequential Scaling)

顺序扩展指在一条推理链上投入更多 token:想得更久、把中间步骤写全、发现错误后回头修正。

2.1 long CoT 与 "think longer"

最朴素的顺序扩展就是让模型生成更长的思维链。o1 / R1 式模型的核心观察是:经过 RL 训练后,模型在难题上会自发产生更长的推理(自我反思、列举情形、验算),且在难题上、合适预算区间内准确率随推理 token 数上升(简单题上过长反而掉点,见 §6.4)。注意这里有两层:① 模型有没有能力用好更多 token(由训练决定);② 推理时让不让它用更多 token(由解码控制决定)。§2.2 处理后者。

2.2 预算强制 budget forcing — s1

s1(Muennighoff et al., arXiv:2501.19393)提出极简的顺序扩展控制——budget forcing(预算强制):在解码时直接操纵"思考预算"。

s1 仅用 1000 条精选推理样本做 SFT + budget forcing,就在数学推理上取得有竞争力的结果,论证了"测试时扩展可以很简单"。

# Budget forcing (s1, Muennighoff et al. 2025):解码时控制"思考预算"。
# - 想提前结束但还没到下限 token 数 → 注入 "Wait" 续写,逼模型想更久(常触发自我纠错);
# - 超过上限 → 强行停止思考、转入作答。这里用 mock 解码器演示【控制逻辑】,不含真实模型。
def budget_forcing(model_step, min_think, max_think, wait_token="Wait"):
    """model_step(prefix)->(token, wants_stop):mock 解码一步,
       返回下一个 token 文本与"模型是否想结束思考"。"""
    think_tokens, n_wait = [], 0
    while len(think_tokens) < max_think:
        tok, wants_stop = model_step(think_tokens)
        if wants_stop and len(think_tokens) < min_think:
            think_tokens.append(wait_token)   # 抑制结束、强制续写
            n_wait += 1
            continue
        if wants_stop:
            break
        think_tokens.append(tok)
    return think_tokens, n_wait

2.3 自我修正 / 修订 (self-refine) 及其局限

Self-Refine(Madaan et al., arXiv:2303.17651, NeurIPS 2023):用同一个 LLM 在循环里"生成 → 自我批判 → 据反馈修订",无需额外训练或监督数据,在多项生成任务上提升质量。

注意 / Caution

自我修正的天花板:自我修正能否真正纠错,取决于模型能否可靠地判断自己错了。多项后续工作发现:在无外部信号(无 verifier、无 ground-truth)的纯内在自我纠正下,LLM 常常改对为错或在错误上"自我说服",净收益有限甚至为负。可靠的顺序修正通常需要外部验证信号(单测、计算器、检索)兜底——这正是 §5 验证器的意义。面试常考点:"自我纠正到底靠不靠谱"——答"取决于有无可靠的外部验证信号"。


3. 并行扩展 (Parallel Scaling)

并行扩展指独立采样多条完整解,再用某种方式聚合。天然可并行、吞吐友好,是工程上最易落地的 TTS。

3.1 best-of-N 与 self-consistency(多数投票)

两种最基础的聚合:

二者的区别:多数投票靠"答案分布的众数",BoN 靠"验证器选优"。加权 self-consistency 是中间形态——按验证器分数给每票加权再投。

from collections import defaultdict

# 三种并行聚合(Wang et al. 2022 的 self-consistency + BoN 变体):
# - majority_vote:对【最终答案】做多数投票(无需验证器);
# - weighted_vote:用 verifier/RM 分数给每票加权(加权 self-consistency);
# - best_of_n:直接取验证器分最高的单条(不投票)。
def majority_vote(answers):
    counts = defaultdict(float)
    for a in answers:
        counts[a] += 1.0
    return max(counts, key=counts.get)

def weighted_vote(answers, scores):
    counts = defaultdict(float)        # scores 设为非负(如验证器置信度 ∈ [0,1])
    for a, s in zip(answers, scores):
        counts[a] += s                 # 按验证器分数加权累加
    return max(counts, key=counts.get)

def best_of_n(answers, scores):
    return max(zip(answers, scores), key=lambda x: x[1])[0]  # 取分数最高的单条

3.2 加权投票 / verifier 重排

当有验证器时,纯多数投票会浪费信号:一条少数但高置信的正确答案可能被多数错误答案投掉。加权投票 / verifier 重排让验证器分数参与决策,通常优于纯多数投票——前提是验证器本身可靠(否则把噪声放大)。这也是为什么 §5 验证器质量是 TTS 的核心瓶颈。

3.3 覆盖率 vs 精度:pass@k 的天花板

Large Language Monkeys(Brown et al., arXiv:2407.21787)系统研究"重复采样":定义 coverage(覆盖率)= 至少有一条样本答对的题目比例,发现 coverage 随采样数在四个数量级上近似对数线性增长。但要警惕两个口径的区别:

pass@k=E[1(nck)/(nk)]\text{pass@}k = \mathbb{E}\left[1 - \binom{n-c}{k}\big/\binom{n}{k}\right]

陷阱 / Pitfall

陷阱:把 coverage / pass@k 当成"模型实际能拿到的分"。coverage 高只说明"答案在候选里",不代表"能选出来"。采样扩展的实际收益 = coverage 的提升 × 验证器的挑选能力;验证器弱时,coverage 涨而实际准确率几乎不动。这与 §5 互为表里。RFT 等"采样-筛选-再训练"自训练路线见 data-pipeline §3


4. 搜索类方法 (Search-Guided Generation)

搜索把"采样"从"采整条完整解"细化到"逐步展开 + 中途剪枝":用验证器对部分推理路径打分,只保留有希望的分支继续。它是顺序(深度)与并行(宽度)的混合。

4.1 step-level beam search 与 lookahead

把推理切成"步"(step),每步扩展若干候选下一步,用 PRM(过程奖励模型,§5)给当前部分路径打分,保留 top-B 继续——即 step-level beam searchlookahead 进一步:打分前先向前模拟 rollout 几步,用"未来"信息估计当前步的价值(更准但更贵)。

# PRM 引导的 step-level beam search:每步扩展候选下一步,用过程奖励模型(PRM)给
# 【部分推理路径】打分,保留 top-B 继续展开。path 用 step 文本列表表示。
def prm_beam_search(root, expand, prm_score, beam=2, depth=4, n_expand=3):
    """expand(path)->list[next_step];prm_score(path)->float。返回得分最高的完整路径。"""
    beams = [(prm_score([root]), [root])]
    for _ in range(depth):
        cands = []
        for _, path in beams:
            for step in expand(path)[:n_expand]:
                new_path = path + [step]
                cands.append((prm_score(new_path), new_path))
        if not cands:
            break
        cands.sort(key=lambda x: x[0], reverse=True)
        beams = cands[:beam]                 # 剪枝:只留 top-B 分支
    return max(beams, key=lambda x: x[0])

4.2 Tree of Thoughts / MCTS

4.3 PRM 引导的搜索

无论 beam 还是 MCTS,剪枝/选择都依赖一个能给"部分路径"打分的信号——这正是 PRM(过程奖励模型)的用武之地(ORM 只能给完整解打分,无法直接指导中途剪枝;只能靠 rollout 到底间接估计部分路径价值)。搜索方法的强弱高度耦合 PRM 的质量:PRM 噪声大时,搜索会把算力浪费在被错误高估的分支上。PRM 与 ORM 的训练细节见 §5 与 reward-modeling-eval §2


5. 验证器 (Verifiers)

验证器是 TTS 的公共瓶颈:并行要靠它重排、搜索要靠它剪枝。这里只讲验证器在测试时如何被消费;其训练(RM loss、数据构造)见 reward-modeling-eval §2

5.1 ORM vs PRM

ORM(结果奖励) PRM(过程奖励)
打分对象 只对完整解/最终答案 每一推理步
能否指导搜索 否(无法直接给部分路径打分,只能 rollout 到底间接估计) (beam/MCTS 剪枝的基础)
标注成本 低(只需结果对错) 高(需步级标签 → 见 §5.2 自动标注)
信号粒度 细,能定位"哪一步开始错"

Let's Verify Step by Step(Lightman et al., arXiv:2305.20050, ICLR 2024)构建了 PRM800K(80 万条人工步级标注),并论证在 MATH 数学解的 BoN 重排上,过程监督的验证器优于结果监督

5.2 自动过程标注 — Math-Shepherd

PRM 的痛点是步级标注贵。Math-Shepherd(Wang et al., arXiv:2312.08935, ACL 2024)提出无需人工的自动标注:对某一步,从它出发多次 rollout 到底,以"该步之后能走到正确答案的比例"作为这一步的过程标签,再训练 PRM。该 PRM 既可用于 BoN 重排,也可作为 PPO 的奖励。

5.3 生成式验证器 (generative verifiers)

Generative Verifiers (GenRM)(Zhang et al., arXiv:2408.15240, ICLR 2025)把验证从"判别式打分"改为**"下一个 token 预测"——让验证器生成**一段 CoT 判断"这条解对不对",再读出 yes/no 概率作为分数。好处:① 复用 LLM 的生成/推理能力做验证;② 可自身用 CoT + 多数投票扩展验证算力(验证器也能 TTS)。这是"LLM-as-judge"思路在验证场景的体现。

import numpy as np

# PRM 把"每一步的正确概率"聚合成"整条路径分"。三种常见聚合:
# - min :最弱一步决定全局(最严格,常用于步级验证);
# - prod:各步独立正确性连乘(等价于对 log 概率求和);
# - last:只看最后一步(近似结果式打分,非严格 ORM)。
def aggregate_prm(step_probs, mode="min"):
    p = np.asarray(step_probs, dtype=float)
    if mode == "min":
        return float(p.min())
    if mode == "prod":
        return float(p.prod())
    if mode == "last":
        return float(p[-1])
    raise ValueError(f"unknown mode: {mode}")

5.4 验证器的脆弱性

注意 / Caution

验证器不是 ground truth。它会被奖励欺骗(reward hacking)——比如学到"长解=好解"、被特定格式骗、对分布外样本失准。TTS 把验证器推到决策回路的核心,其偏差会被采样数放大(采得越多,越可能采到一条"骗过验证器但实际错"的解)。可验证域(数学 exact-match、代码单测)能用规则化验证器绕过这一问题——这也是 RLVR / R1 主线选择可验证域的原因(见 §6.3)。RM 的过度优化与长度偏差细节见 reward-modeling-eval §3–§4


6. 计算最优与 RL 习得 (Compute-Optimal & RL-Learned Reasoning)

6.1 计算最优分配 — Snell et al.

Snell et al.arXiv:2408.03314, ICLR 2025)提出compute-optimal(计算最优) test-time scaling:给定测试时算力预算,按题目难度自适应地选择策略(顺序修正 vs 并行采样 vs 搜索),而非一刀切。结论:① 难度自适应分配显著优于固定策略;② 在部分设定下,小模型 + 最优 TTS 可媲美甚至超过大数倍模型的单次推理——但这有边界,不是普适。

6.2 推理 scaling law:test-time vs 加参数的权衡

TTS 与放大参数是两种花算力的方式,各有适用区:

6.3 RL 习得的 test-time scaling — o1 / R1

TTS 的方法(§2–§4)是推理时的解码/搜索策略;但模型能否用好这些算力,是训练时塑造的。这正是 o1 / R1 的意义:

换言之:RLVR 在训练时让模型习得有效的长推理行为,TTS 在推理时把这份能力兑现并分配算力。GRPO / RLVR / R1 四阶段配方等训练侧细节见 reasoning-rl-frontier;本页聚焦推理侧方法。

6.4 开放问题


7. 面试题 (Interview Questions)

L1 — 基础 (Fundamentals)


Q1: 什么是测试时扩展 (test-time scaling)?它和训练时 scaling 有何区别?

答: TTS 指不改权重、在推理阶段投入更多计算来换准确率(想得更久 / 采样更多 / 搜索)。训练时 scaling 是加参数/数据/步数,一次投入、推理成本不变;TTS 是推理时按需投入、成本随预算增长。直觉:训练决定"潜力上限",TTS 决定"单题兑现潜力的程度"。

追问: 是不是任何题目堆测试时算力都能提分? 不是。基模型根本不会的题(coverage 极低)堆采样也采不到对的;TTS 主要帮"会做但常做错"的题。


Q2: 顺序扩展和并行扩展分别是什么?各自的代表方法?

答: 顺序 (sequential):在一条链上想得更久 / 自我修正——long CoT、budget forcing (s1)、self-refine,串行延迟高。并行 (parallel):独立采样多条再聚合——best-of-N、self-consistency、repeated sampling,可并行、吞吐友好。搜索是二者混合(宽度上逐步展开)。

追问: 工程上优先上哪个? 通常先上并行(易实现、可并行)。顺序修正延迟高;搜索最强但依赖可靠 PRM。


Q3: 什么是 self-consistency?和 best-of-N 有何不同?

答: Self-Consistency (Wang et al. 2022) 对同一题采样多条 CoT,对最终答案做多数投票,无需验证器。best-of-N 采 N 条后用验证器/RM 打分取最高的单条。区别:多数投票靠答案分布的众数,BoN 靠验证器选优;加权 self-consistency 是中间形态(按验证器分给票加权)。

追问: 没有验证器时只能用哪个? 多数投票(self-consistency),只需答案可归一化比较;BoN/加权投票都需要验证器分数。


Q4: 什么是 budget forcing?s1 怎么用它?

答: Budget forcing 是 s1 (Muennighoff et al. 2025) 的极简顺序扩展控制:解码时操纵"思考预算"——想提前停但没到下限就注入 "Wait" 逼模型继续想(常触发自我纠错);超过上限就强行截断、转入作答。s1 仅用 1000 条 SFT 样本 + budget forcing 就在数学推理上取得有竞争力的结果。

追问: "Wait" 为什么能提分? 它抑制了过早结束,给模型机会复查并纠正前面的推理;但对简单题强行加长可能 over-thinking 反而掉点。


Q5: ORM 和 PRM 有什么区别?为什么搜索类方法偏爱 PRM?

答: ORM(结果奖励) 只对完整解/最终答案打分;PRM(过程奖励) 对每一推理步打分。搜索(beam/MCTS)需要给部分路径打分来剪枝——ORM 给不了,只有 PRM 能指导中途选择。代价:PRM 步级标注更贵(见 Math-Shepherd 自动标注)。

追问: PRM 一定比 ORM 好吗? 在需要指导搜索 / 定位错误步时 PRM 更优(Lightman et al. 2023);但 PRM 更难训、噪声大时会把搜索算力浪费在被高估的分支上。


Q6: 什么是 coverage / pass@k?为什么它是"上界"而非实际准确率?

答: coverage = 至少有一条样本答对的题目比例;pass@k 是其无偏估计 1(nck)/(nk)1-\binom{n-c}{k}/\binom{n}{k}。它假设有 oracle 验证器(知道哪条对),所以是上界。实际可达准确率受限于真实验证器能否从 N 条里挑出那条对的——验证器弱时,coverage 涨而实际准确率几乎不动。

追问: Large Language Monkeys 的主要发现? coverage 随采样数在约四个数量级上近似对数线性增长;"重复采样 + 验证器"在代码/数学上收益很大——但实际收益受验证器质量限制。


Q7: 自我修正 (self-refine) 靠谱吗?

答: 取决于有没有可靠的外部验证信号。Self-Refine (Madaan et al. 2023) 在有反馈时能提质;但纯内在自我纠正(无 verifier、无 ground-truth)下,模型常"改对为错"或自我说服,净收益有限甚至为负。可靠的顺序修正通常要靠单测 / 计算器 / 检索等外部信号兜底。

追问: 这对 agent 设计有什么启示? 给 agent 接真实可执行的反馈(跑代码、查工具结果)比让它"凭空反思"更可靠。


Q8: 测试时扩展和加大模型参数,该选哪个?

答: 看任务。TTS 更划算:基模型已有能力但常出错(coverage 高、单次低)、任务可验证/可聚合。加参数更划算:难题超出模型能力(coverage 低)、或无可靠验证器从候选里挑。本质:TTS 兑现的是"潜力",潜力不足时回报迅速饱和(Snell et al. 2024 的难度自适应结论)。

追问: 小模型 + 大量 TTS 能否替代大模型? 在部分可验证任务上能媲美甚至超过(Snell);但这有边界,不普适——超出基模型能力的题靠 TTS 补不上。


L2 — 中级 (Intermediate)


Q9: 为什么说"验证器是 TTS 的天花板"?给一个具体的失效链条。

答: 并行靠验证器重排、搜索靠验证器剪枝——最终"挑对的"这一步依赖验证器。失效链条:验证器有偏(如偏好长解)→ 采样越多,越可能采到一条"长但错、却被验证器高估"的解 → BoN/加权投票把它选出来 → 准确率不升反降。即验证器的偏差被采样数放大。所以 coverage 高 ≠ 实际分高,二者之间隔着验证器质量。

追问: 怎么缓解? 用规则化验证器(可验证域:exact-match / 单测)绕过神经 RM 的 hack;或用更强 / 生成式验证器、对验证器本身也做评估(见 reward-modeling-eval §5)。


Q10: step-level beam search 和对完整解做 best-of-N,本质区别和适用场景?

答: BoN 是先采 N 条完整解、最后用 ORM/PRM 重排(决策只在末尾);beam search 是每步剪枝、把算力集中到有希望的分支(决策贯穿全程)。beam 需要 PRM(给部分路径打分),理论上更省算力(早剪掉坏分支),但对 PRM 噪声更敏感——一步误剪可能丢掉唯一正确分支。BoN 更鲁棒(保留完整多样性)但更费算力。任务步数多、PRM 可靠时 beam/MCTS 占优;否则 BoN 更稳。

追问: lookahead 解决什么? 打分前先向前 rollout 几步,用"未来"信息修正当前步的短视估计,减少误剪;代价是更贵。


Q11: Math-Shepherd 如何在没有人工步级标注的情况下训练 PRM?

答: 对某一中间步,从它出发做多次 rollout 直到给出最终答案,用"该步之后能 rollout 到正确答案的比例"作为这一步的过程标签(蒙特卡洛估计),再用这些自动标签训练 PRM。该 PRM 可用于 BoN 重排,也可作 PPO 奖励。核心是用"结果可验证"反向蒸馏出"过程信号",绕开昂贵的人工步级标注(对比 PRM800K 的 80 万条人工标注)。

追问: 这种自动标签有什么噪声来源? rollout 采样有限带来估计方差;且"歪打正着"(错误步偶然走到正确答案)会给错误步打高分——需足够 rollout 数与一致性检查。


Q12: 生成式验证器 (GenRM) 相比判别式 RM 的优势?

答: GenRM (Zhang et al. 2024) 把验证建模为下一个 token 预测:让验证器先生成一段 CoT 判断对错,再读 yes/no 概率作分数。优势:① 复用 LLM 的生成/推理能力(验证也能"想一想");② 验证器自身可做 TTS——对验证用 CoT + 多数投票扩展算力;③ 与"LLM-as-judge"统一。代价:比判别式打分更贵(要生成)。

追问: 这会不会把生成器的毛病带进验证器? 会——GenRM 也可能被对抗解面诱导出错误判断;且自我验证存在"模型偏好自己风格"的偏置,需独立评估验证器质量。


Q13: 什么是 compute-optimal test-time scaling?Snell et al. 的核心结论?

答: 给定测试时算力预算,按题目难度自适应选策略(易题少量顺序修正、难题更宽并行采样+搜索),而非固定一种。Snell et al. 2024 结论:① 难度自适应分配显著优于固定策略;② 部分设定下,小模型 + 最优 TTS 可媲美甚至超过大数倍模型的单次推理。但有边界——超出基模型能力的题,TTS 回报迅速饱和。

追问: 实践中"题目难度"怎么估? 可用模型自身的不确定性 / 早期少量采样的一致性 / 验证器分布来在线估计,据此分配后续预算。


Q14: o1 / R1 与 §2–§4 的解码方法是什么关系?RL 在这里扮演什么角色?

答: §2–§4 是推理时的解码/搜索策略;但模型能否用好这些算力是训练时塑造的。o1 / R1 用大规模 RL(R1 用 GRPO + RLVR)训练长 CoT,使自我反思/验算等行为自发涌现(R1-Zero 表明:在其可验证任务设置下,纯 RL 即可触发)。所以:RLVR 在训练时让模型习得有效的长推理行为,TTS 在推理时兑现并分配这些算力。训练侧细节见 reasoning-rl-frontier

追问: 为什么 o1/R1 主线选可验证域? RLVR 用规则化验证器(exact-match / 单测)≈ ground truth,几乎无神经 RM 被 hack 的问题;代价是只适用可验证域。


L3 — 高级 (Advanced)


Q15: 从信息论/选择的角度,为什么"采样数 N → ∞"时实际准确率会被验证器质量卡死,而非趋于 coverage?

答: 设 oracle 准确率(=coverage)为 CC,但我们只有一个带噪验证器 vv。最终准确率 = P(被选中的解恰好正确)。当 NN 增大,候选里正确解的数量和**"看起来更优但实际错"的解的数量同时增长**;若验证器对"错但高分"的解存在系统性偏好(非零的 false-positive 率),这些干扰项的最大分会随 NN 上升而超过真正确解的分。于是 argmaxv\arg\max_v 选中正确解的概率被验证器的判别间隔(margin)与 FP 率上界卡死,不随 N 趋于 C。在"固定带噪验证器 + 单次打分 + argmax 选择"这组假设下,只有无噪 oracle(规则验证器)才能让实际准确率 → coverage(若改用重复验证 / 校准不确定性 / 一致性验证等更强假设,可部分逼近)。这解释了为何可验证域 (RLVR) 是 TTS 最干净的场景。

追问: 这对"加权投票 vs BoN"的选择有何启示? 加权投票对单点验证器噪声更鲁棒(多票平滑),BoN 对验证器尾部错误更敏感(单点 argmax)。验证器噪声大时投票更稳;验证器接近 oracle 时 BoN 上界更高。


Q16: 推一下 budget forcing 与 RL-trained long-CoT 的耦合:为什么对没经过长 CoT RL 的模型强行 budget forcing 收效甚微?

答: Budget forcing 只是解码时不让模型停,它不创造能力——只能激发模型已习得的长推理行为。未经长 CoT RL 的模型,其"更多 token"的边际内容多是重复 / 离题 / 自我说服(因为分布里没有"高质量的继续反思"这种模式),注入 "Wait" 续写出的是低价值 token,准确率几乎不动甚至因噪声下降。而经 RLVR 训练的模型把"反思/验算/换路"压进了分布,"Wait" 才能真正触发有效的额外推理。本质:TTS 的收益 ∝ 模型在长程推理上的"可激发能力",这由训练决定。这也呼应 §6.2——TTS 兑现潜力,潜力由训练塑造。

追问: 那 s1 为何只需 1000 条 SFT 就有效? s1 的 1000 条是精选的高质量长推理轨迹,把"如何有效地继续思考"的模式蒸进了模型,使 budget forcing 有可激发的对象;它走的是 SFT 蒸馏长 CoT 路线,而非从头 RL。


Q17: 为什么 PRM 引导的 beam search 在 PRM 有偏时可能【劣于】对完整解做 BoN?给出偏差传播的机制。

答: beam search 每步都用 PRM 做 argmax 剪枝,误差会逐步复合:若 PRM 在某类中间步上有系统偏差,正确分支可能在早期就被误剪,而一旦剪掉无法恢复(无回溯的 beam)——最终池里可能根本不含正确解,coverage 在搜索内部就已坍塌。BoN 则保留 N 条完整解,PRM 只在末尾作用一次,正确解(若已采到)始终留在候选池中,验证器偏差只影响"最后排序"而不影响"是否存在"。所以 PRM 偏差大时:beam 的早剪不可逆风险 > BoN 的末端误排风险。MCTS 因带回溯/探索项(UCT)缓解了一部分早剪问题,介于两者之间。

追问: 怎么让 beam 更鲁棒? 加大 beam 宽度(保留更多分支)、引入随机性/温度避免确定性早剪、用 lookahead 减少短视、或软剪枝(按分数采样而非硬 top-B)。本质是用多样性对冲 PRM 偏差。


Q18: over-thinking 现象:为什么"想得更久"在简单题上会掉点?如何设计自适应思考预算?

答: 简单题的正确解通常短且直接;强行拉长 CoT 会让模型引入本不必要的步骤,每多一步都有非零出错概率(错误累积),还可能"想岔了"推翻本来正确的直觉答案——即推理的边际收益为负。自适应预算的思路:① 用早期少量采样的一致性估难度——前几条采样若高度一致(低熵)则判为易题、早停;② 用验证器分布——若 top 候选分数已远超其余则停;③ 训练一个元控制器/路由预测每题的最优预算(把"该想多久"本身学出来)。budget forcing 的固定上下限是粗粒度近似,理想是 per-query 自适应。

追问: 自适应预算与 RL 训练目标如何结合? 可在 RL 奖励里对 token 数加惩罚(长度正则),让模型学会"够用就停";但惩罚过重会压制必要的长推理——又回到 §6.4 的张力。


Q19: 测试时扩展会改变"模型评估"的方法论吗?当两个模型在不同测试时预算下比较,怎样才算公平?

答: 会。单一"pass@1"已不足以刻画一个会用 TTS 的模型——必须报告准确率-算力曲线 (accuracy vs test-time FLOPs / tokens / samples)。公平比较的关键是对齐算力轴:① 固定总推理 FLOPs 比准确率(而非固定采样数——大模型单次更贵);② 报告整条曲线而非单点(曲线可能交叉:小预算下 A 优、大预算下 B 优);③ 区分有无 oracle 验证器(coverage/pass@k 是上界,实际部署用真实验证器的准确率)。否则"小模型 + 大量采样 vs 大模型单次"这类比较会因算力轴不对齐而失真。

追问: 这对 leaderboard 设计意味着什么? 需公布评测时的测试时预算与解码协议(采样数 / 是否搜索 / 验证器),否则分数不可比;理想是按 iso-FLOPs 或报告 Pareto 前沿。


附录:关键术语速查 (Glossary)

英文术语 中文 简要定义
Test-Time Scaling (TTS) 测试时扩展 不改权重、推理时投更多算力换准确率
Inference-Time Scaling 推理时扩展 TTS 的同义说法
Sequential Scaling 顺序扩展 一条链上想得更久 / 自我修正
Parallel Scaling 并行扩展 独立采样多条再聚合
long CoT 长思维链 更长的逐步推理 token 序列
Budget Forcing 预算强制 解码时控制思考预算 (s1):注 "Wait" / 强截断
Self-Refine 自我修订 同一 LLM 生成→自评→修订循环
Self-Consistency 自洽 多条 CoT 对最终答案多数投票
best-of-N (BoN) 采 N 条用验证器取最高分单条
Weighted Vote 加权投票 按验证器分给每票加权再投
Coverage / pass@k 覆盖率 至少一条样本答对的题目比例(oracle 上界)
Repeated Sampling 重复采样 大量采样换 coverage (Large Language Monkeys)
Beam Search (step-level) 步级束搜索 每步扩展+PRM 剪枝保留 top-B
Tree of Thoughts (ToT) 思维树 树状想法 + 自评估 + 回溯搜索
MCTS 蒙特卡洛树搜索 select-expand-simulate-backup 分配搜索预算
ORM 结果奖励模型 只对完整解/最终答案打分
PRM 过程奖励模型 对每一推理步打分,可指导搜索剪枝
Math-Shepherd rollout 自动构造步级标签训 PRM,无需人工
Generative Verifier (GenRM) 生成式验证器 把验证建模为 next-token 预测(生成 CoT 判对错)
Compute-Optimal TTS 计算最优扩展 按题目难度自适应分配测试时算力
RLVR 可验证奖励 RL 用规则验证器 (exact-match/单测) 当奖励
over-thinking 过度思考 简单题强行拉长 CoT 反而掉点

本手册仅供学习参考。涉及的论文结论与数值以原始论文为准;benchmark 分数仅用于说明,不构成横向比较。

§A 核心论文时间线 / Key Papers Timeline