想象你是一位选角导演,要为一部重头戏找主角。手里只有剧本,没有现成的答案。最稳妥的策略是什么?不是只喊一位演员试镜,而是同一时间约来一批演员,让他们各自用不同的方式演绎同一场戏,再由资深评审团逐段打分,最后选出最贴近角色灵魂的那一位。这个“海选-评审-择优”的思路,就是 Best-of-N 采样在推理模型中的真实写照:让模型对同一个问题生成 N 条推理链,每条链就像一位演员的完整试镜;奖励模型或自评机制充当评审团,为每条链打分,最终选分数最高的那一条作为答案。 这听上去很简单,却藏着推理增强的核心智慧:用“数量”换“质量”。但海选不是人越多越好——试镜要花钱花时间,评审也会有偏见。怎么设 N 的数量?评分模型怎么训练?自评是否可靠?工程落地还要配齐哪些条件?这篇文章会用一场“选角海选”的故事,把这些概念一步步讲清楚,让你从零理解这套被称为“推理时扩展第一课”的方法。
读懂 Best-of-N 采样,你就掌握了推理模型调优中最简单通用的“以量取胜”基线;它是理解推理时扩展和强化推理家族的第一块基石,也是实际工程中“低成本提效果”的常用手段。
可视化演示
展示Best-of-N采样过程(N条推理链生成与奖励模型选优)、覆盖率概率曲线(1-(1-p)^N随N增大趋近1)、以及与ToT/MCTS/自洽性等推理时扩展方法的准确率与算力对比。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Best-of-N采样选优过程 对同一问题生成N=5条推理链,每条包含3-5个推理步骤 奖励模型对每条链评分,选分数最高的c2(0.91)作为最终输出 output=argmax(reward(chain_i)) 多次采样提升至少一条正确链的概率
方法原理
选角导演的核心流程是什么?先列出一份演员名单,再让每位演员对同一场戏各自发挥,最后评审团给分。这个过程听起来简单,却奠定了“选好角”的全部基础。Best-of-N 采样的出发点同样朴素:给同一个问题生成 N 条不同的推理链,然后按质量挑一条最好的。
演员名单就是“采样集合”,演员的表演就是“一条完整推理链”,评审团就是“奖励模型”。如果评审团足够靠谱,那么只要候选人足够多,总能挑出比“随便抓一个”更好的答案。这也是 Best-of-N 被称为“推理时扩展的基线方法”的原因——它不改变模型本身,只改变选择策略。
形式化地说,令生成模型对问题 x 采样得到 N 条候选推理链 \(y_1, \dots, y_N\),奖励模型 \(R\) 对每条候选打分,最后取出分数最高的 \(y_i\) 作为输出。整个过程可以用一个简洁的式子表达。
\[
\displaystyle y^{*} = \underset{y_i}{\arg\max}\; R(y_i)
\]
1. 候选推理链 \(y_i\):第 i 条由生成模型采样得到的完整推理链(第 i 位演员的完整试镜表演)
\[
\displaystyle y_i, \quad i = 1, 2, \ldots, N
\]
2. 奖励打分 \(R(y_i)\):奖励模型对第 i 条候选的打分(评审团给第 i 段表演的综合评分)
\[
\displaystyle R(y_i)
\]
3. arg max 选最优:在全部候选中挑出奖励分最大的那条作为最终答案(评审团宣布最高分演员获胜)
\[
\displaystyle y^{*} = \underset{y_i}{\arg\max}\; R(y_i)
\]
所以,Best-of-N 的核心思想简单到像海选试镜:多约几个人,让评审逐个打分,选最高分。后面所有细节——怎么约人、怎么打分、约多少人才划算——都是在优化这套“海选”流程。
采样流程
组织一场海选需要排期表:每位演员有独立的试镜时间(避免互相干扰),试镜全程录音录像,结束后统一回放让评审集中打分。Best-of-N 的流程设计也遵循同样的顺序。
第一步是“排期采样”:用带随机性的生成方式(通常把解码温度设到大于 0)让模型多次独立采样;第二步“统一归档”:把 N 条片段全部保留;第三步“回放打分”:用奖励模型一次性对 N 条候选评分;最后“公布结果”:取最高分。
采样这一步要求“同一份剧本,不同的演绎”。如果都用贪心解码(温度=0),N 条生成结果几乎一模一样,海选就失去意义。因此实际中常用 temperature 采样,让每个 token 的概率分布纳入随机性,生成多样化的推理路径。每一步的采样,都是从同一个条件分布中独立抽取。
\[
\displaystyle y_i \sim p_{\theta}(\cdot \mid x), \quad i = 1, 2, \ldots, N
\]
1. 条件概率分布 \(p_{\theta}(\cdot \mid x)\):给定问题 x,模型对下一个 token 的概率分布(演员拿到剧本后各种演绎的可能性分布)
\[
\displaystyle p_{\theta}(\cdot \mid x)
\]
2. 采样符号 \(\sim\):从该分布中随机抽取一条完整推理链(抽取一次具体的演绎方式)
\[
\displaystyle y_i \sim p_{\theta}(\cdot \mid x)
\]
3. 重复 N 次:独立重复 N 次,形成 N 条候选(排满 N 位演员的试镜排期)
\[
\displaystyle i = 1, 2, \ldots, N
\]
整个流程像一场规范的海选:独立试镜、统一打分、择优录取。独立保证多样性,统一打分保证公平,择优保证质量。这就是 Best-of-N 的“标准化操作流程”。
效果权衡
试镜人数怎么定?请 1 个演员,可能运气好选对人,但大概率不理想;请 10 个,找到好演员的机会大增;请 100 个,边际收益就很有限——多请的 90 个人中,大部分都是陪跑。这就是收益递减。
从数学上看,如果每条候选的得分围绕某个均值 \(\mu\) 波动,波动幅度为 \(\sigma\),那么 N 条候选中的最高分期望并不是线性上涨,而大约随 \(\sqrt{\ln N}\) 增长。把 N 从 1 变到 10,收益明显;从 100 变到 1000,收益可能只涨一点点。
这是极值统计的经典结论:N 个独立同分布样本的最大值期望,会随 N 以对数平方根的方式缓慢增长。因此 Best-of-N 有一个清晰的“回报-成本”曲线:每增加一份采样算力,效果增量快速衰减。这也直接决定了它属于“推理时扩展”——把计算花在推理采样上,而不是训练参数上。
\[
\displaystyle \mathbb{E}[R_{\max}(N)] = \mu + \sigma\sqrt{2\ln N}
\]
1. 平均分 \(\mu\):单条候选的平均奖励分(演员的整体平均水平)
\[
\displaystyle \mu = \mathbb{E}[R(y_i)]
\]
2. 波动幅度 \(\sigma\):候选分数间的标准差(演员水平的参差程度)
\[
\displaystyle \sigma = \sqrt{\mathrm{Var}[R(y_i)]}
\]
3. 对数平方根项 \(\sigma\sqrt{2\ln N}\):随 N 缓慢增长,体现收益递减(试镜人数扩大十倍,最高分提升也有限)
\[
\displaystyle \sigma\sqrt{2\ln N}
\]
所以说,Best-of-N 不是“人越多越好”的无限加码,而是一场需要精打细算的海选:把预算花在刀刃上,合适的人数加上稳定的评审,才是性价比最高的组合。
奖励模型
海选的质量上限取决于评审团。如果评审水平不行,选出的“最佳演员”可能只是符合评审偏好、却不真正适合角色的人。奖励模型就是 Best-of-N 的评审团,它的准确性决定了整个方法的上限。
奖励模型通常是一个单独的评分模型,用“人类偏好”数据训练。训练时,给模型一对候选(比如一段优秀推理和一段平庸推理),让它学会给优秀者更高分。常见做法是 Bradley-Terry 排序损失。当没有外部奖励模型时,也可以用生成模型自身做“自评”:让模型对每条候选链自己判断是否合理、是否覆盖关键步骤,这被称为 self-verify。
训练数据形如 \((x, y_w, y_l)\),其中 \(y_w\) 是更受偏好的推理链,\(y_l\) 是不受偏好的推理链。奖励模型 \(R\) 最大化两者分数差经过 sigmoid 后的对数概率。这样训练出的评分器,既能为每条候选打绝对分,也能用于排序选择。
\[
\displaystyle \mathcal{L}_{\mathrm{RM}} = -\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}}\left[\log\sigma\left(R(y_w) - R(y_l)\right)\right]
\]
1. 偏好数据对 \((y_w, y_l)\):人工标注的“更好”与“更差”两条候选(评审公认的好表演与差表演)
\[
\displaystyle (x, y_w, y_l) \sim \mathcal{D}
\]
2. 分数差 \(\Delta\):奖励模型对好候选与差候选的打分之差(好表演与差表演之间的分差)
\[
\displaystyle \Delta = R(y_w) - R(y_l)
\]
3. 负对数 sigmoid 损失:把分差映射为概率后取负对数,分差越大损失越小(评审给分越拉开越好)
\[
\displaystyle -\log\sigma\left(R(y_w) - R(y_l)\right)
\]
有了靠谱的评审团,海选才有意义。奖励模型就是用“评审案例”训练出的评分标准;若没有标准,就让演员自评——虽然会有偏见,但总比乱选强。
落地保障
一场成功的大型海选不只是“评委打分”这么简单,还需要好的选角导演(算法)、充足的试镜场地(算力)、扎实的演员储备(数据),以及事后复盘机制(评估)。单独任何一项突出都不够,短板决定整体效果。
把 Best-of-N 放在工程视角看:算法创新决定采样与打分策略的优化空间;算力支撑决定 N 能开到多大、延迟能否接受;数据质量决定生成分布与奖励模型的上限;评估体系决定你能否准确知道“选出的最优”是否真的变好了。
这四者经常形成乘法关系:假设算法成熟度、算力充足度、数据优质度分别为 \(Q_{\text{alg}}\)、\(Q_{\text{compute}}\)、\(Q_{\text{data}}\)(取值 0~1),则整体效果大致是三者乘积。任何一个接近 0,最终效果都会被拖垮——典型的“木桶效应”。
\[
\displaystyle Q_{\text{overall}} = Q_{\text{alg}} \times Q_{\text{compute}} \times Q_{\text{data}}
\]
1. 算法因子 \(Q_{\text{alg}}\):采样策略和奖励模型的算法质量(选角流程设计的合理性)
\[
\displaystyle Q_{\text{alg}}
\]
2. 算力因子 \(Q_{\text{compute}}\):可支持的采样条数与推理延迟预算(海选场地与时间成本)
\[
\displaystyle Q_{\text{compute}}
\]
3. 数据因子 \(Q_{\text{data}}\):训练和评测数据的质量与覆盖度(演员储备与剧本水准)
\[
\displaystyle Q_{\text{data}}
\]
想让 Best-of-N 从论文走向业务,就要把海选组织成一门工程:导演、场地、演员、复盘四管齐下,才能让“以量换质”真正落地。
发展趋势
海选模式成熟后,选角团队会开始优化“下一次选角”:能不能一边试镜一边淘汰明显不合适的人?能不能把几个评委的看法融合?Best-of-N 的未来也正在沿着这个方向演进。
当前较受关注的方向包括:先自评粗筛再精排,降低高分候选的花费;动态决定 N,对难题多试、对简单题少试;与迭代式推理(每次基于上一轮最好候选继续修正)混合使用。这些都把 Best-of-N 从“固定 N 的粗暴枚举”推向“按需分配算力”。
更广义地看,Best-of-N 是“推理时扩展”的最小单元。未来算法创新会把它与过程奖励、搜索、迭代精炼结合;算力发展会允许更大的 N;数据质量的提升会让奖励模型更准。工程上,从概念验证到规模化部署,需要评估体系持续跟踪收益曲线,避免在收益递减区浪费算力。一个典型的演进方向,就是在候选选择中加入多样性正则,避免重复试镜。
\[
\displaystyle y^{(t+1)} = \underset{y}{\arg\max} \; R(y) + \lambda\, \mathrm{Div}(y, \mathcal{S}^{(t)})
\]
1. 已有候选集 \(\mathcal{S}^{(t)}\):第 t 轮已产生的候选集合(已经试过的演员名单)
\[
\displaystyle \mathcal{S}^{(t)}
\]
2. 多样性差异 \(\mathrm{Div}(y, \mathcal{S}^{(t)})\):新候选与已有候选的差异程度(新演员不能和已选演员演得一模一样)
\[
\displaystyle \mathrm{Div}\left(y, \mathcal{S}^{(t)}\right)
\]
3. 权衡系数 \(\lambda\):在“分数”和“多样性”之间的平衡旋钮(导演在演技与新鲜感之间取舍)
\[
\displaystyle \lambda
\]
Best-of-N 的进化,就是一场从“一次海选”到“持续造星”的升级:不再盲目堆人数,而是巧用每一分试镜成本,让推理质量稳步提升。
AI 应用场景
场景 1:在线教育平台的解答题自动批改
阶段:推理时扩展(test-time scaling)
解决的问题:单次生成的解答可能因粗心算错或跳步而丢分;用 Best-of-N 生成多条解题过程,再让奖励模型按“步骤完整 + 结果正确”打分,挑出最稳的解答作为最终批改依据,降低误判率并让解析更清晰。
具体案例:某 K12 在线教育平台对几何解答题接入 LLM 批改。原先贪心解码输出单条解题过程,遇到一题多解时容易判错。引入 Best-of-N(N=8)后,先采样 8 条完整推理链,再用奖励模型对每条链打“步骤分”和“结果分”,选最高分作为模型输出。试运行 2 个月后,解答类题目的自动批改准确率从 82% 提升到 94%,教师复核量减少约 60%。
场景 2:代码生成平台的一次通过率提升
阶段:推理时扩展 + 结果奖励
解决的问题:LLM 生成代码时,单次输出常出现小 bug。Best-of-N 对同一个函数需求采样多个版本,并把单元测试通过率作为“奖励”信号之一,与奖励模型分数结合,选出最可能正确且高质量的版本。
具体案例:一家企业内部研发提效工具对“根据注释生成 Python 函数”的功能做升级:原方案单次生成,一次通过率仅 65%。改为 Best-of-N=10 后,取测试通过数与奖励模型加权分最高的版本,一次通过率提升到 88%,调试时间平均减少 30%。
Python 演示
"""Best-of-N 采样的最小实现演示: 候选推理生成 + 奖励打分 + 选择最优."""import random def sampler(question: str, n: int) -> list[str]: """模拟模型为同一问题生成 N 条候选推理链.""" candidates = [] for _ in range(n): steps = random.randint(2, 4) chain = " -> ".join(f"step{i}" for i in range(1, steps + 1)) candidates.append(chain) return candidates def reward_model(chain: str) -> float: """模拟奖励模型: 基于推理长度和关键步骤给分.""" score = 0.0 score += len(chain) * 0.1 # 鼓励完整推理 if "step1" in chain: score += 0.5 # 有起始步加分 if chain.count("step") >= 3: score += 0.3 # 有完整中间推理加分 return round(score, 2) def best_of_n(question: str, n: int) -> tuple[str, float]: """Best-of-N 主流程: 采样 -> 打分 -> 选最优.""" candidates = sampler(question, n) scored = [(c, reward_model(c)) for c in candidates] best_chain, best_score = max(scored, key=lambda x: x[1]) return best_chain, best_score if __name__ == "__main__": question = "小明有 3 个苹果, 又买了 2 个, 一共有几个?" n = 5 best_chain, best_score = best_of_n(question, n) print(f"问题: {question}") print(f"生成候选数: {n}") print(f"最优推理链: {best_chain}") print(f"奖励分数: {best_score}")
def sampler(question: str, n: int) -> list[str]:模拟生成器:对同一个问题独立采样 n 条候选推理链。chain = " -> ".join(f"step{i}" for i in range(1, steps + 1))用随机步数生成一条链,模拟模型的一条完整推理路径。def reward_model(chain: str) -> float:模拟奖励模型:为一条候选链打分。if chain.count("step") >= 3:判断链中是否包含足够多的中间推理步骤,相当于奖励“推理充分性”。best_chain, best_score = max(scored, key=lambda x: x[1])在所有打分候选中选出分数最高的那条作为最终答案。for _ in range(n):循环 N 次,对应 Best-of-N 中“同一问题采样 N 条”的步骤。
常见误区
误区我理解 Best-of-N 就是生成好几条推理再投票,哪个答案出现次数最多就选哪个。
正解Best-of-N 是按“质量分”选最优,而不是按“出现频次”。它需要奖励模型或自评对每条候选打一个质量分,再取分数最高者。多数投票(self-consistency)才是统计答案频次。可以这样区分:多数投票像观众看人气,Best-of-N 像评审看演技——人气高不等于演得好。
为何常见:两者都使用“多次采样”这一共同技术,且都在推理阶段提升效果,因此容易混淆。
误区反正 N 越大试越多,最优推理链的质量就会一直涨,我把 N 开到 1000 总没错。
正解最高分期望约按 \(\sigma\sqrt{2\ln N}\) 增长,收益递减明显;同时采样成本线性增长。更关键的是,奖励模型噪声会限制“分数最高”与“真实最优”的一致性。N 增加到一定程度,新增候选对最终答案几乎没有影响,算力却白白浪费。合理做法是根据问题难度动态调整 N。
为何常见:直觉上“多试几次总会更好”,但忽略了评审(奖励模型)本身的局限和边际收益递减规律。
误区奖励模型是专门训练的评分器,比模型自己判断靠谱百倍,直接用就行。
正解奖励模型也是从人类偏好数据训练出来的近似器,同样存在偏差与噪声,甚至可能被奖励黑客(reward hacking)利用。在某些场景(如没有标注偏好数据、或需要保持模型一致性的自省),模型自评是更实用的替代方案。好评审也需要不断校准,不能无脑迷信。
为何常见:奖励模型名字里带“模型”,常被误解为“标准答案生成器”;实际上它只是偏好信号的近似反映。
误区Best-of-N 是强化推理的一种,应该会像强化学习一样更新模型权重。
正解Best-of-N 属于推理时(test-time)策略,不反向传播、不更新任何模型参数。它只在推理时多做几次采样,用奖励模型或自评选出最优。真正的训练方法(如 PPO/RLHF)会修改模型权重;Best-of-N 更像“选角”而非“培训演员”。
为何常见:因为它归在“强化推理”主题下,又常和 RLHF 一起出现,容易误以为它也训练模型。
误区temperature 拉满,生成的 N 条就会五花八门,肯定能覆盖正确答案。
正解温度过高会让推理链变得发散甚至胡言乱语,破坏推理结构;温度过低又会让 N 条候选高度雷同。合理的做法是选取中间温度(如 0.6~1.0),并配合 top-p 等采样策略,在“多样性”和“结构稳定性”之间取得平衡。
为何常见:大家常把“多样性”等同于“高随机性”,但推理任务需要的是“受控的多样性”,而不是纯粹随机。
面试题
Q1. Best-of-N 中的 N 表示什么?
- A.生成的候选条数← 正确答案
- B.训练的迭代次数
- C.模型的参数个数
- D.数据集的样本数
答案:A。在 Best-of-N 采样中,N 是对同一个问题采样的候选推理链数量。可以把它理解为试镜演员的人数:N 越大,候选越多,找到好答案的机会越大,但成本也越高。
Q2. Best-of-N 最终会选择哪一条候选?
- A.得分最高的候选← 正确答案
- B.出现最多的答案
- C.生成耗时最长的
- D.序列长度最短的
答案:A。Best-of-N 按奖励模型或自评的打分,选择得分最高的推理链。它不是按出现频次(那是多数投票),也不是按耗时或长度选。
Q3. 当 N 从 1 增加到 10 时,输出最高分的变化趋势?
- A.按对数规律上升← 正确答案
- B.按线性规律骤增
- C.保持恒定不变
- D.先下降再反弹
答案:A。最高分的期望随 N 约按 \(\sigma\sqrt{2\ln N}\) 上升。N 从 1 到 10 时 \(\ln N\) 增长较快,提升明显,但不是线性无限增长;往后继续加大 N,收益递减。
Q4. 在 Best-of-N 中,奖励模型的主要作用是什么?
- A.训练生成器参数
- B.候选排序打分← 正确答案
- C.生成新的思路
- D.规则校验答案
答案:B。奖励模型是评审团,它不直接生成候选,也不修改生成模型参数,而是对每条候选推理链打分并排序,让“分数最高”可以被定义。
Q5. 下列哪些因素会明显影响 Best-of-N 的效果?
- A.奖励模型噪声← 正确答案
- B.采样多样性← 正确答案
- C.候选数量大小← 正确答案
- D.键盘输入速度
答案:ABC。奖励模型的噪声决定打分是否可靠,采样多样性决定 N 条候选是否“各不相同”,候选数量决定找到最优的概率。键盘输入速度与推理生成无关,不属于影响因素。
Q6. Best-of-N 属于哪一类扩展?
- A.推理时计算扩展← 正确答案
- B.参数规模扩展
- C.数据量扩展
- D.注意力头扩展
答案:A。Best-of-N 不动模型权重,也不增加训练数据,而是在推理阶段通过多次采样和择优增加计算量,因此是推理时扩展(test-time scaling)。好比海选增加了试镜场次,而不是换演员班底。
Q7. 关于基于自评的 Best-of-N,下列说法正确的是?
- A.使用模型自身打分← 正确答案
- B.无需外部奖励模型← 正确答案
- C.一定优于奖励模型
- D.受自身能力限制← 正确答案
答案:ABD。自评指让生成模型自己判断候选优劣,因此可以脱离外部奖励模型,但会受模型自身能力限制,不一定比专门训练的奖励模型更准。C 把特殊情况绝对化了,所以错误。
Q8. Best-of-N 的收益上限主要受哪一项约束?
- A.奖励模型的准确性← 正确答案
- B.输入序列的长度
- C.输出词汇表大小
- D.数据并行度大小
答案:A。即使 N 无限增大,如果奖励模型不能准确区分好坏,最优选择也可能是错的。奖励模型就是“评审团”,评审的准确性决定了海选质量的天花板。
Q9. 要提升 Best-of-N 的性价比,比较有效的做法是?
- A.无限增加候选数
- B.提前终止差候选← 正确答案
- C.去掉奖励打分
- D.固定使用高温度
答案:B。无限增加 N 会遇到收益递减;去掉奖励打分或固定高温度都会伤害选择效果。提前终止得分明显偏低的候选可以节省采样算力,提升“每单位算力带来的质量提升”。
Q10. 关于优化 Best-of-N 的采样策略,哪些做法是合理的?
- A.先粗筛再精排← 正确答案
- B.自适应调整候选数← 正确答案
- C.固定预算不变化
- D.噪声大时多采样← 正确答案
答案:ABD。先用便宜的自评粗筛淘汰明显差候选,再用精排模型打分会降低开销(A);根据难度动态调整 N,而不是固定预算(B);奖励噪声大时需要更多采样提高找到最优的概率(D)。C 固定预算忽略了问题难度差异,不合理。