说明:用于在搜索中选择较优的结果,相对于暴力搜索减少了存储和计算资源。常被用于文本生成任务中。
主要思想:以se2seq为例(一般用于测试,因为在训练的时候已经知道最优解),在decoder部分,假设每一步会生成s个数值分别表示属于词典中各个单词的概率。在第t步选择s中的top-k个(beam size=k),其对应的k个单词作为t+1步的输入(分别输入),在第t+1步,得到 k ∗ s k*s k∗s个概率值,从中选择top-k作为t+2步的输入,如此循环往复直到出现结束符。
下面这个例子将beam search在encoder-decoder架构中的使用讲解得很清楚
Beam Search思想在机器翻译中的例子