束搜索(Beam Search) 是一种常用于序列生成任务
的启发式搜索算法,广泛应用于自然语言处理中的机器翻译、文本生成等任务。它是一种平衡了搜索效率和搜索质量
的方法,相比于贪心搜索,它能找到更优的解,但计算复杂度比穷举搜索更低。
1. 核心思想
束搜索是一种宽度受限的最优搜索方法,在生成序列时,它会同时保留多个最优候选,而不是只关注当前最优的选择。具体来说,束搜索会保留固定数量的候选序列,这被称为束宽(beam width or beam size),并在每一步扩展这些候选序列,最终从中选择得分最高的一个作为结果。
2. 工作原理
- 初始化:从序列生成的初始状态(通常是句子开头的一个标记,如 < s t a r t > <start> <start>)开始,模型为每个候选生成概率。
- 束宽控制:根据概率值,选出前 k k k 个最优的候选, k k k 就是束宽,这些候选将被进一步扩展。
- 逐步生成:对每个选中的候选项,模型继续生成下一个词的概率分布,并扩展所有候选。再从所有扩展候选中选出 k k