貝葉斯優化(Bayesian Optimization)深入理解
目前在研究Automated Machine Learning,其中有一個子領域是實現網路超引數自動化搜尋,而常見的搜尋方法有Grid Search、Random Search以及貝葉斯優化搜尋。前兩者很好理解,這裡不會詳細介紹。本文將主要解釋什麼是體統(沉迷延禧攻略2333),不對應該解釋到底什麼是貝葉斯優化。
I Grid Search & Random Search
我們都知道神經網路訓練是由許多超引數決定的,例如網路深度,學習率,卷積核大小等等。所以為了找到一個最好的超引數組合,最直觀的的想法就是Grid Search,其實也就是窮舉搜尋,示意圖如下。

但是我們都知道機器學習訓練模型是一個非常耗時的過程,而且現如今隨著網路越來越複雜,超引數也越來越多,以如今計算力而言要想將每種可能的超引數組合都實驗一遍(即Grid Search)明顯不現實,所以一般就是事先限定若干種可能,但是這樣搜尋仍然不高效。
所以為了提高搜尋效率,人們提出隨機搜尋,示意圖如下。雖然隨機搜尋得到的結果互相之間差異較大,但是實驗證明隨機搜尋的確比網格搜尋效果要好。

II Bayesian Optimization
假設一組超引數組合是 \(X={x_1,x_2,...,x_n}\) ( \(x_n\) 表示某一個超引數的值),而這組超引數與最後我們需要優化的損失函式存在一個函式關係,我們假設是 \(f(X)\) 。
而目前機器學習其實是一個黑盒子(black box),即我們只知道input和output,所以上面的函式 \(f\) 很難確定。所以我們需要將注意力轉移到一個我們可以解決的函式上去,下面開始正式介紹貝葉斯優化。
假設我們有一個函式 \(f:\cal{X}→\Bbb{R}\) ,我們需要在 \(X\subseteq\cal{X}\) 內找到
\(x^*=\underset{x\in X}{\operatorname{argmax}}f(x) \tag{1}\)
當 \(f\) 是凸函式且定義域 \(X\) 也是凸的時候,我們可以通過已被廣泛研究的凸優化來處理,但是 \(f\) 並不一定是凸的,而且在機器學習中 \(f\) 通常是 expensive black-box function ,即計算一次需要花費大量資源。那麼貝葉斯優化是如何處理這一問題的呢?
1. 詳細演算法
Sequential model-based optimization (SMBO)是貝葉斯優化的最簡形式,其演算法思路如下:

下面詳細介紹一下上圖中的演算法:
1. Input:
- \(f\) : 就是那個所謂的黑盒子
- \(\cal{X}\) :是輸入資料,例如影象、語音等。
- \(S\) :是 Acquisition Function(採集函式) ,這個函式的作用是用來選擇公式(1)中的 \(x\) ,後面會詳細介紹這個函式。
- \(\cal{M}\) :是 基於輸入資料假設的模型,即已知的輸入資料 \(x\) 都是在這個模型上的 ,可以用來假設的模型有很多種,例如隨機森林,Tree Parzen Estimators(想要了解這兩種的可以閱讀參考文獻[1])等,但是本文主要介紹 高斯模型 。
2. InitSamples(f,x)→D
這一步驟就是初始化獲取資料集 \(\cal{D}={(X_1,Y_1),...,(X_n,Y_n)}\) ,其中 \(Y_i=f(X_i)\) ,這些都是已知的。
3. 迴圈選引數 \(T\) 次
因為每次選出引數 \(x\) 後都需要計算 \(f(x)\) ,而正如前面介紹的沒計算一次函式 \(f\) ,都會消耗大量資源,所以一般 需要固定選參次數(或者是函式評估次數) 。
- \(p(y|x,D)←FITMODEL(M,D)\)
首先我們預先假設了模型 \(\cal{M}\) 服從高斯分佈,且已知了資料集 \(\cal{D}\) ,所以可以通過計算得出具體的模型具體函式表示。假設下圖中的綠色實現就是基於資料集 \(\cal{D}\) 經過計算後的服從高斯分佈模型。可以看到 Each additional band of green is another half standard deviation on the output distribution.

