模型层 开放阅读

Beam Search

Beam Search

概念 ID
beam-search
更新时间
2026-05-29
来源数量
待补

Beam Search(束搜索)

3 秒看懂

Beam Search 是一种截断式宽度优先搜索解码算法:在生成序列的每一步只保留得分最高的 k 条候选路径(k 即束宽 beam width),其余剪枝。它是贪心搜索(k=1)与穷举搜索(k=∞)之间的连续折中,是机器翻译、语音识别、LLM 推理解码等场景中最经典的解码策略之一。

3 分钟产业解释

在大语言模型(LLM)的推理部署中,模型输出的 token 概率分布只是”半成品”——真正决定输出质量的,是解码策略。Beam Search 正是这条”最后一公里”上最广泛使用的确定性解码算法。

为什么重要? 以机器翻译为例,如果用贪心搜索(每步只选概率最高的 token),全局最优序列往往被错过;但如果穷举所有可能序列,计算量指数爆炸。Beam Search 用一条固定宽度的搜索束把指数级空间压缩为多项式级,同时保留足够多的”好苗子”以逼近全局最优。

产业地位演进:

时代主要解码策略典型场景
2014-2017(Seq2Seq/NMT 盛期)Beam Search 统治机器翻译、摘要
2018-2020(预训练+微调兴起)Beam Search 仍主流,但开放式生成开始引入采样翻译、问答(确定性任务)
2020-2023(ChatGPT/Instruct 时代)开放对话转向 nucleus sampling / top-k 采样;结构化/约束任务仍用 Beam Search代码生成(受限解码)、语音识别、翻译
2023-至今Beam Search 与约束解码(Constrained Beam Search)、投机解码(Speculative Decoding)结合,在确定性、合规性要求高的工业场景不可替代医疗文本、合规摘要、ASR 后处理

一句话产业定位: Beam Search 不是”过时的老算法”,而是确定性序列生成场景的工业基线,在任何需要”唯一正确答案”的任务中仍是首选。

15 分钟专家深入

算法核心

给定一个自回归语言模型 P(y_t | y_{<t}, x),Beam Search 维护一个大小为 $k$ 的候选集(beam),在每个时间步:

  1. 扩展(Expand):对每条 beam 中的序列,用模型计算下一个 token 的概率分布;
  2. 合并(Merge):将所有 beam × V(词表大小)个候选拼在一起;
  3. 剪枝(Prune):按累积对数概率排序,只保留 top-k;
  4. 终止检查:如果所有 beam 都已生成 <eos> 或达到最大长度,停止。
伪代码(简化):

beams = [{"tokens": [], "score": 0.0}]

for t in range(max_len):
    all_candidates = []
    for beam in beams:
        if beam.tokens[-1] == :
            all_candidates.append(beam)   # 已结束的直接保留
            continue
        log_probs = model.forward(beam.tokens)  # shape: (V,)
        topk_indices = argtopk(log_probs, k)
        for idx in topk_indices:
            all_candidates.append({
                "tokens": beam.tokens + [idx],
                "score": beam.score + log_probs[idx]
            })
    # 全局 top-k
    beams = sorted(all_candidates, key=lambda c: c.score, reverse=True)[:k]

return beams[0]  # 最优序列

长度归一化(Length Normalization)

原始 Beam Search 存在短序列偏好偏差——更短的序列累积对数概率天然更高(每个 token 贡献负值,越加越小)。业界标准修复方案:

\text{score}(Y) = \frac{\log P(Y)}{|Y|^\alpha}

其中 \alpha \in [0.6, 1.0] 是长度惩罚系数(Wu et al., 2016, Google NMT 论文提出)。\alpha = 0 即无归一化,\alpha = 1 即按长度取均值。

束宽 k 的选取

  • k = 1:退化为贪心搜索
  • k = 4~10:机器翻译、ASR 常用区间(BLEU/WER 收益在此区间快速饱和)
  • k = 20~50:摘要、受限解码等复杂任务可能需要
  • k → ∞:退化为穷举 BFS(不实际)

经验值:k 从 1 增到 4 的增益远大于从 4 增到 40 的增益,存在明显的边际递减。

计算复杂度

  • 时间复杂度:O(T \times k \times V),其中 $T$ 为序列长度,$V$ 为词表大小
  • 空间复杂度:O(k \times T)(存储候选序列)
  • 与贪心搜索相比,计算量约增加 k 倍

技术原理(深入机制 + 关键参数)

