基于高斯过程的贝叶斯优化(一)引言
阅读本文默认具有一定的概率数理统计与随机过程基础。
假设我们有一个机器学习模型M(如XGBoost,SVM,神经网络等),其超参数为记为$x_i$,则每对M进行评估的结果可记为$y_i=f(x_i)$,在这里$y_i$可以是LOSS等评价指标。问题在于如何选择超参数找到我们的最优超参数$x^*$,使得:
\[x^* = \arg \max _ { \mathbf { x } \in \mathcal { X } } f(x)\]
常用的超参数搜索方法有网格搜索、随机搜索等,但是由于设置超参数后每次都需要对模型重新评价,这样的开销很大,因此可以考虑贝叶斯优化方法,贝叶斯优化方法可以充分利用之前的评价信息,从而减少对于超参数的尝试次数。
贝叶斯优化方法是建立在高斯过程之上的。
首先给出高斯过程定义:
一个连续时间的随机过程$\{X_t;t\in T\}$被称为高斯分布,当且仅当对每一个有限指标集合T,对任意$t_1 \cdots t_k$属于T满足$X_{t_1\cdots t_k} = (X_{t_1},\cdots,X_{t_k})$是一个多元正态随机变量,这等价于$X_{t_1}$到$X_{t_k}$中的任意线性组合符合正态分布。高斯分布具有严平稳性质。
记GP为一个高斯分布,其均值函数为m,协方差函数为k,高斯分布可表示成如下形式:
\[f ( x ) \sim G P \left( m ( x ) , k \left( x , x ^ { \prime } \right) \right)\]
常见的协方差函数有平方指数函数等,平方指数函数具体公式如下:
\[k \left( \mathbf { x } _ { i } , \mathbf { x } _ { j } \right) = \exp \left( - \frac { 1 } { 2 } \left\| \mathbf { x } _ { i } - \mathbf { x } _ { j } \right\| ^ { 2 } \right)\]
贝叶斯方法是如何与高斯过程相结合的呢?它假设f(x)得到的结果具有随机性,服从一个高斯过程,也就是说,如果我们选取$x_1,x_2\cdots x_k$,那么$(x_1,x_2\cdots x_k)$服从一个多元正态分布。那么,假设我们已经从模型中获取了信息$\mathcal { D } _ { 1 : t } = \left\{ \mathbf { x } _ { 1 : t } , y _ { 1 : t } \right\}$(这里下标“:”表示一个序列,如$y _ { 1 : t } = \left\{ y _ { 1 } , \cdots , y _ { t } \right\}$),那么,贝叶斯优化的目标就是利用现有信息寻找出$x_{t+1}$,它具有最大的可能性改善当前获得的最佳模型。
一个最通用的贝叶斯算法框架如下所示:
其中acquisition function(又被称之为AC函数)用于通过以前的信息寻找新的$x_{t+1}$,在寻找到新的$x_{t+1}$后,重新训练模型,并将训练的结果$(x_t,y_t)$作为经验记录下来。