优化只能评估的未知函数?


11

给定一个未知函数,我们可以在它的域中的任意点求值,但是没有表达式。换句话说,f对我们来说就像一个黑匣子。f:RdRf

找到的最小化器的问题的名字是什么?有哪些方法?f

寻找方程的解的问题的名字是什么?有哪些方法?f(x)=0

另外,在上述两个问题,它是一个好主意,内插或配合到f的一些评价:使用函数θ与已知形式和参数θ要确定,然后最小化θ或发现其根源?(xi,f(xi)),i=1,,ngθθgθ

感谢致敬!


1
您可以在给定点评估其梯度吗?
chaohuang

@chaohuang:有两种情况:您可能会或可能不会评估其梯度,具体取决于假设。
Tim

如果可以使用渐变,则您要执行的任务可以通过基于渐变的算法来完成。例如,最小值,或者至少是局部最小值,可以通过最速下降法来计算,并且根可以通过牛顿法来求出。
chaohuang

如果梯度未知,则存在元启发式方法,也称为无导数方法或黑盒方法,通常以随机优化的形式出现。
chaohuang

2
您是否知道函数是否平滑(即使您无法评估渐变)?你知道函数是否是凸的吗?如果不是凸的,您知道它是否至少是Lipschitz连续的?如果功能是完全通用的,那么这是一个绝望的问题。
Brian Borchers

Answers:


13

您要查找的方法(即仅使用函数求值而不使用导数的方法)称为无导数优化方法。关于它们的文献很多,您可以在大多数有关优化的书籍中找到有关此类方法的章节。典型的方法包括

  • 如果可以合理地预期函数是平滑的并且可能是凸的,则可以通过有限差分来近似梯度。
  • 蒙特卡洛方法,例如模拟退火;
  • 遗传算法。

1
我可以只在该列表中添加“代理建模”吗?它们非常适用于黑盒优化,特别是如果函数的评估成本很高时。
OscarB

是的,您可以:-)当然可以。
Wolfgang Bangerth

如果已知最优估计,也可以使用Nelder-Mead方法。
JM

是的,您可以使用Nelder-Mead,但是与其他大多数算法相比,这是一个糟糕的算法。
Wolfgang Bangerth,

1
@WolfgangBangerth:您对Nelder-Mead的评论仅在维度d> 2上有效。在二维情况下,它是很多问题的出色和非常难打的方法。
阿诺德·诺伊迈耶

2

我认为您应该从以下内容开始:GECCO实参黑盒子优化基准测试研讨会(BBOB 2016) http://numbbo.github.io/workshops/index.html

您会发现在以前的比赛中使用过许多不同的算法,并且已经对它们进行了比较。如果您从其他地方开始,您很快就会淹没在成百上千篇论文中,这些论文声称它们的方法和算法比其他方法有更好的表现,而这些证据和实践却很少。

坦率地说,直到最近,INRIA,GECCO和许多其他机构才为建立合理的比较框架而付出了巨大的努力,这是一种令人毛骨悚然的事态。


-1

我要补充一点,这里的关键之一是能够在多核CPU上扩展优化方法。如果您可以同时执行多个功能评估,则可以使加速速度等于所涉及的多个内核。将此与仅使用稍微更准确的响应模型进行比较,可使您的效率提高10%左右。

我建议看一下这段代码,它对可以访问许多内核的人很有用。本文描述了它背后的数学。


1
该答案太短而无用(并保持有用,因为链接可能随时消失)。另外,请提及您是该软件的作者
克里斯蒂安·克拉森
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.