在C ++库快速梯度下降执行?(Fast gradient-descent implementati

2019-06-26 07:56发布

我期待运行梯度下降优化,尽量减少变量的实例化的成本。 我的计划是计算量非常大,所以我在寻找一个快速实现GD的通俗图书馆。 什么是推荐的图书馆/参考?

Answer 1:

GSL是已经实现的数学和科学价值的常用功能一个伟大的(免费)库。

您可以通过整个细读参考手册在线 。 闲逛, 这开始看起来有趣,但我认为我们需要更多地了解这个问题。



Answer 2:

一个用于这种优化工作的最好的尊敬库的是NAG库 。 这些都是用来遍布大学和工业界的世界。 他们可用于C / FORTRAN。 他们是不自由的很,和包含的不仅仅是最小化的功能多了很多 - 很多通用计算数学的覆盖。

无论如何,我怀疑这个库是矫枉过正,你所需要的。 但这里有属于最小的部分: 局部极小和全局优化 。



Answer 3:

这听起来像你是相当新的最小化的方法。 每当我需要学习一套新的数值方法,我通常看在数值食谱 。 这是一本书,它提供的最常用的方法很好的概述在外地,他们的权衡,以及(重要)文献哪里寻找更多的信息。 它通常不是我停下来,但它往往是一个有益的起点。

例如,如果你的函数是昂贵的,那么你的目标是尽量减少评估的次数需要收敛。 如果你有一个渐变的解析表达式,然后基于梯度的方法可能会工作,你的优势,假设函数及其梯度是乖巧的(缺乏奇)在感兴趣的领域。

如果你没有分析渐变,那么你就要去使用类似的方法几乎总是更好的下山单纯只计算函数(而不是它的梯度)。 数值梯度是昂贵的

另外请注意,所有这些方法将收敛到局部极小,所以他们在你最初开始优化点相当敏感。 全局优化是一个完全不同的野兽。

作为最后一个问题,几乎所有你能找到的最小化的代码将是相当有效的。 最小化的真正成本是成本函数。 你应该花时间分析和优化您的成本函数,并选择一种算法,将最大限度地减少你需要调用它(如单纯形,共轭梯度和方法的次数BFGS上不同种类的问题都闪耀)。

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



Answer 4:

尝试CPLEX这是免费提供的学生。



文章来源: Fast gradient-descent implementation in a C++ library?