0%

集束搜索

算法思想

举例说明,在NLP领域中,经常会涉及机器翻译结果的搜索,比如在decoder中,我们可以使用贪心策略每次选择softmax值最高的,但是由于贪心解往往达不到最优,所以我们放松贪心约束,每次选择最优的k个,k便是集束宽度,这样对解的搜索叫做集束搜索。

过程示例

假设字典为[a,b,c],beam size选择2,则如下图有:

  1. 在生成第1个词的时候,选择概率最大的2个词,那么当前序列就是a或b

  2. 生成第2个词的时候,我们将当前序列a或b,分别与字典中的所有词进行组合,得到新的6个序列aa ab ac ba bb bc,然后从其中选择2个概率最高的,作为当前序列,即ab或bb

不断重复这个过程,直到遇到结束符为止。最终输出2个概率最高的序列。

显然集束搜索属于贪心算法,不能保证一定能够找到全局最优解,因为考虑到搜索空间太大,而采用一个相对的较优解。

而贪心搜索由于每次考虑当下词的概率,而通常英文中有些常用结构,比如吴恩达网课中的例子:“is going”,出现概率较大,会导致模型最终生成的句子过于冗余,如“is visiting”和“is going to be visiting”。

贪心搜索可以认为beam size为1时的集束搜索特例。