擬合目標函式後驗分佈的調參利器:貝葉斯優化

思源發表於2017-08-18

如何優化機器學習的超引數一直是一個難題,我們在模型訓練中經常需要花費大量的精力來調節超引數而獲得更好的效能。因此,貝葉斯優化利用先驗知識逼近未知目標函式的後驗分佈從而調節超引數就變得十分重要了。本文簡單介紹了貝葉斯優化的基本思想和概念,更詳細的推導可檢視文末提供的論文。

超引數

超引數是指模型在訓練過程中並不能直接從資料學到的引數。比如說隨機梯度下降演算法中的學習速率,出於計算複雜度和演算法效率等,我們並不能從資料中直接學習一個比較不錯的學習速度。但學習速率卻又是十分重要的,較大的學習速率不易令模型收斂到較合適的較小值解,而較小的學習速率卻又常常令模型的訓練速度大大降低。對於像學習速率這樣的超引數,我們通常需要在訓練模型之前設定。因此,對於超引數眾多的複雜模型,微調超引數就變得十分痛苦。

超引數的選擇同樣對深度神經網路十分重要,它能大大提高模型的效能和精度。尋找優良的超引數通常需要解決這兩個問題:

  1. 如何高效地搜尋可能的超引數空間,在實踐中至少會有一些超引數相互影響。
  2. 如何管理調參的一系列大型試驗。


簡單方法調參

在介紹如何使用貝葉斯優化進行超引數調整前,我們先要了解調參的樸素方法。

執行超引數調整的傳統方法是一種稱之為網格搜尋(Grid search)的技術。網格搜尋本質上是一種手動指定一組超引數的窮舉搜尋法。假定我們的模型有兩個超引數 learning_rate 和 num_layes,表格搜尋要求我們建立一個包含這兩個超引數的搜尋表,然後再利用表格中的每一對(learning_rate,num_layes)超引數訓練模型,並在交叉驗證集或單獨的驗證集中評估模型的效能。網格搜尋最後會將獲得最佳效能的引數組作為最優超引數。

網格搜尋窮舉地搜尋整個超引數空間,它在高維空間上並不起作用,因為它太容易遇到維度災難了。而對於隨機搜尋來說,進行稀疏的簡單隨機抽樣並不會遇到該問題,因此隨機搜尋方法廣泛地應用於實踐中。但是隨機搜尋並不能利用先驗知識來選擇下一組超引數,這一缺點在訓練成本較高的模型中尤為突出。因此,貝葉斯優化能利用先驗知識高效地調節超引數。

貝葉斯優化的思想

貝葉斯優化是一種近似逼近的方法。如果說我們不知道某個函式具體是什麼,那麼可能就會使用一些已知的先驗知識逼近或猜測該函式是什麼。這就正是後驗概率的核心思想。本文的假設有一系列觀察樣本,並且資料是一條接一條地投入模型進行訓練(線上學習)。這樣訓練後的模型將顯著地服從某個函式,而該未知函式也將完全取決於它所學到的資料。因此,我們的任務就是找到一組能最大化學習效果的超引數。

具體來說在 y=mx+c 中,m 和 c 是引數,y 和 x 分別為標註和特徵,機器學習的任務就是尋找合適的 m 和 c 構建優秀的模型。

貝葉斯優化可以幫助我們在眾多模型中選取效能最優的模型。雖然我們可以使用交叉驗證方法尋找更好的超引數,但是我們不知道需要多少樣本才能從一些列候選模型中選出效能最好的模型。這就是為什麼貝葉斯方法能通過減少計算任務而加速尋找最優引數的程式。同時貝葉斯優化還不依賴於人為猜測所需的樣本量為多少,這種最優化技術是基於隨機性和概率分佈而得出的。

簡單來說,當我們饋送第一個樣本到模型中的時候,模型會根據該樣本點構建一個直線。饋送第二個樣本後,模型將結合這兩個點並從前面的線出發繪製一條修正線。再到第三個樣本時,模型繪製的就是一條非線性曲線。當樣本資料增加時,模型所結合的曲線就變得更多。這就像統計學裡面的抽樣定理,即我們從樣本引數出發估計總體引數,且希望構建出的估計量為總體引數的相合、無偏估計。

下面我們繪製了另外一張非線性目標函式曲線圖。我們發現對於給定的目標函式,在饋送了所有的觀察樣本後,它將搜尋到最大值。即尋找令目標函式最大的引數(arg max)。

