如何选择合适的优化算法?


16

我需要找到一个函数的最小值。在http://docs.scipy.org/doc/scipy/reference/optimize.html上阅读文档,我发现有几种算法可以完成相同的工作,即找到最小的算法。我怎么知道我应该选择哪一个?

列出了一些算法

  • 使用下坡单纯形算法最小化功能。
  • 使用BFGS算法最小化功能。
  • 使用非线性共轭梯度算法最小化函数。
  • 使用Newton-CG方法将函数f最小化。
  • 使用修改的Powell方法最小化功能。

我的函数是线性的。维度约为232750(这是我每次必须计算多少个不同的渐变),一次计算渐变和成本大约需要2分钟,因此并不便宜。我认为我没有约束。它是确定性的和连续的。


好吧,您必须调查问题的性质:它是否线性?它的维数是多少?您的成本函数便宜吗?您可以分析和/或廉价地评估您的衍生工具吗?你有约束吗?如果您有约束,可以不受约束地轻松编写问题吗?请详细说明这些事项。
usεr11852说恢复单胞菌

@ user11852是线性的。维度大约有50个特征,一次计算梯度和成本大约需要2分钟,因此并不便宜。我认为我没有约束。
siamii 2013年

我不确定这里所说的“线性”是什么意思。如果您的问题是线性的,则梯度是恒定的,计算起来很便宜。如果您的目标函数是线性的并且没有约束,则最小值为-infinity(或者可能为0)。
paul 2013年

@paul:在优化中,线性通常是指约束,而不是函数本身。我(错误地授予)提到了与函数的平滑度有关的“线性”,我认为这也是OP所指的。在我的回答中,我主要是基于他后来仍然说“连续”的事实。
usεr11852说恢复单胞菌

Answers:


14

根据您所说的:我假设您必须针对50个变量进行优化;我还假设您遇到的情况是,找到解析导数非常昂贵(更不用说获取数值了),并且您的优化不受限制。

让我强调一下,不幸的是,当在大型或小型优化例程之间进行选择时,您会在25-30到100个变量之间造成一些微弱的影响。话虽如此,什么也没有丢失。

考虑到即使一阶导数也很昂贵,要想摆脱这种情况就扼杀了牛顿方法的思想。您可能会对准牛顿(BFGS)感到满意,但是如果您的粗麻布有点像对角线。CG通常比BFGS慢一些,因此可能不会带来很多改善。如果内存也是一个问题,请使用它(或者在这种情况下只使用L-BFGS)。此外,鉴于评估功能的速度有多慢,最简单的下降/直线搜索算法将非常缓慢。模拟退火和其他随机搜索变体也是如此(我假设您无权访问HMC和所有爵士乐)。

因此,当您需要对单个功能进行评估时需要最大的收益时:使用Powell的方法并测试COBYLA。尽管它是一种受约束的优化算法,因为它会内部线性地逼近函数的梯度来加快速度,但是它将能够利用函数的线性。也一定要尝试NLopt for Python。他们有很多没有梯度的优化器。尝试UOBYQA;这也是鲍威尔的创意(通过二次逼近进行无约束的优化)。

非常简单:N-CG算法依赖于计算Hessian,而您的Hessian似乎非常昂贵。NLCG和BFGS不需要它,尽管他们可能会在第一步中尝试对其进行一次计算。

我故意省略了单纯形算法,因为它是完全不同的野兽。与渐变本身无关。尝试一下,但是我不能对此发表评论。这实际上取决于您问题的性质。

对于数值优化的第一个很好的参考,CTKelly的书《迭代的优化方法》将带给您相当不错的帮助。


供将来参考:您可能有兴趣在Stackexchange上查看Computational Science beta,以了解类似问题。
usεr11852说恢复单胞菌

感谢您的回答。实际上,我的维度是232,750。这是我每次计算的渐变数。我在GPU上进行功能评估和梯度计算。会与NLopt兼容吗?
siamii 2013年

我没有在GPU上使用NLopt,但是我没有明显的理由认为它应该是有关兼容性的问题。我可能会问这个问题,尽管频繁往返于GPU进行I / O操作。
usεr11852说恢复单胞菌

@usεr11852,还可以讨论比较梯度下降和QR分解方法以最小化线性回归成本函数吗?我需要问一个单独的问题吗?
Nisha Arora博士,

@DrNishaArora:是的。这将适合一个单独的问题。请参阅线程。当有封闭形式的数学解决方案可用时,为什么将梯度下降用于线性回归?确保您避免重复!
usεr11852恢复单胞菌说,

1

也许您应该给自己一本有关数值优化的入门书。您需要考虑您的功能才能确定算法。

在您提到的算法中,重要的区别是是否需要Jacobian或Hessian或仅函数本身。

考虑到这是一个统计问题解答站点,因此涉及随机变量:确保可以确定函数的确定性,以便在搜索空间中产生连续结果。


它是确定性的和连续的。
siamii 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.