神经网络Transformer架构中的波束搜索
字数 644 2025-11-23 01:52:27
神经网络Transformer架构中的波束搜索
波束搜索是一种用于序列生成任务的解码策略,它通过在每个时间步保留多个最有可能的候选序列,来平衡贪婪解码的局部最优风险和穷举搜索的计算成本。
波束搜索的基本原理
波束搜索的核心是维护一个固定大小的候选序列集合,这个大小称为波束宽度。在解码的每一步,算法不是只选择当前概率最高的一个词,而是扩展所有可能的下一词,并从所有扩展后的候选序列中,选择总体概率最高的前k个序列。具体步骤包括:1. 初始化一个只包含起始标记的序列,并计算其对数概率;2. 对于序列中的每个候选,生成所有可能的下一词,计算扩展后的序列概率;3. 从所有扩展序列中选择概率最高的k个作为新的候选集;4. 重复步骤2-3,直到所有候选序列都生成结束标记或达到最大长度。
波束搜索的概率计算与终止条件
序列的概率通常用对数概率求和来计算,以避免数值下溢。每个候选序列的得分是其所有词的条件概率的对数和。当候选序列生成结束标记时,该序列被视为已完成,会被移至完成序列列表,不再参与后续扩展。搜索过程在所有候选序列都完成或达到长度限制时终止。最终,从完成序列列表中选择总概率最高的序列作为输出。
波束搜索的变体与优化
标准波波束搜索可能倾向于生成较短序列,因为概率乘积会随序列增长而减小。长度归一化通过将序列得分除以序列长度或应用其他惩罚项来缓解此问题。此外,可设置最小生成长度或调整结束标记的生成阈值,以控制输出质量。这些优化使波束搜索在机器翻译、文本生成等任务中更有效。