閱讀本文默認具有一定的概率數理統計與隨機過程基礎。
假設我們有一個機器學習模型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)$作為經驗記錄下來。