獨家 | 一文讀懂貝葉斯優化

作者:Apoorv Agnihotri,Nipun Batra

翻譯:王雨桐

校對:張一然

本文約6200字,建議閱讀10+分鐘。

本文將貝葉斯優化拆解爲易於理解的小部分。

許多現代的機器學習算法都涉及大量的超參數。爲了高效地使用這些算法,我們需要選擇合適的超參數值。我們將在本文中討論貝葉斯優化,它是一種常用於調整超參數的技術。更通俗地說,貝葉斯優化可用於任何黑盒函數的優化。

 

挖金子!

以開採金礦爲例,我們的目標是在未知的土地上開採黃金。現在假設金子圍繞一條線分佈,由於開採的高額成本,我們希望通過儘量少的開採次數,沿着這條線找到最大金礦的位置。

 

假設金子的分佈函數f(x)如下,該雙峯曲線的最大值出現在x=5附近。讓我們暫時忽略X軸和Y軸的單位。

 

最初我們對金子的分佈一無所知,但可以通過在不同位置鑽孔來了解金子的分佈。 然而這種打鑽的成本是非常高的。因此我們希望最大程度地減少所需的鑽孔次數,同時仍能快速地找到最大的金礦位置。

 

現在我們將討論金礦開採問題的兩個共同目標。

 

  • 問題1:黃金分佈的最佳估計(主動學習)

在這個問題中,我們要準確估算新土地上的金子分佈。由於成本過高,我們無法在每個位置進行鑽探。相反我們應該在能提供更多金礦分佈信息的位置進行嘗試。這個問題類似於主動學習。

 

  • 問題2:最大金礦的位置(貝葉斯優化)

在這個問題中,我們要找到最大金礦的位置,但同樣不能在每個位置都進行鑽探,而是應該重點關注金子含量高的位置。這個問題類似於貝葉斯優化。

 

我們將很快看到這兩個問題是如何關聯的,但他們並不是同一問題。

 

主動學習

在許多機器學習問題中,我們都可以輕易獲得未標記的數據。但是標記(或查詢)通常要花費很多精力。例如對於語音轉文本的任務,註釋需要專家手動標記單詞和句子。同樣在我們的金礦開採問題中,鑽孔(類似於標記)也非常昂貴。

 

主動學習可最大程度地減少標記的成本,同時儘可能提高建模精度。儘管主動學習中有多種方法,但我們要着眼於減少不確定性。該方法建議標記模型不確定性最高的點,我們通常用方差來度量不確定性。

 

由於我們僅知道函數在幾個點上的真實值,因此我們需要一個代理模型來確定函數在其他地方的取值。該代理模型應該能足夠靈活以對真實函數進行建模。使用高斯過程(GP)是一種常見的選擇,這既因爲它具有靈活性,又可以爲我們提供不確定性估計。

 

我們的代理模型以f(x)的先驗開始——對於黃金,我們假設先驗是平穩分佈。在評估點(鑽探)時,我們會獲取更多數據供代理模型學習,並根據貝葉斯規則進行更新。

每個新數據點都會更新我們的代理模型,從而使模型更接近於真實情況。黑線和灰色陰影區域表示鑽孔前後金子分佈估算中的平均值(μ)和不確定性(μ±σ)。

 

上例中我們從均勻分佈的不確定性開始。但是在我們第一次更新之後,後驗肯定在x = 0.5附近並且不確定性降低。我們可以繼續添加更多的訓練點,並獲得更準確的f(x)的估計。

 

但我們要儘量減少評估次數。因此我們應該使用主動學習“聰明地”選擇下一個查詢點。儘管有很多方法可以選擇恰當的點,但我們將選擇最不確定的點。

 

這爲我們提供了以下主動學習程序:

 

  1. 選擇不確定性最高的點並將其添加到訓練集中(通過查詢/標記該點);

  2. 在新的訓練集上訓練模型;

  3. 跳轉回第一步,直到收斂或預算用盡。

