何时选择随机爬山而不是最陡爬山?

人工智能 比较 搜索 爬山 随机爬山
2021-11-14 23:21:53

Stochastic Hill Climbing的表现通常比 Steepest Hill Climbing差,但在哪些情况下前者表现更好?

4个回答

最陡峭的爬山算法适用于凸优化。然而,现实世界的问题通常属于非凸优化类型:有多个峰值。在这种情况下,当该算法从随机解开始时,它到达局部峰值之一而不是全局峰值的可能性很高。模拟退火等改进通过允许算法远离局部峰值来改善这个问题,从而增加它找到全局峰值的可能性。

显然,对于只有一个山峰的简单问题,最陡峭的爬山总是更好。如果发现全局峰值,它也可以使用提前停止。相比之下,模拟退火算法实际上会跳离全局峰值,返回并再次跳开。这将重复,直到它足够冷却或完成某个预设数量的迭代。

现实世界的问题处理嘈杂和缺失的数据。随机爬山方法虽然速度较慢,但​​对这些问题更稳健,并且与最陡的爬山算法相比,优化程序更有可能达到全局峰值。

结语:这是一个很好的问题,它在设计解决方案或在各种算法之间进行选择时提出了一个持久的问题:性能-计算成本的权衡。正如您可能已经猜到的那样,答案始终是:这取决于您的算法的优先级。如果它是对一批数据进行操作的某个在线学习系统的一部分,则存在很强的时间约束,但性能约束较弱(下一批数据将纠正第一批数据引入的错误偏差)。另一方面,如果它是一个手头有全部可用数据的离线学习任务,那么性能是主要的约束条件,随机方法是可取的。

让我们首先从一些定义开始。
Hill-climbing是一种搜索算法,简单地运行一个循环,并不断地朝着增加值的方向移动——即上坡。循环在达到峰值并且没有邻居具有更高的值时终止。

随机爬山是爬山的一种变体,从上坡移动中随机选择一个。选择的概率可以随着上坡移动的陡度而变化。两种众所周知的方法是:
首选爬山:随机生成后继者,直到生成比当前状态更好的后继者。*如果州有许多继任者(如数千或数百万),则认为很好。
随机重启爬山:秉承“如果你不成功,尝试,再试一次”的理念。

现在回答你。在许多情况下,随机爬山实际上可以表现得更好考虑以下情况。该图像显示了状态空间景观。图片中的示例取自《人工智能:现代方法》一书。

在此处输入图像描述

假设您处于当前状态所示的点。如果您实施简单的爬山算法,您将达到局部最大值并且算法终止。即使存在具有更优目标函数值的状态,但是算法由于卡在局部最大值而无法到达那里。算法也可能陷入平坦的局部最大值。
随机重新开始爬山从随机生成的初始状态进行一系列爬山搜索,直到找到目标状态。

爬山的成功取决于状态空间景观的形状。如果只有几个局部最大值,平坦的高原;随机重启爬山会很快找到一个好的解决方案。大多数现实生活中的问题都有非常粗糙的状态空间景观,这使得它们不适合使用爬山算法或其任何变体。

注意:爬山算法也可用于查找最小值,而不仅仅是最大值。我在回答中使用了最大值这个词。如果您正在寻找最小值,所有事情都将是相反的,包括图表。

我对这些概念也很陌生,但按照我的理解,在计算时间很宝贵(包括适应度函数的计算)的情况下,随机爬山会表现得更好,但实际上并没有必要达到最佳状态可能的解决方案。即使达到局部最优也可以。成群运行的机器人就是其中一个可以使用的例子。

我在最陡峭的爬山中看到的唯一区别是它不仅搜索邻居节点,还搜索邻居的后继节点,就像国际象棋算法在选择最佳移动之前搜索更多进一步的移动一样。

TLDR:如果您试图找到小号, 在哪里小号是具有多个局部最优值的评分函数,因此并非所有局部最优值都具有相同的值。