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


9

我正在努力改善某些人口统计建模软件的优化过程,以便它可以更好地使人口统计模型适合数据。我们想减少优化时间。

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

谢谢!

更新:

按照保罗的要求,以下是此特定目标函数的一些显着特征:

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

2
凯特,您好,欢迎来到Scicomp!您能否分享目标函数的某些特征?这可能有助于为您的案例找到具体的方法。
保罗

我从未听说过有任何算法在选择要评估的点时明确考虑评估目标函数(或任何约束)的成本。但是,存在一些无导数的优化算法,这些算法试图巧妙地选择要由优化器评估的下一个点。前提是,如果功能评估很昂贵,则应将功能评估的数量减到最少。但是,我不确定使用无导数算法对您的用例是否有所帮助。
Geoff Oxberry

嗨@Paul,谢谢您的光临!我很高兴能找到这个社区。我添加了特征。让我知道是否还有其他更重要的功能。
nova

我是否可以从您的#2推断出您对全局最小化器感兴趣?还是您对“足够”的减少感到满意?全局优化是其自身的领域,而获得全局解决方案(如果存在)的问题可能与避免昂贵的试验点完全分开。
Dominique

多米尼克(Dominique),我们曾假设全局优化器对我们的问题来说太慢了,所以我们对本地优化器感到满意。全局优化器是我们计划将来研究的内容。
nova

Answers:


4

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

关于目标函数的平滑度或凸度,您什么也没说。如果函数不光滑或不凸,那么这显然会变得困难得多。

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


1

我不知道专门权衡在不同试验点评估目标的相对成本的方法,但是如果您能够相对可靠地预测候选人的评估成本是否昂贵,那么我建议您尝试一下直接法。直接方法适用于无导数方法系列。即使您怀疑问题很顺利,使用它们也不是一件坏事,因为它们可以提供某种程度的灵活性,而平滑优化方法无法做到。

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

在您的情况下,最好根据您对评估目标的成本的估计来对邻居进行排序。按此顺序评估他们,并选择下一个成功的人。凭直觉,您赞成便宜的候选人。在直接方法中,此类排序适合替代模型的类别,该概念概括了Brian提到的响应面模型的概念。

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

如果这似乎能带来希望的结果,请随时与我联系,我可能会提出其他改进建议。

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

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.