与相关搜索策略的关系

                    ┌─────────────────────────────────────┐
                    │         搜索空间视图                   │
                    │                                     │
                    │  完全搜索 (k=∞)                       │
                    │    ╔═══════════════════════╗         │
                    │    ║                       ║         │
                    │    ║   Beam Search (k)     ║         │
                    │    ║    ┌─────────────┐    ║         │
                    │    ║    │             │    ║         │
                    │    ║    │  Greedy     │    ║         │
                    │    ║    │  (k=1)      │    ║         │
                    │    ║    └─────────────┘    ║         │
                    │    ║                       ║         │
                    │    ╚═══════════════════════╝         │
                    │                                     │
                    │  采样 (stochastic): 正交维度           │
                    │  (top-k, nucleus, temperature)       │
                    └─────────────────────────────────────┘

关键区分:Beam Search 是确定性的(给定 k,输出固定),采样是随机性的。 这是两者最根本的区别,也是为什么在需要一致性和可复现性的场景(翻译、ASR)偏好 Beam Search。

核心公式:累积得分

Y^* = \arg\max_{Y = (y_1, ..., y_T)} \sum_{t=1}^{T} \log P(y_t | y_{<t}, x)

Beam Search 是该精确优化问题的近似求解器——当 $k$ 足够大时逼近精确解,但不保证找到全局最优(NP-hard 问题的启发式)。

Beam Search 在 Transformer 自回归解码中的执行细节

时间步 t=3 示意(k=3, V=5):

Beam 1: [I, love, you]  score=-2.1
Beam 2: [I, love, it]   score=-2.3
Beam 3: [I, like, you]  score=-2.5

模型输出各 beam 的 next-token log_probs:

Beam 1 → { very: -0.5, so: -1.2, too: -1.8, ... }
Beam 2 → { very: -0.3, much: -1.0, a: -2.0, ... }
Beam 3 → { very: -0.7, it: -0.9, this: -2.1, ... }

扩展后 3×5=15 个候选,取 top-3:
  Beam 1 + very → score=-2.1+(-0.5)=-2.6  ← 保留
  Beam 2 + very → score=-2.3+(-0.3)=-2.6  ← 保留
  Beam 3 + it   → score=-2.5+(-0.9)=-3.4  ← 保留
  (其余 12 个被剪枝)

关键变体

变体核心思想典型应用
Diverse Beam Search (Vijayakumar et al., 2018)在不同 beam group 间施加多样性惩罚,避免 beam 间高度重复视觉描述、摘要多候选
Constrained Beam Search强制输出序列包含特定 token/子序列命名实体必须出现、合规关键词
Length-Normalized Beam Search对累积 log-prob 做长度归一化几乎所有工业场景的标准配置
Beam Sampling (Stochastic Beam Search)在 beam 选择中引入随机性(Gumbel-Softmax 等)解码多样性需求
Blockwise Beam Search分块解码,每块内部做 beam search长文本生成

技术演进史

年份里程碑意义
~1977Beam Search 最早由 Lowerre 提出(Harpy 语音识别系统)将搜索复杂度从指数降到多项式
1990s广泛应用于统计机器翻译(SMT)phrase-based 模型成为 SMT 解码标配
2014Seq2Seq (Sutskever et al.) + Attention (Bahdanau et al.)Beam Search 进入神经序列生成
2016Google NMT (Wu et al.) 系统性阐述 length penaltyBeam Search 实践规范确立
2017Transformer (Vaswani et al.)自回归+Beam Search 成标准范式
2018Diverse Beam Search; 质疑 Beam Search 在对话中多样性不足Beam Search 在开放式生成中的局限性被正视
2019-2020Nucleus Sampling (Holtzman et al., 2020) 被提出开放式生成转向采样
2022-2024Constrained Beam Search + Speculative Decoding 兴起Beam Search 与新范式融合,在工业合规场景重获重视

技术路线对比(量化表)

维度Greedy (k=1)Beam Search (k=N)Nucleus Sampling (top-p)Speculative Decoding
确定性✅ 确定✅ 确定❌ 随机✅/❌ 取决于验证策略
搜索宽度1k(典型 4~20)1(每步采样)1(验证批)
最优性逼近差(局部最优)中-好(k 越大越好)N/A(不追求最优)取决于草稿模型
推理延迟基准 T 步T 步 × k 倍计算T 步T 步 ÷ 加速比
GPU 利用率低(单序列)中(k 路并行)低-中高(批验证)
输出多样性极低低(beam 间可能高度相似)
适用场景对延迟极敏感翻译、ASR、摘要、结构化生成对话、创意写作低延迟推理加速
典型 BLEU 提升(vs greedy)基准+1~4 BLEU(k=5, 翻译任务)不适用N/A

