这两个过程似乎都用于估计未知函数的最大值,并且两者显然有不同的方法。
但在实践中,这两种方法本质上是可以互换的吗?我想在哪里使用一个而不是另一个?
https://en.wikipedia.org/wiki/Simulated_annealing
类似问题
贝叶斯优化还是梯度下降?
这两个过程似乎都用于估计未知函数的最大值,并且两者显然有不同的方法。
但在实践中,这两种方法本质上是可以互换的吗?我想在哪里使用一个而不是另一个?
https://en.wikipedia.org/wiki/Simulated_annealing
类似问题
贝叶斯优化还是梯度下降?
与贝叶斯优化 (BO) 相比,模拟退火 (SA) 是一种非常简单的算法。两种方法都没有假设成本函数的凸性,也没有一种方法严重依赖梯度信息。
SA 在某种程度上是一种受过教育的随机游走。候选解在具有特定跳跃计划(冷却参数)的解空间上跳跃。你不关心你之前降落在哪里,你不知道你接下来会降落在哪里。这是典型的马尔可夫链方法。您没有对有关底层解决方案表面的任何强假设进行建模。MCMC 优化与 SA 相比有很长的路要走(例如参见Hamiltonian Monte Carlo),但我们不会进一步扩展。SA 的关键问题之一是您需要多次“快速”评估。这是有道理的,您需要尽可能多的样本来探索尽可能多的状态(即候选解决方案)。你只使用了一点点梯度信息(你几乎总是接受“更好”的解决方案)。
现在看看BO。BO(或简单的高斯过程(GP)回归您的成本函数评估)试图在函数评估方面做完全相反的事情。它试图最小化您进行的评估次数。它为您的成本函数构建了一个特定的非参数模型(通常是一个 GP),该模型通常假设有噪声。它根本不使用梯度信息。BO 允许您通过少量函数评估来构建成本函数的信息模型。然后你“查询”这个拟合函数的极值。魔鬼又在细节中;您需要智能地进行采样(并假设您的先验也有一半是合理的)。下一步要在哪里评估您的功能,尤其是当您知道您的功能实际上会随着时间的推移而略有变化时(例如,here)。
SA 相对于 BO 的一个明显优势是,在 SA 中可以非常直接地限制您的解决方案空间。例如,如果您想要非负解决方案,您只需将样本分布限制在非负解决方案中。这在 BO 中并不那么直接,因为即使您根据您的约束(例如非负性)评估您的函数,您也需要实际约束您的过程;这项任务虽然并非不可能,但涉及更多。
一般来说,在成本函数评估成本低的情况下,人们会更喜欢 SA,而在成本函数评估成本高昂的情况下,人们会更喜欢 BO。我认为 SA 正在缓慢而稳定地失宠。尤其是无梯度优化的工作(例如NEWQUA,BOBYQA)与无需评估导数的标准梯度下降方法相比,失去了它的主要优势之一。类似地,自适应 MCMC 的工作(例如,参见上面的参考资料)使得它在几乎所有情况下的 MCMC 优化方面都是浪费的。