← 大模型应用基础

Greedy、Beam Search、Sampling 与 Constrained Decoding 如何选择?

高频 中等 生成参数与解码策略 · 第 2 / 2 问 更新于 2026/09/25
解码策略Beam SearchConstrained DecodingBest-of-N
学习 AI 实战项目

简化版

解码策略决定模型给出下一 token 分布后,怎样构造完整输出。Greedy 每步取最大概率,便宜稳定但只看局部;Beam Search 保留多条高分序列,适合候选空间相对收敛的条件生成;Sampling 按概率抽样,适合需要多样性的开放生成;Constrained Decoding 在每一步屏蔽违反语法或枚举的 token,适合 JSON、SQL 子集等硬格式。

没有“全局最佳”策略。应按任务是否需要唯一结果、多样性、硬结构、可验证性和延迟预算选择,并用任务成功率而不是平均 log probability 验收。事实准确性仍需证据或工具,语法约束也不能保证字段语义正确。

详细版

Greedy 只保留一个前缀,复杂度低但可能早早选错;Beam Search 每步扩展 B 条前缀并按累计分数剪枝,需要长度归一化等修正;Sampling 通过 Temperature、Top-k/Top-p 调节多样性;Best-of-N 先生成 N 个完整候选,再用独立评分器挑选;Constrained Decoding 则根据自动机或 Schema 动态限定合法 token。

任务首选起点关键风险
标签分类Greedy/受限枚举标签外输出
开放文案Sampling 或 Best-of-N跑题与筛选成本
翻译候选Greedy/Beam 并做任务验证长度偏置、低多样性
JSON/DSLConstrained Decoding结构合法但语义错误

比较时固定模型、Prompt 与总预算,报告准确率、结构通过率、多样性、P95 延迟、成本和失败模式。不同实现对停止条件、长度惩罚、随机种子和过滤顺序的定义可能不同,参数必须随运行时版本记录。

完整版教学

选解码策略先问输出要“唯一、丰富还是合法”,再问结果能否验证;不要用一个 Temperature 数字代替整套决策。

一、解码解决的是什么问题

模型在时间步 t 输出条件分布 P(x_t | x_<t),解码器要从指数级序列空间中找到或采样一条完整序列。逐 token 最大概率并不保证整条序列的联合概率最大,更不保证任务质量最高。

sequence score = Σ_t log P(x_t | x_<t)

这个分数偏好模型认为常见的文本,并不等同于事实正确、用户满意或代码通过。解码是搜索/采样层,不能补充模型没有的知识。

二、Greedy Decoding 何时够用

Greedy 每一步选择当前概率最大的 token,只保留一个前缀。它实现简单、延迟低、在服务条件稳定时输出较稳定,适合作为分类标签、短答案和其他策略的基线。

局限是局部最优:第一步稍差的选择可能通向更好的完整序列,Greedy 一旦丢弃就无法回来。它也可能陷入重复或过早输出 EOS,因此“确定”不等于“正确”或“全局最优”。

三、Beam Search 怎样扩展搜索

Beam Search 每轮保留分数最高的 B 个前缀,分别扩展后再剪回 B 条。B=1 退化为 Greedy;B 增大能探索更多路径,也提高显存、计算和候选管理成本。

累计 log probability 天然偏向短序列,因为每增加一个 token 通常都加负数,所以实践中常用长度惩罚:

normalized_score = logP(sequence) / length^α

α 需要按任务校准。Beam 在翻译等条件较强的任务中可能有用,但在开放对话里常产生相似、保守的候选;现代模型上是否胜过 Greedy 必须实测,不能沿用旧经验。

四、Sampling 何时更合适

Sampling 从模型分布中抽取 token,可产生多种合理答案。Temperature 重塑分布尖锐度,Top-k 固定候选数量,Top-p 保留累计概率质量;这些参数的数学细节应在专门的采样参数题中展开。

创意、头脑风暴和多候选探索需要多样性时,Sampling 比 Beam 更自然。高风险事实问答不能靠降低 Temperature 求真,因为低随机只会让高概率错误更稳定。

五、Best-of-N 与 Self-Consistency 有何不同

