本文涉及“黑盒优化”和“零阶优化”的区别和联系,以及它们的定义
关于“零阶优化”,可以看文章“Optimizing molecules using efficient queries from property evaluations
一、“黑盒优化”是什么?
“黑盒优化”是一种优化技术,用于处理那些我们无法直接访问或理解其内部工作原理的系统或函数。在这种情况下,我们将该系统或函数视为一个“黑盒”,因为我们只能观察到输入和输出,但不能观察到其内部的具体运行机制。【不利用导数信息】
以下是“黑盒优化”的几个关键特点:
-
不需要导数信息:与传统的基于导数的优化方法(例如梯度下降)不同,黑盒优化不需要函数的导数信息。
-
适用于复杂系统:对于那些复杂的、不透明的、或者是不易于分析的系统,黑盒优化特别有用。
-
只需要输入和输出:用户只需提供一个函数或评估标准,优化算法会尝试找到最佳的输入,以最大化或最小化输出。
-
使用启发式方法:由于缺乏内部信息,黑盒优化通常依赖于启发式搜索方法,如遗传算法、蒙特卡洛树搜索、贝叶斯优化等。
总的来说,黑盒优化是针对那些我们不能直接探索或理解其内部工作机制的系统或函数的优化策略。我们只是尝试不同的输入,观察输出,然后根据这些信息来决定下一步的最佳操作。
二、“黑盒优化”常用的方法
一般来说,黑盒优化都是从一个初始解出发,通过不停迭代来改进当前解,直到无法再改进为止。
这个黑盒优化的迭代过程可以用各种方案去刻划:比如说从一个还不错的起始点开始的局部搜索,一个从粗到细的逐步精化,或者说局部渐进和长程跳跃的组合(例如进化算法的演化和突变),等等,每种方案都对应不同的行动空间。但从本质上来说,优化和“下棋打游戏”等问题很大的不同点在于,优化本身没有”行动空间“的概念,对它而言,行动空间如何定义都无所谓,只要最终解质量好就行。
三、性能指标
其主要性能指标是:达到同样的函数值,需要多少次黑盒函数的调用,越少越好。因为在实际问题中,需要用黑盒优化的场景,往往是函数调用开销非常大且没有导数信息的场景,比如说函数值是一个复杂系统运转一天后的平均效率,或者是耗费巨资才可获得的一个实验结果,等等。
“黑盒优化”和“零阶优化”的区别和联系
定义:
-
黑盒优化:这是一个通用的术语,描述的是当你试图优化一个函数时,但对其内部结构几乎一无所知,只知道输入和输出关系的情境。也就是说,你不能利用函数的内部信息(如导数或结构)来帮助优化。
-
零阶优化:这是一个更为技术性的术语,描述的是当你优化一个函数时,你没有关于函数的导数或梯度的信息。零阶优化算法只使用函数的值,不使用任何导数信息。
区别:
-
范围:黑盒优化是一个更为广泛的概念,涵盖了任何我们不能直接访问函数内部信息的情境,而零阶优化特指没有导数信息的优化情境。
-
方法:由于黑盒优化是一个广泛的概念,因此可以使用各种方法(包括零阶优化方法)来进行。而零阶优化有一些特定的技术,如随机搜索、有限差分方法等。
联系:
-
零阶优化是黑盒优化的一个子集:当你面临一个黑盒问题且没有关于函数的导数信息时,你可以使用零阶优化方法。
-
目标相似:无论是黑盒优化还是零阶优化,目标都是在缺乏关于函数完整信息的情况下找到其最优值。
-
启发式方法:由于两者都缺乏函数的某些关键信息,因此它们都可能依赖启发式搜索方法来进行优化。
介绍两篇NeurIPS的文章(二) - 知乎