擬合目標函式後驗分佈的調參利器:貝葉斯優化

我們的目標並不是使用盡可能多的資料點完全推斷未知的目標函式,而是希望能求得最大化目標函式值的引數。所以我們需要將注意力從確定的曲線上移開。當目標函式組合能提升曲線形成分佈時,其就可以稱為採集函式(Acquisition funtion),這就是貝葉斯優化背後的思想。

因此,我們的目標首要就是確定令目標函式取最大值的引數,其次再選擇下一個可能的最大值,該最大值可能就是在函式曲線上。

擬合目標函式後驗分佈的調參利器:貝葉斯優化

上圖是許多隨機整合曲線,它們都由三個黑色的觀察樣本所繪製而出。我們可以看到有許多波動曲線,它表示給定一個取樣點,下一個取樣點可能位於函式曲線的範圍。從下方的藍色區域可以看出,分佈的方差是由函式曲線的均值得出。

因為我們疊加未知函式曲線的觀察值而進行估計,所以這是一種無噪聲的優化方法。但是當我們需要考慮噪聲優化方法時,我們未知的函式將會因為噪聲誤差值而輕微地偏離觀察樣本點。

貝葉斯優化的目標

我們一般希望能選取獲得最優效能的超引數,因此超引數選擇就可以看作為一種最優化問題,即最優化超引數值為自變數的效能函式 f(x)。我們可以形式化為以下表示式:

擬合目標函式後驗分佈的調參利器:貝葉斯優化

許多優化設定都假設目標函式 f(x) 是已知的數學形式,同時還假定它為容易評估的凸函式。但是對於調參來說,目標函式是未知的,且它為計算昂貴的非凸函式。所以常用的優化方法很難起到作用,我們需要專門的貝葉斯優化方法來解決這一類問題。

貝葉斯優化方法在目標函式未知且計算複雜度高的情況下極其強大,該演算法的基本思想是基於資料使用貝葉斯定理估計目標函式的後驗分佈,然後再根據分佈選擇下一個取樣的超引數組合。

貝葉斯優化充分利用了前一個取樣點的資訊,其優化的工作方式是通過對目標函式形狀的學習,並找到使結果向全域性最大提升的引數。貝葉斯優化根據先驗分佈,假設採集函式而學習到目標函式的形狀。在每一次使用新的取樣點來測試目標函式時,它使用該資訊來更新目標函式的先驗分佈。然後,演算法測試由後驗分佈給出的最值可能點。

高斯過程

為了使用貝葉斯優化,我們需要一種高效的方式來對目標函式的分佈建模。這比直接對真實數字建模要簡單地多,因為我們只需要用一個置信的分佈對 f(x) 建模就能求得最優解。如果 x 包含連續型超引數,那麼就會有無窮多個 x 來對 f(x) 建模,即對目標函式構建一個分佈。對於這個問題,高斯過程(Gaussian Process)實際上生成了多維高斯分佈,這種高維正態分佈足夠靈活以對任何目標函式進行建模。

擬合目標函式後驗分佈的調參利器:貝葉斯優化

逼近目標函式的高斯過程。


在上圖中,假定我們的目標函式(虛線)未知,該目標函式是模型效能和超引數之間的實際關係。但我們的目標僅僅是搜尋令效能達到最優的超引數組合。

開發和探索之間的權衡

一旦我們對目標函式建了模,那麼我們就能抽取合適的樣本嘗試計算,這就涉及到了開發(exploitation)和探索(exploration)之間的權衡,即模型到底是在當前最優解進一步開發,還是嘗試探索新的可能解。

對於貝葉斯優化,一旦它找到了區域性最優解,那麼它就會在這個區域不斷取樣,所以貝葉斯優化很容易陷入區域性最優解。為了減輕這個問題,貝葉斯優化演算法會在探測和開發 (exploration and exploitation) 中找到一個平衡點。

探測(exploration)就是在還未取樣的區域獲取取樣點。開發(exploitation)就是根據後驗分佈,在最可能出現全域性最優解的區域進行取樣。我們下一個選取點(x)應該有比較大的均值(開發)和比較高的方差(探索)。

擬合目標函式後驗分佈的調參利器:貝葉斯優化

選擇下一個可能的最大點,並在方差和均值間權衡。因為我們在高方差分佈中搜尋下一點,這意味著探測新的點 x。高均值意味著我們在較大偏移/偏差下選擇下一點(x)。

