贝叶斯优化方法是当前超参数优化领域的SOTA手段,可以被认为是当前最为先进的优化框架,它可以被应用于AutoML的各大领域,不止限于超参数搜索HPO的领域,更是可以被用于神经网络架构搜索NAS以及元学习等先进的领域。现代几乎所有在效率和效果上取得优异成果的超参数优化方法都是基于贝叶斯优化的基本理念而形成的,因此贝叶斯优化是整个AutoML中学习的重点。
然而,虽然贝叶斯优化非常强大,但整体的学习难度却非常高。在学习贝叶斯优化之前,学习者不仅需要充分理解机器学习的主要概念和算法、熟悉典型的超参数优化流程,还需要对部分超出微积分、概率论和线性代数的数学知识有所掌握。特别的是,贝叶斯优化算法本身,与贝叶斯优化用于HPO的过程还有区别。在我们课程有限的时间内,我将重点带大家来看贝叶斯优化用于HPO的核心过程。
首先,我们不理会HPO的问题,先来看待下面的例子。假设现在我们知道一个函数以及其自变量的定义域,并且我们知道函数是相对均匀、平稳的函数,并不会出现突然升高或突然下降的情况。现在,我们希望求解出的取值范围上的最小值,你打算如何求解这个最小值呢?
面对这一问题,我们有一个通俗的解法,那就是将全域的带入计算出所有可能的结果,一旦整个的结果被计算出来,那的最小值也就一目了然了。
然而,现在的函数是一个异常复杂的函数,计算量非常大、需要的时间也很长,同时我们的计算资源非常紧张,最多只能在函数上尝试20次左右,所有我们不太可能将全域都带入进行计算,然后再求解最小值。于是我们选择在的定义域上随机选择了4个点,并将4个点带入进行计算,得到了如下结果:
好了,现在有了这4个观测值,你能告诉我的最小值在哪里吗?你认为最小值点可能在哪里呢?大部分人会倾向于认为,最小值点在已观测出的值中,最小的那个值的附近,但也有许多人不这么认为。当我们有了4个观测值,并且知道我们的函数时相对均匀、平稳的函数,那我们可能对函数的整体分布有如下猜测:
当我们对函数整体分布有一个猜测时,这个分布上一定会存在该函数的最小值。同时,不同的人可能对函数的整体分布有不同的猜测,不同猜测下对应的最小值也是不同的。
有非常多的方法,其中最简单的手段是使用最小值出现的频数进行判断。由于不同的人对函数的整体分布有不同的猜测,不同猜测下对应的最小值也是不同的,根据每个人猜测的函数结果,我们在轴上划将定义域区间进行均匀的划分,如果有某个猜测的最小值落在其中一个区间中,我们就对该区间进行计数。当有数万个人进行猜测之后,我们同时也绘制了基于轴上不同区间的频数图,频数越高,说明猜测最小值在该区间内的人越多,反之则说明该猜测最小值在该区间内的人越少。
在贝叶斯优化的数学过程当中,我们主要执行以下几个步骤:
-
1 定义需要估计的以及的定义域
-
2 取出有限的n个上的值,求解出这些对应的(求解观测值)
-
3 根据有限的观测值,对函数分布进行假设(该假设被称为贝叶斯优化中的先验知识),得出该假设分布上的目标值
-
4 定义某种规则,确定下一个需要计算的观测点
并持续在2-4步骤中进行循环,直到假设分布上的目标值达到我们的标准,或者所有计算资源被用完为止。以上流程又被称为序贯模型优化(SMBO),是最为经典的贝叶斯优化方法。
在实际的运算过程当中,尤其是超参数优化的过程当中,有以下具体细节需要注意: