9

我正在寻找运行梯度下降优化以最小化变量实例化的成本。我的程序在计算上非常昂贵,所以我正在寻找一个可以快速实现 GD 的流行库。推荐的图书馆/参考资料是什么?

4

4 回答 4

10

GSL是一个很棒的(免费的)库,它已经实现了数学和科学兴趣的常见功能。

您可以在线阅读整个参考手册。四处寻找,开始看起来很有趣,但我认为我们需要更多地了解这个问题。

于 2012-07-16T23:26:42.153 回答
5

听起来您对最小化方法相当陌生。每当我需要学习一组新的数值方法时,我通常会查看数值食谱。这本书很好地概述了该领域最常见的方法、它们的权衡,以及(重要的是)在哪里可以查看文献以获取更多信息。它通常不是我停下来的地方,但它通常是一个有用的起点。

例如,如果您的函数成本很高,那么您的目标是最小化需要收敛的评估次数。如果您有梯度的解析表达式,那么基于梯度的方法可能对您有利,假设函数及其梯度在感兴趣的域中表现良好(缺乏奇异性)。

如果您没有分析梯度,那么您几乎总是最好使用仅评估函数(而不是其梯度)的下坡单纯形法。数值梯度很昂贵

另请注意,所有这些方法都将收敛到局部最小值,因此它们对您最初启动优化器的点相当敏感。全局优化是完全不同的野兽。

最后的想法是,您可以找到的几乎所有用于最小化的代码都将相当有效。最小化的实际成本在成本函数中。您应该花时间分析和优化您的成本函数,并选择一种算法来最大限度地减少您需要调用它的次数(下坡单纯形法、共轭梯度法和BFGS等方法都适用于不同类型的问题)。

在实际代码方面,除了已经提到的其他库之外,您还可以在NETLIB找到很多不错的例程。大多数例程都在 FORTRAN 77 中,但不是全部;要将它们转换为 C,f2c非常有用。

于 2012-07-18T03:38:25.937 回答
4

对于这种优化工作,最受尊敬的库之一是NAG 库。这些在世界各地的大学和工业中使用。它们可用于 C / FORTRAN。它们非常不自由,并且包含的​​不仅仅是最小化函数 - 涵盖了许多通用数值数学。

无论如何,我怀疑这个库对于你需要的东西来说太过分了。但这里是与最小化有关的部分:局部最小化全局最小化

于 2012-07-17T01:07:04.153 回答
2

尝试对学生免费提供的CPLEX 。

于 2012-07-16T23:26:59.050 回答