注:BLEU 提升范围为基于标准 WMT 翻译基准的典型经验区间,非单点数据 [学术文献综合]。


上下游

上游(解码器依赖什么)                    下游(谁在用 Beam Search)
┌──────────────────────┐           ┌──────────────────────────┐
│ 语言模型              │           │ 机器翻译(Google Translate)│
│  - Transformer decoder│           │ 语音识别(Whisper 等)     │
│  - RNN/LSTM (legacy)  │    ──→    │ 文本摘要                   │
│  - CTC decoder (ASR)  │           │ OCR 后处理                 │
│                      │           │ 代码生成(受限解码)         │
│ 词表设计 (BPE/SentencePiece) │    │ 结构化输出(JSON/SQL)     │
│ Logits / 概率分布      │           │ 蛋白质序列设计             │
└──────────────────────┘           └──────────────────────────┘

关键指标

指标含义量级参考
束宽 k搜索宽度4~10 常用
Length Penalty α长度归一化系数0.6~1.0
BLEU / ROUGE / WER输出质量(翻译/摘要/ASR)Beam vs Greedy 典型提升 1~4 BLEU
推理延迟倍数相比 Greedy 的延迟开销约 k 倍
n-best 列表多样性前 n 条候选之间的差异度原始 Beam Search 较低,Diverse Beam 较高
覆盖率 (Coverage)beam 中至少含一条高质量序列的概率k≥5 时通常 > 95% [经验估算]

供需与市场数据

市场定位: Beam Search 本身是开源算法(无专利壁垒),其”市场价值”体现在嵌入其的产品与服务中:

  • 机器翻译市场:全球 NMT 市场规模估算在数十亿美元量级 [行业报告估算],几乎所有主流翻译引擎的解码层均使用 Beam Search 或其变体。
  • ASR(自动语音识别):CTC/Attention-based ASR 的解码阶段广泛使用 Beam Search(如 Whisper 的默认解码模式)。
  • LLM 推理服务:在结构化输出、合规摘要等场景,Beam Search + 约束解码是主要方案。推理服务中 Beam Search 的额外计算成本 ≈ k 倍 single-sequence 推理,这直接影响 GPU 算力消耗和成本。

成本敏感点: 大 k 值意味着更多的 KV Cache 开销和计算量。在大模型(如 70B+ 参数)部署中,k 从 1 增到 5 可能使每请求推理成本增加 3~5 倍 [定性估算]。


代表公司与资本映射

公司/项目与 Beam Search 的关系关注点
GoogleBeam Search 在 Google Translate、Gemma 等产品中核心使用;Google 是 length penalty 规范化的重要推动者NMT 解码效率优化
OpenAIChatGPT 推理中 temperature=0 近似贪心;结构化输出(function calling)场景可能使用约束搜索开放对话用采样,结构化场景用确定性解码
Meta (Fairseq/NLLB)Fairseq 提供了标准化 Beam Search 实现;NLLB 多语言翻译大规模应用多语言翻译解码
Hugging Face (Transformers)model.generate() 默认使用 Beam Search,提供 num_beams, length_penalty, num_beam_groups 等参数开源生态标准实现
DeepMind / Google BrainDiverse Beam Search 论文来源;Constrained Beam Search 在 T5X 中有实现研究前沿变体
NVIDIA (FasterTransformer/vLLM)Beam Search 的 GPU 高效实现,含 beam-level KV Cache 管理优化推理引擎优化

投资逻辑

Beam Search 的投资启示

  1. Beam Search 不直接创造投资标的——它是公开算法,无护城河。但理解它有助于判断推理基础设施的技术路线。

  2. 推理成本视角: 如果一个 AI 应用大量依赖 Beam Search(k>1),其 GPU 算力需求显著高于贪心/采样解码,利好推理芯片推理优化公司。

  3. 确定性解码 vs 随机解码的分化:

    • 企业级/合规场景(翻译、医疗、法律、金融摘要)偏好 Beam Search 等确定性方法 → 推动约束解码引擎需求
    • C 端对话/创意偏好采样 → 推动低延迟随机解码优化
  4. Speculative Decoding 可能部分替代 Beam Search: 在延迟敏感场景,投机解码用小模型草稿+大模型验证,可能取代部分 Beam Search 应用(牺牲少量质量换大幅提速)。


常见误读纠偏

❌ 误读 1:“Beam Search 总能找到最优序列”

