考虑不同参数目标函数时间成本的优化方法

计算科学 优化
2021-12-23 08:23:41

我正在努力改进一些人口统计建模软件的优化过程,以便它可以更好地将人口统计模型拟合到数据中。我们想减少优化时间。

评估我们的目标函数所需的时间变化很大,具体取决于输入值。评估目标函数的时间与输入之间的关系是已知的。我想知道在选择要评估的点时是否有任何优化方法考虑目标函数的相对时间成本。

谢谢!

更新:

正如保罗所要求的,以下是这个特定目标函数的一些显着特征:

  1. 参数数量适中(~12ish)
  2. 我们的问题是非凸的,或者至少在目标函数表面存在狭窄而平坦的“脊”。现在我们正在使用来自不同点的多个优化来处理这个问题,但我们希望做得更好。
  3. 目标函数非常平滑,尽管我们只能计算导数的有限差分逼近。
  4. 评估成本也是参数值的平滑函数,并且是可以预测的。粗略地说,对于每个参数,评估的成本在范围的一端较高,而在另一端较低。因此,我们有大量评估成本高昂的参数集,但我们知道它们在哪里。
2个回答

处理代价高昂的目标函数的一种常见方法是建立(例如通过回归建模)一个近似于原始目标函数的“响应曲面模型”,然后在该响应曲面上进行优化,而不是使用原始函数。在实践中,响应面通常只是通过回归拟合的二次模型,因此找到响应面的最小值成为一个非常容易的优化问题。

您还没有谈到目标函数的平滑度或凸度。如果函数是非光滑或非凸的,那么这显然会变得非常非常困难。

您也没有说明参数空间中昂贵点的位置。如果它们在整个参数空间中随机分布,那么您可以使用实验设计技术来构建您的响应曲面模型,同时避免昂贵的点。如果参数空间中有较大区域的评估成本很高,那么您可以尝试最小化这些区域中用于构建响应曲面模型的点数。当然,如果您的最优值位于这样一个区域的中间,那么您将注定要评估昂贵区域中的功能。

我不知道具体衡量在不同试验点评估目标的相对成本的方法,但如果您能够相对可靠地预测候选人是否会昂贵评估,那么我可以建议尝试直接法直接方法属于无导数方法家族。即使您怀疑您的问题非常顺利,使用它们也不一定是坏事,因为它们可以提供平滑优化方法所不能提供的某种程度的灵活性。

这个想法是直接方法定义了一个关于当前迭代的(依赖于迭代的)网格和一个(依赖于迭代的)网格“步骤”。基于此网格步骤,该方法确定网格上与当前迭代相邻的试验点(它们位于网格上并且处于由网格步骤定义的距离处)。然后它将继续评估邻居的目标。一旦找到更好的候选者,它就会成为新的当前迭代。根据您的选择,您还可以评估所有邻居并选择最好的。

在您的情况下,根据您对在那里评估目标的成本的估计来对邻居进行排序可能是一个好主意。按此顺序评估它们,并选择第一个成功作为下一次迭代。直觉上,你偏爱便宜的候选人。在直接方法中,这种排序适合代理模型的类别,这是一个概括了Brian 提到的响应面模型的概念。

这是直接方法的出色实现(在 C++ 中):http ://www.gerad.ca/nomad/Project/Home.html

如果这似乎给出了有希望的结果,请随时回复我,我可能会提出其他改进建议。

我相信 NOMAD 还具有基于变量邻域搜索概念的全局优化功能(例如您当前正在应用的多启动)