Beam Search(集束搜索)算法

1.概念

Beam Search(集束搜索):是一种启发式图搜索算法,在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。

 好处:减少了空间消耗,并提高了时间效率。

启发式搜索是利用问题拥有的启发信息来引导搜索,达到减少搜索范围、降低问题复杂度的目的


2.过程

Beam Search(集束搜索):使用广度优先策略建立搜索树在树的每一层,按照启发代价对节点进行排序,然后仅留下预先确定的m个数(Beam Width-集束宽度)的节点,仅这些节点在下一层次继续扩展,其他节点就被剪掉了。

(注意:如果集束宽度无穷大,那该搜索就是宽度优先搜索)

步骤如下:

1.将初始节点插入到list中

2.将给节点出堆,如果该节点是目标节点,则算法结束;

3.否则扩展该节点,然后按照启发代价对扩展出来的节点排序,取前m个节点入堆。然后到第二步继续循环。

4.算法结束的条件是找到最优解或者堆为空。


3.图解

Beam Search(集束搜索)算法_第1张图片

 

得到第一个输出的概率分布[0.1,0.1,0.3,0.4,0.1][0.1,0.1,0.3,0.4,0.1],选择概率最大的前两个,0.3和0.4,即Je和moi。 然后Je和moi分别作为Decoder的输入,得到两个概率分布,然后再选择概率和最大的前两个序列,0.3+0.8和0.4+0.6,即Je suis和moi suis。 以此类推,最终可以得到两个序列,即Je suis étudiant和moi suis étudiant,很明显前者的概率和最大,为2.2,所以这个序列是最终得到的结果。 

集束搜索本质上也是贪心的思想,只不过它考虑了更多的候选搜索空间,因此可以得到更多的翻译结果。

(贪心思想:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解)

你可能感兴趣的:(语音)