纠偏: Beam Search 是启发式算法,不保证全局最优。因为每步做局部 top-k 剪枝,可能在早期就剪掉了通向全局最优解的路径。存在大量案例:即使是 k=10 的 Beam Search,输出质量也低于穷举搜索(但穷举不实际)。此外,“最优”取决于评估指标——Beam Search 优化的是 token-level log-prob 之和,这与 BLEU/ROUGE 等句级指标并不完全对齐。

❌ 误读 2:“Beam Search 已经被采样方法淘汰了”

纠偏: 这是混淆了开放式对话生成确定性序列任务。在机器翻译、语音识别、结构化输出等任务中,Beam Search 仍是事实标准。GPT 类模型用采样是因为对话需要多样性,而非采样”更好”。Google Translate 至今使用 Beam Search 解码。Whisper ASR 的默认解码也是 Beam Search(num_beams=5)。

❌ 误读 3:“增大 beam width k 总是能提升质量”

纠偏: 存在明显的边际递减甚至过拟合效应。k 从 1 到 4 通常有显著提升,但 k 增到 20 以上时,BLEU/WER 增益可能接近零甚至下降(因为长度归一化不完美、或者高 k 导致选择了过于”安全”但不自然的翻译)。实际部署中需在质量和成本间权衡。

❌ 误读 4:“Beam Search 和 Sampling 是同一维度上的两种选择”

纠偏: 它们不是简单的”确定 vs 随机”对立。Beam Search 的核心是搜索(search)——在多步决策空间中做全局优化;Sampling 的核心是随机抽取(sampling)——每步独立采样。它们解决的问题不同:Beam Search 逼近 \arg\max,Sampling 逼近 $P(Y|X)$ 的分布。可以组合使用(如 Stochastic Beam Search / Beam Sampling)。


学习路径

Level 1 · 入门
  ├── 理解贪心搜索 → Beam Search → 穷举搜索的递进关系
  ├── 手动实现一个 k=3 的 Beam Search(词表 < 100)
  └── 推荐阅读:CS224N Lecture (Stanford NLP) 相关内容

Level 2 · 应用
  ├── 使用 Hugging Face Transformers 的 generate() 调参
  │   (num_beams, length_penalty, early_stopping, no_repeat_ngram_size)
  ├── 对比不同 k 值在翻译/摘要任务上的 BLEU/ROUGE
  └── 推荐论文:Wu et al. 2016 "Google's NMT System" (length penalty)

Level 3 · 进阶
  ├── 实现 Diverse Beam Search
  ├── 理解 Beam Search 在 CTC 解码中的特殊处理(prefix beam search)
  ├── 学习 Constrained Beam Search(用于强制输出包含特定 token)
  └── 推荐论文:Vijayakumar et al. 2018 "Diverse Beam Search"

Level 4 · 前沿
  ├── Beam Search 与 Speculative Decoding 的关系与替代
  ├── 在 vLLM / FasterTransformer 中阅读 Beam Search 的 GPU 优化实现
  ├── 非自回归解码(NAT)对 Beam Search 范式的挑战
  └── 推荐论文:Leviathan et al. 2023 "Fast Inference from Transformers
      via Speculative Decoding"

一句话总结

Beam Search 是序列生成解码的”瑞士军刀”——在确定性、可复现性优先的任务(翻译、ASR、结构化输出)中至今不可替代,而在开放式对话中让位于采样方法;理解它是理解 LLM 推理栈解码层的基础。


延伸阅读与来源

  1. Lowerre, B. (1976). The HARPY Speech Recognition System. PhD Thesis, CMU. —— Beam Search 最早出处。
  2. Wu, Y. et al. (2016). Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation. arXiv:1609.08144. —— 工业级 Beam Search 实践(length penalty 规范化)。
  3. Vijayakumar, A. et al. (2018). Diverse Beam Search: Decoding Diverse Solutions from Neural Sequence Models. AAAI 2018. —— Beam Search 多样性改进。
  4. Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. ICLR 2020. —— Nucleus Sampling 提出,对比 Beam Search 的不足。
  5. Meister, C. et al. (2020). If Beam Search is the Answer, What was the Question? EMNLP 2020. —— 对 Beam Search 目标函数错配问题的深刻分析。
  6. Hugging Face Transformers 文档model.generate() 参数说明,Beam Search 实践指南。
  7. vLLM / FasterTransformer 源码 — Beam Search 的 GPU 高效实现细节。
source: 公开披露与公开资料整理 本页仅用于产业链学习、信息检索和研究辅助;不构成投资建议,不预测涨跌,不提供买卖、仓位或目标价建议。
完整概念页 复盘 13 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型