Best-of-N 生成 N 个完整候选,再用奖励模型、规则、测试或人工标准选一个最高分候选。Self-Consistency 更强调对等价最终答案做聚合或投票;二者都增加成本,但聚合目标不同。

例如代码题生成 5 个方案,用单元测试筛选通过者,这属于带外部验证的 Best-of-N。若只让同一个模型按文风给自己打分,生成器和评分器可能共享偏差,应优先加入独立测试或证据。

六、Constrained Decoding 如何保证结构

受限解码根据当前前缀和语法状态,把非法 token 的 logit 设为负无穷,再从合法集合选择。JSON Schema、正则、枚举或有限状态机都可转成不同程度的 token 约束。

model logits -> grammar-valid token mask -> renormalize -> choose/sample

它可以保证语法路径合法,却不能证明 amount 来自原文、SQL 有权限或日期符合业务规则。结构保证之后仍需 Schema 语义、领域规则和授权校验。

七、停止条件与长度怎样影响结果

EOS、Stop Sequence、最大 token 和 Beam 完成判定都会改变输出。Stop Sequence 可能出现在 JSON 字符串或代码内容中,若运行时只做字节级匹配,就可能意外截断。

对 Beam Search,还要决定何时认为“未完成 Beam 不可能胜过已完成候选”;不同库的 early stopping 含义并不完全相同。生产日志应保存停止原因,不能把达到长度上限的半截结果当成功。

八、用数字比较搜索预算

假设 Greedy 一次耗时 100 ms、任务成功率 78%;Beam=4 耗时 260 ms、成功率 80%;Sampling 生成 4 个候选再用测试筛选耗时 320 ms、成功率 91%。如果错误代价高且测试可靠,第三种可能值得;若是实时低风险接口,2 个百分点未必值得 2.6 倍延迟。

公平比较还要固定总 token 或费用。给 Beam 和 Best-of-N 多倍计算后只与单次 Greedy 比准确率,会把额外预算误当成纯算法收益。

九、怎样按任务选型

先判断输出空间:固定标签用枚举约束;严格结构用 Constrained Decoding;一个稳定自然语言答案以 Greedy 为基线;需要多样创意用 Sampling;可用可靠评分器或测试时再考虑 Best-of-N。Beam 只在序列级搜索确有验证收益时采用。

决策问题若答案为“是”候选策略
是否有硬语法?必须拒绝非法 tokenConstrained Decoding
是否需要多样方案?单一路径不够Sampling / Best-of-N
是否有可靠验证器?能筛掉错误候选Best-of-N
是否严格低延迟?搜索预算有限Greedy 或小候选集

十、如何评测和上线

用真实任务比较端到端成功率,而不是只比模型分数。结构任务看合法率与字段准确率,代码看测试通过,创作看盲评偏好和多样性,事实题看证据支持率。

同时报告 P50/P95 延迟、输出 token、峰值显存、单位成功成本、重复率和截断率。模型、Tokenizer、解码库、长度惩罚、随机种子和参数都要版本化,否则线上回归难以复现。

十一、常见误区与追问

  • 误区:Greedy 一定找到概率最高的完整序列。 它只在每一步局部取最大,没有回溯。
  • 误区:Beam 越大质量越高。 搜索成本上升,还可能强化长度偏置和低多样性。
  • 误区:Sampling 只适合娱乐。 它也可用于多候选探索,但高风险结果必须经过验证。
  • 误区:Constrained Decoding 保证业务正确。 它主要保证语法路径,字段事实和权限仍需校验。
  • 误区:最高序列概率就是最佳用户答案。 模型概率与事实、可读性和任务效用不是同一指标。
  • 追问:什么时候用 Best-of-N? 有可靠评分器或可执行测试,且质量收益值得额外预算时。
  • 追问:Beam 与 Sampling 能组合吗? 可以形成随机 Beam 等变体,但复杂度更高,应先证明简单基线不足。

十二、加强记忆

Greedy 是单路局部选择,Beam 是有限宽度序列搜索,Sampling 用概率换多样性,Constrained Decoding 用语法状态屏蔽非法 token,Best-of-N 则生成多份后由验证器筛选。选型由唯一性、多样性、硬结构、验证器和预算决定;任何解码分数都不能替代事实与业务正确性。最终以同预算的端到端成功率、延迟和单位成功成本验收。