現在讓我們可視化此過程,並查看我們的後驗在每次迭代(每次鑽孔之後)如何變化。

 

可視化結果表明,我們可以在幾次迭代中估算出真實的分佈。此外最不確定的位置通常是距離當前評估點最遠的點。 在每次迭代中,主動學習都會探索該領域,以使估算結果更好。

貝葉斯優化

在上一節中,我們選取了點以確定金礦預測的準確模型。但是如果我們的目標僅僅是找到最大金礦的位置,該怎麼辦?當然我們可以通過主動學習以準確估計真實函數,然後找到其最大值。但這聽起來就很浪費精力——如果我們僅考慮最大值時,爲什麼要用評估來對函數中金子含量較低的區域進行改進?

 

這是貝葉斯優化的核心問題:“根據目前我們所知道的,我們接下來應該評估哪一個點?”請記住評估每個點的成本都很高,因此我們要謹慎選擇!在主動學習的情況下,我們選擇了最不確定的點以探索函數。但是在貝葉斯優化中,我們需要權衡探索不確定的區域(這些區域可能意外地具有較高的金子含量),而不是集中於我們已經知道具有較高金含量的區域(一種開採)。

 

我們通過採集函數(acquisition function)來做出此決定。採集函數是一種啓發式方法,可根據我們當前的模型來評估一個點。更多有關採集函數的細節請參考該鏈接(https://botorch.org/docs/acquisition)我們將利用本節的大部分篇幅介紹採集函數的細節。

 

我們瞭解了貝葉斯優化的工作原理。在每個步驟中,我們都會通過優化採集函數來確定下一步要評估的最佳點。然後我們更新模型並重復此過程,以確定要評估的下一點。

 

如果我們只是優化這些採集函數,你可能會想貝葉斯優化的“貝葉斯”是什麼。在每個步驟中我們都維護一個模型,來描述每個點的估計值和不確定性,並在每步根據貝葉斯規則對其進行更新。我們的採集函數就是基於此模型的,沒有它們一切就不可能!

 

貝葉斯優化公式化

現在讓我們正式介紹貝葉斯優化。我們的目標是找到位置(x∈Rd)對應於函數f的全局最大值(或最小值):f:Rd↦R。 我們提出貝葉斯優化中的一般約束,並將其與我們的金礦開採實例中的約束進行對比。以下內容基於Peter Fraizer在Uber有關貝葉斯優化的PPT/演說:

通用限制

挖金礦案例中的限制

f的可行集A很簡單,例如邊界約束。

我們在金礦開採問題中的域是一維邊界約束:0≤x≤6。

f是連續的但缺乏特殊結構,例如凹面,這使其易於優化。

我們的真實函數既不是凸函數也不是凹函數,從而導致局部最優。

f無導數:評估不提供梯度信息。

我們對某個地點含金量的評估(通過鑽探)並未提供任何梯度信息。

f的評估成本很高:我們可以評估它的次數非常有限。

鑽孔成本很高。

f可能噪聲很大。如果存在噪聲,我們將假定它是獨立的且呈正態分佈,並且具有共同但未知的方差。

我們在模型中假設無噪聲測量(儘管很容易將正態分佈的噪聲納入GP迴歸)。

爲了解決這個問題,我們將遵循以下算法:

  1. 我們首先選擇一個代理模型來對真實函數f建模並定義其先驗

  2. 給定一組觀察值(函數評估),請使用貝葉斯規則獲取後驗

  3. 使用採集函數α(x),它是後驗的一個函數,來確定下一個採樣點:

  4. 將新採樣的數據添加到觀測值集中,然後執行步驟2,直到收斂或用盡預算。

採集函數

採集函數對貝葉斯優化至關重要,它有多種選擇。我們將在下文介紹許多選項,以提供想法和示例。

 

  • PROBABILITY OF IMPROVEMENT(PI)

該採集函數選擇下一個查詢點作爲最有可能提高當前最大的查詢點。 數學上我們如下選擇下一點:

其中:

  • 表示概率;

  • 是一個小的正數;

  • , 其中是第i步查找的位置。

仔細觀察,我們只能得到代理後驗的上尾概率(或累計概率分佈(CDF))。而且如果我們使用GP作爲替代,上面的表達式將轉換爲:

其中:

  • 表示CDF。

下圖顯示了(x)的計算。 橙色線代表當前的最大值(加上一個ϵ)或。 紫色區域顯示每個點的概率密度。灰色區域顯示低於當前最大值的概率密度。 紫色區域在每個點上的“面積”表示“當前最大值提升的可能性”。通過PI標準評估的下一點(藍色虛線所示)是x = 6。

 

  • PI中ϵ的

PI使用ϵ在勘探與開發之間取得平衡。ϵ的增加會導致傾向σ較大的位置,因爲它們的概率密度分佈更大。

 

現在讓我們看看實際的PI採集函數。 我們從ϵ = 0.075開始。

從上圖中,看到我們在幾次迭代中達到了全局最大值。在前幾次迭代中,我們的代理模型在x∈[2,4]中具有較大的不確定性。採集函數先探索具有高期望值的區域,這導致了區域x∈[2,4]具有高度不確定性。此觀察結果還表明,我們無需構造黑盒函數的準確估計即可找到其最大值。

 

上圖中的ϵ增加到了0.3,這使我們能夠進行更多探索。但是似乎我們正在探索的已經超出了要求的範圍。

 

如果再增加ϵ會怎樣?

如圖看到我們使情況變得更糟了!我們的模型現在使用 ϵ = 3,並且當我們接近在全局最大值附近時,我們將無法進一步探索。而且隨着探索的深入,設置變得類似於主動學習。

 

上面的快速實驗可以幫助我們得出結論:ϵ控制着PI採集函數中的探索程度。

  • EXPECTED IMPROVEMENT(EI)

Probability of improvement僅着眼於改善可能性有多大,而沒有考慮我們可以改善程度。下一個標準稱爲“預期改進(EI)”,它正是利用了這種想法!這個想法很簡單——如果某個點可以爲當前最大的帶來最大期望的提升,將該點選定爲下一個查詢點,其中,是第i步查詢的位置。

 

在採集函數中,第t+1個查詢點是基於以下公式進行選擇。

其中,f是真實的地質函數,是t+1時間點的代理的後驗均值,是訓練數據以及x*是f取最大值的實際位置。

從本質上講,我們在嘗試選擇一個點,以最大程度地減少與目標物的距離。不幸的是,我們不知道真實函數f。Mockus提出了採集函數如下來克服該問題:

其中是到目前所遇到的最大值。GP的替代方程如下所示:

 

其中表示CDF, 表示pdf。

從上式可以看出,在以下情況下,預期的改進(EI)會很高:i)的期望值很高 或者 ii)當一個點附近的不確定性很高。

