什么是 Beam Search?它在解码阶段的作用是什么?

发布时间:2026/7/31 4:26:19
什么是 Beam Search?它在解码阶段的作用是什么? Beam Search束搜索核心定义Beam Search 是一种启发式搜索算法在序列生成任务的解码阶段每一步保留Top-K个概率最高的候选序列K 称为 beam width / 束宽而非贪心地只选最优一个从而在搜索效率和解码质量之间取得平衡。与其他解码策略对比Greedy Search (贪心): 每步只选概率最高的 1 个词 → 速度快但容易陷入局部最优 Beam Search (束搜索): 每步保留 Top-K 个候选序列 → 质量更高计算量可控 Exhaustive Search (穷举): 考虑所有可能序列 → 理论最优但复杂度 O(V^n) 不可行工作流程以 beam width 2、词表大小 V 为例Step 1: 从 START 出发计算所有 V 个词的概率 → 保留概率最高的 2 个候选: [A, B] Step 2: 对 [A, B] 各自扩展 V 个词共 2×V 个候选 → 按累积概率保留 Top-2: [A→C, B→D] Step 3: 对 [A→C, B→D] 各自扩展 V 个词共 2×V 个候选 → 按累积概率保留 Top-2: [A→C→E, B→D→F] ...直到所有候选都生成 END 或达到最大长度累积概率计算候选序列 y (y_1, y_2, ..., y_t) 的得分: Score(y) log P(y_1 | x) log P(y_2 | x, y_1) ... log P(y_t | x, y_1, ..., y_{t-1}) Σ log P(y_i | x, y_{i})使用 log 概率相加而非原始概率相乘避免数值下溢。长度归一化长序列的累积 log 概率天然更小更多负数相加需要归一化来避免偏向短序列最终得分 Score(y) / length(y)^α α 1.0 → 完全按平均 log 概率排序偏向长序列 α 0.0 → 不归一化偏向短序列 α ∈ [0.6, 0.7] → 经验最佳值GNMT 论文推荐在解码阶段的作用1. 提升生成质量贪心搜索可能错过全局更优的序列: 贪心路径: P(A) 0.6 P(B) 0.4 → 选 A 但 A→C 0.1, A→D 0.1 → 最终 P 0.06 Beam 发现: B→E 0.3, B→F 0.3 → 最终 P 0.12 ← 更优贪心搜索在第一步选错后无法回头Beam Search 通过保留多个候选提供了纠错能力。2. 平衡质量与效率策略每步计算量质量适用场景GreedyO(V)低实时对话、快速原型Beam (K5)O(K×V)中高机器翻译、摘要生成Beam (K20)O(K×V)高离线翻译、高质量生成穷举O(V^n)最优不可行3. 支持多样化输出通过调整 beam width 和评分策略可以控制输出的多样性小 K输出集中、保守大 K覆盖更多可能但计算开销增大关键参数beam_width (K) → 保留的候选数量通常 4~10 max_length → 最大生成长度防止无限解码 length_penalty (α) → 长度归一化系数通常 0.6~1.0 early_stopping → 是否在所有 beam 都生成 END 后停止局限性局限说明偏向短序列不做长度归一化时短序列累积概率天然更高缺乏多样性Top-K 候选往往只在末尾几个词不同前缀高度重复开放生成不适用在故事续写、对话等开放场景中Beam Search 倾向生成通用、平淡的文本不如 top-p / top-k 采样自然计算开销K 越大计算和内存开销线性增长与采样方法的对比确定性解码: Greedy Search → 每步选 Top-1 Beam Search → 每步保留 Top-K 随机性解码 (适合开放生成): Top-k Sampling → 每步从概率最高的 k 个词中随机采样 Top-p Sampling → 每步从累积概率达到 p 的最小词集中采样 (nucleus sampling) Temperature → 调整 softmax 温度控制分布平滑度一句话总结Beam Search 在解码阶段通过每步保留 Top-K 个概率最高的候选序列克服了贪心搜索的局部最优问题在可控的计算开销下显著提升序列生成的整体质量是机器翻译、文本摘要等任务的标准解码策略。