在給定前 t 個觀察樣本,我們可以利用高斯過程計算出觀察值的可能分佈,即:

擬合目標函式後驗分佈的調參利器:貝葉斯優化


μ和σ的表示式如下,其中 K 和 k 是由正定核推匯出的核矩陣和向量。具體來說,K_ij=k(x_i,x_j) 為 t 乘 t 階矩陣,k_i=k(x_i,x_t+1) 為 t 維向量。最後,y 為觀察樣本值的 t 維向量。

擬合目標函式後驗分佈的調參利器:貝葉斯優化

[Image: file:///-/blob/RYFAAA1FF4g/9ESrR8DT3ddY6ssP9w-aMQ] 上面的概率分佈表明在擬合資料後,樣本點 x 的預測值 y 成高斯分佈。並且該高斯分佈有樣本均值和樣本方差這兩個統計量。現在為了權衡開發和探索,我們需要選擇下一點到底是均值較高(開發)還是方差較大(探索)。

採集函式

為了編碼開發探索之間的權衡,我們需要定義一個採集函式(Acquisition function)而度量給定下一個取樣點,到底它的效果是怎樣的。因此我們就可以反覆計算採集函式的極大值而尋找下一個取樣點。

擬合目標函式後驗分佈的調參利器:貝葉斯優化

隨著樣本增加,不同的採集函式和曲線擬合的對比。

上置信邊界

也許最簡單的採集函式就是採取有較高期望的樣本點。給定引數 beta,它假設該樣本點的值為均值加上 beta 倍標準差,即:

擬合目標函式後驗分佈的調參利器:貝葉斯優化


通過不同的 beta 值,我們可以令演算法傾向於開發還是探索。

提升的概率

提升採集函式概率背後的思想,即我們在最大化提升概率(MPI)的基礎上選擇下一個取樣點。

擬合目標函式後驗分佈的調參利器:貝葉斯優化

高斯過程的提升概率

在上圖中,最大觀察值是在 x*上的 y*,綠色區域給出了在 x_3 點的提升概率,而 x_1 和 x_2 點的提升概率非常小。因此,在 x_3 點抽樣可能會在 y*的基礎上得到提升。

擬合目標函式後驗分佈的調參利器:貝葉斯優化


其中Φ(x) 為標準正態分佈函式。

貝葉斯優化過程

擬合目標函式後驗分佈的調參利器:貝葉斯優化

上圖可以直觀地解釋貝葉斯優化。其中紅色的曲線為實際的目標函式,並且我們並不知道該函式確切的表示式。所以我們希望使用高斯過程逼近該目標函式。通過取樣點(上圖有 4 個抽樣點),我們能夠得出直觀或置信曲線以擬合觀察到的樣本點。所以上圖綠色的區域為置信域,即目標曲線最有可能處於的區域。從上面的先驗知識中,我們確定了第二個點(f+)為最大的樣本觀察值,所以下一個最大點應該要比它大或至少與之相等。因此,我們繪製出一條藍線,並且下一個最大點應該位於這一條藍線之上。因此,下一個取樣在交叉點 f+和置信域之間,我們能假定在 f+點以下的樣本是可以丟棄的,因為我們只需要搜尋令目標函式取極大值的引數。所以現在我們就縮小了觀察區域,我們會迭代這一過程,直到搜尋到最優解。下圖是貝葉斯優化演算法的虛擬碼:

擬合目標函式後驗分佈的調參利器:貝葉斯優化

論文:Taking the Human Out of the Loop: A Review of Bayesian Optimization

擬合目標函式後驗分佈的調參利器:貝葉斯優化

地址:http://ieeexplore.ieee.org/document/7352306/

摘要:大資料應用通常和複雜系統聯絡到一起,這些系統擁有巨量使用者、大量複雜性軟體系統和大規模異構計算與儲存架構。構建這樣的系統通常也面臨著分散式的設計選擇,因此最終產品(如推薦系統、藥物分析工具、實時遊戲引擎和語音識別等)涉及到許多可調整的配置引數。這些引數通常很難由各種開發者或團隊具體地編入軟體中。如果我們能聯合優化這些超引數,那麼系統的效能將得到極大的提升。貝葉斯優化是一種聯合優化超引數的強力工具,並且最近也變得越來越流行。它能自動調節超引數以提升產品質量和人類生產力。該綜述論文介紹了貝葉斯優化,並重點關注該演算法的方法論和列舉一些廣泛應用的案例。

原文地址:

相關文章