光束尺寸在光束搜索算法中表示什么?

时间:2014-03-08 18:13:40

标签: algorithm search artificial-intelligence beam-search

我对光束搜索算法有疑问。

让我们说n = 2(我们要从每个节点扩展的节点数)。所以,在开始时,我们只有根,我们从它扩展了2个节点。现在,从这两个节点开始,我们再扩展两个节点。所以,目前,我们有4片叶子。我们将继续这样,直到找到答案。

这是梁搜索的工作原理吗?它是仅扩展每个节点的n = 2,还是一直保留2个叶子节点?

我曾经认为n = 2意味着我们每个节点最多只能有2个活动节点,而不是整个树的两个活动节点。

2 个答案:

答案 0 :(得分:15)

"standard" beam search algorithm中,每一步,您当前“了解”的节点总数都是有限的 - 而不是每个节点将遵循的节点数。

具体而言,如果n = 2,则意味着“梁”的大小始终为2。因此,最初,您从一个节点开始,然后您发现可从其中访问的所有节点,但丢弃除了两个节点之外的所有节点,并使用2个节点完成步骤1。在第2步,你有两个节点,你将扩展它们,并再次丢弃所有节点,除了2个节点(总数,不是每个节点!)。在接下来的步骤中,类似地,您将在每个步骤后保留2个节点。

选择要保留的节点通常由一些启发式函数完成,该函数评估哪个节点最接近目标。

注意波束搜索算法不完整(即,如果存在,它可能找不到解决方案)也不是最佳的(即,它可能找不到最佳解决方案)。看到这种情况的最佳方法是见证n = 1时,它基本上会缩减到best-first-search

答案 1 :(得分:-1)

enter image description here

上面的图片说明了一切。请注意,在每个步骤(图片中的列)中,只有beam_size节点退出,这些节点由任何排序方法选择,其余部分将被丢弃。

here是一个非常直观的实现,希望它有所帮助。

图片来源:http://opennmt.net/OpenNMT/translation/beam_search/