那麼高斯分佈是如何計算的呢?
因為我們已經假設 \(f~GP(μ,K)\) 。 ( GP :高斯過程, μ :均值 K :協方差kernel,)。所以預測也是服從正態分佈的,即有 \(p(y|x,D)=\cal{N}(y|\hat{μ},\hat{σ}^2)\)

- \(x_i←\underset{x\in X}{\operatorname{argmax}}S(X,p(y|X,D))\)
現在已經將假設的模型計算出來了,那麼下一步我們需要基於假設模型的基礎上選擇滿足公式(1)的引數了,也就是選擇 \(X\) ,那麼如何選擇呢?這就涉及到了 Acquisition Function ,為了讓文章篇幅更易閱讀,想了解 Acquisition Function 移步到文末。
- \(y_i←f(x_i)\)
既然引數選出來了,那麼當然就是要計算咯。例如我們通過上述步驟已經選出了一組超引數 \(x_i\) ,那麼我們下一步就是將超引數帶入網路中去進行訓練,最後得到輸出 \(y_i\) 。這一步驟雖然expensive,但是沒辦法還是得走啊。
- \(D←D \bigcup{(x_i,y_i)}\)
更新資料集。
2. Acquisition Function
Acquisition Function的選擇可以有很多種,下面將分別介紹不同的AC function。
1) Probability of improvement
假設 \(f'=min \, f\) ,這個 \(f'\) 表示目前已知的 \(f\) 的最小值。
然後定義utility function如下:
\[ u(x) = \begin{cases} o, & \text{if $f(x)>f'$} \\ 1, & \text{if $f(x)≤f'$ } \end{cases} \]
其實也可以把上面的 \(u(x)\) 理解成一個reward函式,如果f(x)不大於f'就有獎勵,反之沒有。
probability of improvement acquisition function定義為the expected utility as a function of x:
\[ \begin{align} a_{PI}(x)=E[u(x)|x,D] & = \int_{-∞}^{f'}\cal{N}(f;μ(x),K(x,x))df \notag{} \\ & = \cal{\Phi}(f';μ(x),K(x,x)) \notag{} \end{align} \]
之後只需要求出 \(a(x)\) 的最大值即可求出基於高斯分佈的滿足要求的 \(x\) 。
2) Excepted improvement
上面的AC function有個缺點就是找到的 \(x\) 可能是區域性最優點,所以有了Excepted improvement。 \(f'\) 的定義和上面一樣,即 \(f'=min \, f\) 。utility function定義如下:
\[u(x)=max(0,f'-f(x))\]
因為我們最初的目的是找到使得f(x)最小的x,所以這個utility function的含義很好理解,即接下來找到的 \(f(x)\) 比已知最小的 \(f'\) 越小越好,然後選出小的程度最大的那個 \(f(x)\) 和 \(f'\) 之間的差距的絕對值作為獎勵,如果沒有更小的那麼獎勵則為0.
AC function定義如下:
\[ \begin{align} a_{EI}(x)=E[u(x)|x,D] & = \int_{-∞}^{f'}(f'-f)\cal{N}(f;μ(x),K(x,x))df \notag{} \\ & = (f'-μ(x))\cal{\Phi}(f';μ(x),K(x,x)) \, + \, K(x,x)\cal{N}(f';μ(x),K(x,x)) \notag{} \end{align} \]
通過計算使得 \(a_{EI}\) 值最大的點即為最優點。
上式中有兩個組成部分。要使得上式值最大則需要同時優化左右兩個部分:
- 左邊需要儘可能的減少 \(μ(x)\)
- 右邊需要儘可能的增大方差(或協方差) \(K(x,x)\)
但是二者並不同能是滿足,所以這是一個exploitation-exploration tradeoff。
3) Entropy search

4) Upper confidence bound

Reference
- [1] Sigopt.com. Bayesian Optimization Primer (2018). [online] Available at: ofollow,noindex" target="_blank">https://sigopt.com/static/pdf/SigOpt_Bayesian_Optimization_Primer.pdf [Accessed 26 Oct. 2018].
- [2] Cse.wustl.edu. Bayesian Optimization (2018). [online] Available at: https://www.cse.wustl.edu/~garnett/cse515t/spring_2015/files/lecture_notes/12.pdf [Accessed 26 Oct. 2018].
- [3] Anon,How does Bayesian optimization work? (2018). [online] Available at: https://www.quora.com/How-does-Bayesian-optimization-work [Accessed 26 Oct. 2018].