像PI採集函數一樣,我們可以通過修改ϵ來緩和EI採集函數的探索量。

對於ϵ = 0.01,我們經過幾次迭代就接近了全局最大值。

 

現在,我們增加ϵ來探索更多。

正如我們預期的那樣,將值增加到ϵ = 0.3會使採集函數進行更多的探索。與早期的評估相比,我們看到了更少的開發。我們看到它只評估全局最大值附近的兩個點。

 

讓我們進一步增加。

這比以前好嗎?結果是肯定的,也是否定的。我們看到在給定ϵ = 3的情況下,我們在這裏進行了過多的探索。我們很快達到了全局最大值,但卻沒有利用此方法在全局最大值附近獲得更多收益。

 

湯普森採樣

另一個常見的採集函數是湯普森採樣。在每一步中,我們都會從代理的後驗中抽取一個函數進行採樣並對其進行優化。例如在採金的情況下,我們將根據證據對可能的金礦分佈進行採樣,並在可能性達到頂峯時進行評估(鑽探)。

 

下圖顯示了從後驗學習到的關於黃金開採問題的三個採樣函數。訓練數據由點x = 0.5和相應的函數值構成。

我們可以通過兩個觀測來理解湯普森採樣背後的概念:

 

  • 具有高不確定性(σ(x))的位置在從替代後驗採樣的函數值中有較大方差。因此在高度不確定的區域中,樣本很有可能有很高的值。優化此類樣本可以幫助探索。

