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

2021-01-08 機器之心Pro

本文由機器之心編輯,「機器之心」專注生產人工智慧專業性內容,適合開發者和從業者閱讀參考。點擊右上角即刻關注。

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

超參數

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

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

如何高效地搜索可能的超參數空間,在實踐中至少會有一些超參數相互影響。

如何管理調參的一系列大型試驗。

簡單的調參法

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

執行超參數調整的傳統方法是一種稱之為網格搜索(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 維向量。

上面的概率分布表明在擬合數據後,樣本點 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/

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

原文地址:

https://cloud.google.com/blog/big-data/2017/08/hyperparameter-tuning-in-cloud-machine-learning-engine-using-bayesian-optimization

https://medium.com/towards-data-science/shallow-understanding-on-bayesian-optimization-324b6c1f7083

相關焦點

  • 數學之美:貝葉斯優化
    它不對函數做任何假設(除了它首先是可優化的),不需要導數的信息,並且能夠通過巧妙地使用不斷更新的逼近函數來進行常識性的推理。我們原來的目標函數的昂貴評估根本不是問題。這是一種基於代用的優化方法。那麼,到底是什麼讓它成為貝葉斯的呢?貝葉斯統計和建模的本質是根據新的信息更新前(前)信念,以產生一個更新的後('後')信念。
  • 具有貝葉斯優化的XGBoost和隨機森林
    優點由於通過優化目標函數導出了增強樹,基本上XGB可以用來解決幾乎所有可以寫出漸變的目標函數。這包括排名和泊松回歸等內容,RF難以實現。缺點如果數據有噪聲,XGB模型對過度擬合更敏感。由於樹木是按順序建造的,因此培訓通常需要更長時間。
  • 貝葉斯優化之美:精妙算法背後的直覺
    它不做任何關於函數的假設(除了首先假設它本身是可優化的),不需要關於導數的信息,並且能夠巧妙地使用一個不斷更新的近似函數來使用常識推理,對原始目標函數的高成本評估根本不是問題。這是一種基於替代的優化方法。所以,貝葉斯理論到底是什麼呢?貝葉斯統計和建模的本質是根據新信息更新之前的函數(先驗函數),產生一個更新後的函數(後驗函數)。
  • 巧妙算法背後的直覺:淺談貝葉斯優化之美
    在行話術語裡,這一函數也叫作 "目標函數",一般來說C(x)的表達式會隱藏在優化器之中。而貝葉斯優化是通過尋找「替代函數」完成任務,替代函數替代一詞指的是目標函數的近似。利用採樣點形成的替代函數,如上圖所示:有了替代函數,我們就可以確定哪些點是最有希望的全局最小值,然後「希望的區域」裡抽取更多的樣本,並相應的更新替代函數。
  • 基於貝葉斯推斷的回歸模型(理論篇)| 機器學習你會遇到的「坑」
    樸素貝葉斯:基於貝葉斯定理的分類器,需要估計類先驗概率P(l)和屬性的類條件概率,為計算聯合概率,引入了屬性獨立性假設。 共軛先驗:如果先驗分布與後驗分布屬於同一類型的分布,那麼我們將先驗分布稱為似然函數的共軛先驗。
  • 純貝葉斯神經網絡沒有意義?OpenAI科學家何出此言?
    截至此時,貝葉斯方法看起來很有吸引力。貝葉斯神經網絡的潛在問題貝葉斯的以上所有屬性均依賴於合理的後驗分布,即向更有可能正確的函數分配更大的概率值。我們來仔細探查其中究竟。下式表示後驗,不過由於分母 Pr(D) 只是標準化常量,對所有函數都是一樣的,因此下式隱去了分母:
  • 清華大學計算機科學與技術系朱軍教授:機器學習裡的貝葉斯基本理論...
    ;p(D|θ)是似然函數,給定一個模型θ的情況下描述這個數據的似然;我們的目標是想獲得這個後驗分布,是看到數據之後我們再重新看模型本身的分布情況。首先,我們可以通過優化的方式重新審視貝葉斯推理。對任意一個分布我可以來做這件事情,這個是我們的目標P,我們可以找一個Q分布,它是一個well defined的分布,我可以通過最小化它們之間的KL,取最小值的時候兩個是相等的,這是非常簡單的道理。我們可以把這個基本過程用到貝葉斯定理裡。貝葉斯推理的目標是找到這個後驗分布,將它代入這個目標函數裡,現在Q是我假設的分布。
  • 貝葉斯線性回歸在期貨交易中的應用
    貝葉斯方法簡介  貝葉斯方法提供了一種通過計算假設概率來預測未來概率的方法,這種方法是基於假設的先驗概率、給定假設下觀察到不同數據的概率以及觀察到的數據本身而得出的。 其方法為,將關於未知參數的先驗信息與樣本信息綜合,再根據貝葉斯公式,得出後驗信息,然後根據後驗信息去推斷未知參數的方法,再由此推斷出未來待預測變量的概率分布。
  • DeepMind貝葉斯優化調參AlphaGo,自弈勝率大漲16.5%
    新智元報導 來源:arxiv編譯:大明【新智元導讀】AlphaGo的開發和運行涉及海量數據的多次調參,由於數據規模和複雜度的要求,採用手動調參估計需要8.3天。研究人員使用貝葉斯優化作為自動調參解決方案,效果明顯,自對弈測試中的勝率從50%提高至66.5%,這下人類更沒法下了。
  • 科普| 貝葉斯概率模型一覽
    概率模型(生成模型)通過函數 F 來描述 X 和 Y 的聯合概率或者條件概率分布,如 P(X|Y);非概率模型(判別模型)通過函數 F 來直接描述 X 到 Y 的映射,如 Y=f(X)。判別模型的優化目標五花八門,但都符合人類認知;而在概率模型中,所有模型的優化目標是統一的,即最大化觀測數據在概率模型中出現的概率。這兩者在部分模型表現形式上又可以互相解釋,如神經網絡等。
  • 清華大學朱軍:貝葉斯學習回顧與最新進展| YEF 2020
    核心是用概率的方法,也叫貝葉斯方法。原理很簡單,如上圖所示,中間的那個公式就是貝葉斯公式。此公式包含先驗、似然函數以及後驗分布。沒看到數據之前,模型有先驗(π(θ)),有了數據之後,建模得到的是似然模型(P(D|θ)),有了這兩個因素可以根據貝葉斯定律計算後驗概率(P(θ|D))。  如果追溯歷史,最早在1763年就有文章討論貝葉斯理論,正式發表則是在貝葉斯去世之後。
  • 清華大學朱軍:貝葉斯學習回顧與最新進展|YEF 2020
    2貝葉斯理論那麼面對這一類的不確定性應該如何建模?核心是用概率的方法,也叫貝葉斯方法。原理很簡單,如上圖所示,中間的那個公式就是貝葉斯公式。此公式包含先驗、似然函數以及後驗分布。沒看到數據之前,模型有先驗(π(θ)),有了數據之後,建模得到的是似然模型(P(D|θ)),有了這兩個因素可以根據貝葉斯定律計算後驗概率(P(θ|D))。
  • 貝葉斯及概率統計角度
    在使用貝葉斯定理時,我們通過將先驗概率與似然函數相乘,隨後標準化,來得到後驗概率分布,也就是給出某數據,該不確定量的條件分布。先驗概率通常是主觀的猜測,為了使計算後驗概率方便,有時候會選擇共軛先驗。如果後驗概率和先驗概率是同一族的,則認為它們是共軛分布,這個先驗概率就是對應於似然函數的共軛先驗。
  • 從數學到實現,全面回顧高斯過程中的函數最優化
    現在,如果我們把式 (2) 和式 (3) 代入式 (1),將得到後驗概率 p(f1|{y}) 的表達式。這是一個指數函數,它的獨立變量是 f_i 函數中的二次項。也可以說,與前驗概率一樣,後驗概率服從多變量正態分布。
  • [257]先驗概率、似然函數與後驗概率(1)
    ]為什麼需要機器學習:機器學習筆記(3)[254]有監督學習和無監督學習:機器學習筆記(4)公式採用Latex編輯,可以在原文連結裡看到轉化後的版本。這是對不確定性(而不是隨機性)賦予一個量化的數值的表徵,這個量化數值可以是一個參數,或者是一個潛在的變量。
  • 一文讀懂貝葉斯推理問題:MCMC方法和變分推斷
    在上述案例中,對後驗分布進行精確計算是不可行的,必須使用一些近似技術(例如平均計算)來獲得後驗分布。貝葉斯推理問題還可能會產生一些其他的計算困難。例如,當某些變量是離散的時候會產生組合學問題。總結本小節,即上述的採樣過程並不局限於後驗分布的貝葉斯推理,它還可以普遍用於所有由歸一化因子定義的概率分布。
  • 貝葉斯系統學習之一:我是如何理解先驗概率和後驗概率的
    ,尤其是貝葉斯的應用,在終極算法一書中,提到了一個不可思議的觀點,貝葉斯有可能發展成終極算法,厲害吧。所以關於概率與統計的學習我是覺得越來越重要了,所以我之前在公眾號裡轉發了很多關於這方面的知識,最近也想系統的學習整理一下,在正式介紹貝葉斯相關應用的之前,先從最基本的概念開始吧,本文先介紹兩個你既熟悉,但又不能完全理解明白的概念,先驗概率和後驗概率。
  • 入門| 貝葉斯線性回歸方法的解釋和優點
    不僅響應變量是從概率分布中生成的,而且假設模型參數也來自於概率分布。模型參數的後驗分布是以訓練的輸入和輸出作為條件的。其中,P(β|y, X) 是給定輸入和輸出時的模型參數的後驗概率分布。它等於輸出的似然 P(y|β, X) 乘以給定輸入的參數 β 的先驗概率 P(β|X) 並且除以歸一化常數。這是貝葉斯定理的一個簡單表達形式,是支撐貝葉斯推斷的基礎。
  • 透徹理解貝葉斯推理
    得到的後驗分布在下圖中以粉紅色顯示。通過乘以藍色和金色分布產生的粉紅色後驗分布現在我們得到氫鍵長度的後驗分布,我們可以從中得出統計數據。例如,我們可以使用分布的來估計距離。或者我們可以計算方差來量化我們對結論的不確定性。從後驗分布計算的最常見的統計數據之一是模式。這通常用作感興趣參數的真實值的估計,並且被稱為最大後驗概率估計或簡稱為MAP估計。
  • 貝葉斯和貝葉斯公式
    貝葉斯決策就是在不完全情報下,對部分未知的狀態用主觀概率估計,然後用貝葉斯公式對發生概率進行修正,最後再利用期望值和修正概率做出最優決策。貝葉斯決策理論方法是統計模型決策中的一個基本方法,其基本思想是:1、已知類條件概率密度參數表達式和先驗概率。2、利用貝葉斯公式轉換成後驗概率。3、根據後驗概率大小進行決策分類。