例如,三個樣本(樣本#1,#2,#3)在接近x = 6附近的方差較高。優化樣本3將通過評估x = 6來幫助探索。

  • 採集的函數必須通過當前最大值,因爲在評估過的位置不確定性爲0。因此優化來自替代後驗的樣本可以確保開發行爲。

作爲此行爲的一個示例,我們看到以上所有采樣函數都通過x = 0.5處的當前最大值。如果x = 0.5接近全局最大值,那麼我們能夠利用並選擇更好的最大值。

上圖使用湯普森採樣進行優化。同樣我們可以在相對較少的迭代中達到全局最優。

 

隨機性

到目前爲止,我們一直在使用智能採集函數。我們可以通過隨機採樣x來創建隨機採集函數。

上圖顯示隨機採集函數的性能還不錯!但是如果我們的優化更爲複雜(更多維度),那麼隨機採集的效果可能會很差。

 

採集函數總結

現在讓我們總結與採集函數相關的核心思想:

  • 它們是評估點效用的啓發式方法;

  • 它們是替代後驗的函數;

  • 他們將勘探與開發結合起來;

  • 評估費用不高。

其他採集函數

到目前爲止,我們已經看到了各種採集函數。提出採集函數的一種簡單方法是進行探索/利用。

 

  • 上置信界(UCB)

替代模型的均值和不確定性的線性組合就是一種能簡單的權衡勘探/開發(exploration/exploitation)的採集函數。該模型的均值表示開發(我們模型的知識),而模型的不確定性則表示探索(由於我們的模型缺乏觀測)。

 

UCB採集函數背後的思想是權衡代理的均值與代理的不確定性之間的重要性。上面的λ是可以控制開發和探索側重的超參數。

 

我們可以通過組合現有的採集函數來進一步形成新的採集函數,儘管這種組合的現實解釋性可能比較模糊。我們要結合兩種方法的可能原因之一是要克服各個方法的侷限性。

 

  • 改善概率(PI)+ λ×預期改善(EI-PI)

也可以是PI和EI的線性組合。我們知道PI着重於改善的可能性,而EI着重於預期的改善。基於λ的值,這樣的組合可以幫助在兩者之間進行權衡。

 

  • 高斯過程上置信界(GP-UCB)

在談論GP-UCB之前,讓我們快速談談regret。想象一下,如果最大黃金爲a單位,而我們的優化取而代之的是在包含b <a單位的位置取樣,那麼我們的regret是a-b。如果我們在n次迭代中累積regret,我們將得到所謂的累積regret。

GP-UCB的公式如下:

其中t是時間步長。

 

Srinivas等制定了β的時間表,理論上證明了該時間表可最大程度地減少累積regret。

 

比較

現在我們比較不同採集函數在金礦開採問題上的表現。對於每個採集函數,我們都使用了最佳超參數。我們用不同的隨機種子運行了幾次隨機採集函數,並繪製了每次迭代時感知到的平均金含量。

最初隨機策略可與其他採集函數媲美或優於其他採集函數。但是通過隨機策略感知的最大黃金增長緩慢。相比之下,其他採集函數可以在少量迭代中找到一個好的解決方案。實際上大多數採集函數僅需3次迭代就可以非常接近全局最大值。

 

超參數調整

在討論貝葉斯優化超參數優化之前,我們簡單地區分一下超參數和參數:超參數要在學習之前設置,然而參數要從數據中學習。爲了說明差異,我們以Ridge迴歸爲例。

在Ridge迴歸中,權重矩陣θ是參數,正則化係數是超參數。如果我們通過梯度下降優化來解決上述迴歸問題,我們將進一步引入另一個優化參數,學習率a。

貝葉斯優化最常見的用例是超參數調整:在機器學習模型上找到性能最佳的超參數。

 

當訓練模型並不昂貴且耗時的時候,我們可以進行網格搜索以找到最佳超參數。但是如果函數評估的成本很高,則網格搜索不可行,例如大型神經網絡需要花費數天的時間進行訓練。此外就超參數的數量而言,網格搜索的縮放比例很差。

 

我們轉向貝葉斯優化,以抵消評估黑盒模型(準確性)的高額成本。

 

案例1-支持向量機(SVM)

在此示例中,我們使用SVM對sklearn的衛星數據集進行分類,並使用貝葉斯優化來優化SVM超參數。

  • γ-修改SVM內核的行爲。直觀地,它度量單個訓練樣本的影響;

  • C修改分類的鬆弛度,C越高,SVM對噪聲越敏感。

現在讓我們看一下有兩個類和兩個特徵的數據集。

 

讓我們用貝葉斯優化找到該分類任務學習的最佳超參數。注意:下圖中的真實的準確率(Ground Truth Accuracies)是針對每個可能的超參數計算的,僅用於展示目的。在實際應用中我們沒有這些值。通過運行高粒度網格搜索找到了<C,γ>的最佳值。

上圖中的滑塊,顯示了“改善概率”(PI)採集函數在尋找最佳超參數方面的工作。

上圖中的滑塊,顯示了在尋找最佳超參數時,“預期改進”(EI)採集函數的工作。

 

比較

下圖比較了不同的採集函數。我們多次運行隨機採集函數以求平均結果。

經過七次迭代,我們所有的採集都擊敗了隨機採集函數。我們看到隨機方法最初看起來似乎要好得多,但是它無法達到全局最優,而貝葉斯優化能夠相當接近。貝葉斯優化最初性能不佳可能歸因於初始探索。

 

結論與總結

在本文中,我們研究了用於優化黑盒函數的貝葉斯優化。貝葉斯優化非常適用於函數評估成本昂貴,從而使網格搜索或窮舉搜索變得不切實際的情況。我們研究了貝葉斯優化的關鍵組成部分。

首先我們研究了使用替代函數(有目標函數空間的先驗)對黑盒函數建模的過程。接下來我們學習了貝葉斯優化中的“貝葉斯”,函數評估被用作獲取替代後驗的數據。我們學習了採集函數,它是代理後驗的函數,並按順序進行了優化。這種新的順序優化成本很低,因此對我們有用。我們還研究了一些採集函數,並展示了這些不同函數如何平衡勘探和開發。最後我們看了一些貝葉斯優化的實際示例,這些示例用於優化機器學習模型的超參數。

 

我們希望您喜歡本文,並希望您已準備好利用貝葉斯優化的力量。如果您想探索更多內容,請閱讀下面的“進一步閱讀”部分。我們還提供了repository

來複現整個文章。

附鏈接:

https://github.com/distillpub/post--bayesian-optimization

原文標題:

Exploring Bayesian Optimization

Breaking Bayesian Optimization into small, sizeable chunks.

原文鏈接:

https://distill.pub/2020/bayesian-optimization/

編輯:黃繼彥

 

譯者簡介

王雨桐,UIUC統計學在讀碩士,本科統計專業,目前專注於Coding技能的提升。理論到應用的轉換中,敬畏數據,持續進化。

翻譯組招募信息

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景爲志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成爲你在翻譯小組的夥伴。

點擊文末“閱讀原文”加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:DatapiTHU),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公衆號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發佈後請將鏈接反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。

點擊“閱讀原文”擁抱組織

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章