今天想談的問題是:什么是貝葉斯優(yōu)化/Bayesian Optimization,基本用法是什么?
本文的定位是:幫助未接觸、僅聽說過、初次接觸貝葉斯優(yōu)化的小白們一文看懂什么是貝葉斯優(yōu)化和基本用法,大神/貝葉斯優(yōu)化專家們求輕噴,覺得不錯(cuò)的記得幫點(diǎn)贊/在看/轉(zhuǎn)發(fā)幫擴(kuò)散哦!謝謝。
梳理這個(gè)問題有這么兩個(gè)原因:
1、在工業(yè)界,最近我看到不少同學(xué)在探索并使用貝葉斯優(yōu)化的方法尋找更好的超參,找到performance更好的模型,漲點(diǎn)漲分;
2、家里另一位在學(xué)習(xí)和研究“Safety”強(qiáng)化學(xué)習(xí)的時(shí)候,發(fā)現(xiàn)一個(gè)“牛牛“的代碼是基于貝葉斯優(yōu)化的,為了提高家庭地位不得不看一看啦哈哈哈。
于是之前僅僅只聽說過貝葉斯優(yōu)化的我,趕緊知乎治學(xué),面向Github編程,面向谷歌解決問題,一通搜索學(xué)習(xí)了解入門之后基本有個(gè)框架和概念了,遂記錄在此,望茫?;ヂ?lián)網(wǎng)看到這個(gè)文章的小白們也可以快速入門貝葉斯優(yōu)化/Bayesian Optimization!
貝葉斯優(yōu)化應(yīng)用場(chǎng)景
如果你要 解決的問題/面對(duì)的場(chǎng)景,假設(shè)輸入為x,輸出為f(x),有如下特點(diǎn),那不妨試一下貝葉斯優(yōu)化吧。
這個(gè)函數(shù)f(x)特點(diǎn)是計(jì)算量特別大,每次計(jì)算都特別耗時(shí)、耗資源;
甚至f(x)可能都沒有解析式表達(dá)式。
無法知道函數(shù)f(x)對(duì)于x的梯度應(yīng)該如何計(jì)算。
需要找到函數(shù)f(x)在x自變量上的全局最優(yōu)解(最低點(diǎn)對(duì)應(yīng)的取值)
舉例:
我們有一個(gè)參數(shù)量巨大的推薦系統(tǒng)模型(或者是某個(gè)NLP模型),每次訓(xùn)練很消耗資源和時(shí)間,但我們?nèi)匀黄诖业礁玫哪P统瑓?shù)讓這個(gè)推薦系統(tǒng)的效果更好,而人工參數(shù)搜索太費(fèi)神、Grid Search太消耗資源和時(shí)間,想找一個(gè)不那么費(fèi)神同時(shí)資源消耗和時(shí)間消耗也比Grid Search稍微小一點(diǎn)的辦法。
這個(gè)場(chǎng)景基本滿足以上特點(diǎn):一是計(jì)算量大、二是模型對(duì)于超參數(shù)(比如learning rate學(xué)習(xí)率,batch size)的梯度無從知曉;所以可以考慮用貝葉斯優(yōu)化來尋找最合適的一組超參。對(duì)此實(shí)際應(yīng)用感興趣的同學(xué)可以進(jìn)一步閱讀:Facebook efficient-tuning-of-online-systems-using-bayesian-optimization。
但這兒還是要給想用貝葉斯優(yōu)化尋找超參的同學(xué)稍微潑以下冷水:由于實(shí)際系統(tǒng)的復(fù)雜性、計(jì)算量超級(jí)巨大(或者說資源的限制),可能連貝葉斯優(yōu)化所需要的超參組合都無法滿足,導(dǎo)致最后超參搜索的結(jié)果不如一開始拍腦袋(根據(jù)經(jīng)驗(yàn)的調(diào)參)效果好哦。所以這是一個(gè)辦法,但最好不是唯一辦法哦。
一個(gè)關(guān)于Safe RL的例子:強(qiáng)化學(xué)習(xí)中的一個(gè)環(huán)境里有Agent A(比如一個(gè)小學(xué)生學(xué)如何騎自行車)在學(xué)習(xí)如何根據(jù)環(huán)境做出action,同時(shí)又有一個(gè)Agent B在幫助Agent A進(jìn)行學(xué)習(xí)(比如有個(gè)老師擔(dān)心寶貝學(xué)生摔倒,要教學(xué)生騎車)。Agent B需要從多種策略(每個(gè)策略還有一些參數(shù))里找到一個(gè)最優(yōu)的策略組合幫助Agent A進(jìn)行學(xué)習(xí)(比如學(xué)自行車的時(shí)候自行車旁邊放個(gè)2輪子、帶個(gè)頭盔,或者直接用手扶著,或者直接推著推著突然放手)。那么Agent B的如何選擇最優(yōu)輔助策略組合以及對(duì)應(yīng)策略的參數(shù)也可以使用貝葉斯優(yōu)化。感興趣的同學(xué)可以閱讀NeurIPS 2020的Spotlight presentation文章:Safe Reinforcement Learning via Curriculum Induction。
圖1 Safe RL中例子
有了使用場(chǎng)景,我們就會(huì)問什么是貝葉斯優(yōu)化啦。
什么是貝葉斯優(yōu)化
貝葉斯優(yōu)化定義的一種形象描述。
分享Medium上這個(gè)不錯(cuò)的例子。
比如我們有一個(gè)目標(biāo)函數(shù)c(x),代表輸入為x下的代價(jià)為c(x)。優(yōu)化器是無法知道這個(gè)c(x)的真實(shí)曲線如何的,只能通過部分(有限)的樣本x和對(duì)應(yīng)的c(x)值。假設(shè)這個(gè)c(x)如圖2所示。
圖2 優(yōu)化函數(shù)舉例
貝葉斯優(yōu)化器為了得到c(x)的全局最優(yōu)解,首先要采樣一些點(diǎn)x來觀察c(x)長(zhǎng)什么樣子,這個(gè)過程又可以叫surrogate optimization(替代優(yōu)化),由于無法窺見c(x)的全貌,只能通過采樣點(diǎn)來找到一個(gè)模擬c(x)的替代曲線,如圖3所示:
圖3 采樣的點(diǎn)與替代的曲線
得到這個(gè)模擬的/替代的曲線之后,我們就能找到兩個(gè)還算不錯(cuò)的最小值對(duì)應(yīng)的點(diǎn)了(圖3中標(biāo)注的是promising minima),于是根據(jù)當(dāng)前觀察到的這兩個(gè)最小點(diǎn),再采樣更多的點(diǎn),用更多的點(diǎn)模擬出一個(gè)更逼真的c(x)再找最小點(diǎn)的位置,如圖4所示。
圖4 繼續(xù)采樣 空心的圈為第2次采樣的點(diǎn)
然后我們重復(fù)上面這個(gè)過程,每次重復(fù)的時(shí)候我們干以下幾件事情:先找到可擬合當(dāng)前點(diǎn)的一個(gè)替代函數(shù),然后根據(jù)替代函數(shù)的最小值所在的位置去采樣更多的 ,再更新替代函數(shù),如此往復(fù)。
函數(shù)替代的例子: 給定x的取之范圍,那么一個(gè)復(fù)雜的函數(shù)y = arcsin(( 1- cos(x) * cos(x)) / sinx) 則可以用y=x來替代。
如果我們的c(x)不是特別奇怪的話,一般來說經(jīng)過幾次迭代之后,我們就能找到c(x)的最優(yōu)解啦。當(dāng)然如果c(x)特別奇怪,那可能是數(shù)據(jù)的問題而不是。。。c(x)的問題。再回頭來看上面這個(gè)過程,貝葉斯優(yōu)化的厲害的地方:a 幾乎沒有對(duì)函數(shù)c(x)做任何的假設(shè)限定,也不需要知道c(x)的梯度,也不需要知道c(x)到底是個(gè)什么解析表達(dá)式,就直接得出了c(x)的全局最優(yōu)。
以上例子中有兩個(gè)重要的點(diǎn):
1、用什么函數(shù)作為替代函數(shù)(選擇函數(shù)進(jìn)行curve-fiting的過程),對(duì)應(yīng)Gaussian Processes;
2、如何根據(jù)當(dāng)前信息和替代函數(shù)的局部最優(yōu)點(diǎn)繼續(xù)采樣x,對(duì)應(yīng)acquisition function。
為什么可以用Gaussian Processes對(duì)曲線進(jìn)行擬合呢?
圖5 總共4個(gè)黑色的點(diǎn),代表4個(gè)數(shù)據(jù)點(diǎn)。左邊是Gaussian process產(chǎn)生的多個(gè)函數(shù)曲線(紅、藍(lán)、黃等曲線);右邊的圖顯示的是左圖的那些函數(shù)都會(huì)經(jīng)過黑點(diǎn),以及函數(shù)值的波動(dòng)范圍(灰色部分)。
Gaussian Processes的一個(gè)非常大的優(yōu)點(diǎn):“先驗(yàn)知識(shí)”可以根據(jù)新觀測(cè)量更新,而Gaussian Processes又可以根據(jù)這個(gè)更新后的“先驗(yàn)知識(shí)”得到新的function的分布,從而更好的擬合數(shù)據(jù)點(diǎn)。也就是:如果我們觀測(cè)了3個(gè)函數(shù)值,那么有一種高斯分布和這三個(gè)觀測(cè)的數(shù)據(jù)點(diǎn)對(duì)應(yīng),而如果我們觀測(cè)了4個(gè)點(diǎn),又可以新計(jì)算一個(gè)對(duì)應(yīng)的高斯分布。
這里我們簡(jiǎn)單以圖6為例描述一下:Gaussian Process是如何根據(jù)擬合數(shù)據(jù),然后對(duì)新的數(shù)據(jù)做預(yù)測(cè)?
如圖6所示,假設(shè)現(xiàn)已觀測(cè)到3個(gè)點(diǎn)(左邊黑色的3個(gè)圈),假設(shè)這計(jì)算得到3個(gè)函數(shù)值分布是 ,Gaussian Process的理論告訴我們(具體理論先略了)給定一個(gè)新的 輸入 (左圖藍(lán)色 ),我們可以按照?qǐng)D6左下角的方式計(jì)算出與藍(lán)色 對(duì)應(yīng)的 的均值和方差,也就是輸出的范圍。
圖6 更新過程示意圖
acquisition function在決定如何選取新的采樣點(diǎn)是面臨兩個(gè)經(jīng)典問題:exploitation和exploration,我稱之為深度和廣度。以圖5的例子來看,
exploitation意味著盡可能順著當(dāng)前已知的信息,比如順著黑色點(diǎn)的地方來采樣更多的點(diǎn),也就是深度。當(dāng)已知信息利用到一定程度,這種exploitation方向的采樣會(huì)很少有信息增益。
exploration顧名思義就是更趨向探索性質(zhì),比如順著圖5右邊的灰色區(qū)域較大的地方探索,也就是廣度,探索更多未知的地方。
假設(shè)我們把a(bǔ)cquisition functin簡(jiǎn)寫為aq(x),整個(gè)貝葉斯優(yōu)化可以概括為:
基于Gaussian Process,初始化替代函數(shù)的先驗(yàn)分布;
根據(jù)當(dāng)前替代函數(shù)的先驗(yàn)分布和aq(x),采樣若干個(gè)數(shù)據(jù)點(diǎn)。
根據(jù)采樣的x得到目標(biāo)函數(shù)c(x)的新值。
根據(jù)新的數(shù)據(jù),更新替代函數(shù)的先驗(yàn)分布。
并開始重復(fù)迭代2-4步。
迭代之后,根據(jù)當(dāng)前的Gaussian Process找到全局最優(yōu)解。
也就是說貝葉適優(yōu)化實(shí)際上是:由于目標(biāo)函數(shù)無法/不太好 優(yōu)化,那我們找一個(gè)替代函數(shù)來優(yōu)化,為了找到當(dāng)前目標(biāo)函數(shù)的合適替代函數(shù),賦予了替代函數(shù)概率分布,然后根據(jù)當(dāng)前已有的先驗(yàn)知識(shí),使用acquisition function來評(píng)估如何選擇新的采樣點(diǎn)(trade-off between exploration and exploitation),獲得新的采樣點(diǎn)之后更新先驗(yàn)知識(shí),然后繼續(xù)迭代找到最合適的替代函數(shù),最終求得全局最優(yōu)解。
貝葉斯優(yōu)化偏公式的定義,個(gè)人還是更喜歡公式定義的。
Bayesian Optimization(BO)是對(duì)black-box函數(shù)全局最優(yōu)求解的一種strategy。具體的 是一個(gè)定義在 上L-Lipschitz連續(xù)的函數(shù),我們想要找到 的全局最優(yōu)解:
這里我們假設(shè)函數(shù) 是一個(gè)black-box,對(duì)于這個(gè)black-box,我們只能觀測(cè)到有噪聲的函數(shù)值: 其中 ,也就是零均值高斯分布。于是整個(gè)優(yōu)化目標(biāo)可以變成:找到一系列的 使得 最?。?/p>
要讓 被快速優(yōu)化到最小,由于 對(duì)應(yīng)了函數(shù) 這個(gè)最小點(diǎn),所以越靠近 開始采樣,那么采樣得到的一系列 越快結(jié)束 的優(yōu)化,也就結(jié)束了 全局最優(yōu)解的優(yōu)化。
這一序列 具體是如何得到的呢?假設(shè)我們?cè)诘?次iteration里采樣到了 ,我們將新觀測(cè)到的數(shù)據(jù)加入到已有的觀測(cè)數(shù)據(jù) 里,然后通過優(yōu)化一個(gè)叫actuisition function 的函數(shù)得到下一個(gè)時(shí)刻要采樣的 ,也就是 。
那么這個(gè) 要如何設(shè)計(jì)呢?歸根結(jié)底是如何根據(jù)已有的觀測(cè)量選擇 ,于是設(shè)計(jì)過程中就遇到了經(jīng)典的exploration和exploitation問題,也就是是繼續(xù)沿著已有的信息深挖,還是擴(kuò)大信息的覆蓋廣度?
我們已有的觀測(cè)量是 ,假設(shè)這些觀測(cè)量服從高斯分布 ,其中 分別是均值和方差,也對(duì)應(yīng)著exploitation和exploration(方差通常也指不確定性)。那我們就根據(jù)expatiation和exploration來設(shè)計(jì) 吧,這里只介紹一鐘叫Gaussian Process-Upper Confidence Bound (GP-UCB)的設(shè)計(jì):
很容易看出, a 其實(shí)就是均值和方差加權(quán)和,也就起到了調(diào)和exploitation和exploration的作用啦。至于其他幾種acquisition function,Expected Improvement (EI),(Predictive) Entropy Search,Thompson Sampling(TS)等本文就不再一一描述啦。
有了 就能確定新的采樣點(diǎn)了,Gaussian Process也就能跟著更新了,最終替代函數(shù)的擬合也就越來越貼近真實(shí)函數(shù)了,最終找到全局最優(yōu)點(diǎn)。
結(jié)合上面的形象描述和公式定義描述,總結(jié)以下貝葉斯優(yōu)化的兩個(gè)重點(diǎn):
1. 定義一種關(guān)于要優(yōu)化的函數(shù)/替代函數(shù)的概率分布,這種分布可以根據(jù)新獲得的數(shù)據(jù)進(jìn)行不斷更新。我們常用的是Gaussian Process。
2. 定義一種acquisition function。這個(gè)函數(shù)幫助我們根據(jù)當(dāng)前信息決定如何進(jìn)行新的采樣才能獲得最大的信息增益,并最終找到全局最優(yōu)。
貝葉斯優(yōu)化的應(yīng)用
紙上得來終覺淺,絕知此事要躬行。
我們就用python來跑幾個(gè)例子看看吧。以下例子需要安裝Gpy和GpyOpt這兩個(gè)python庫(kù)。
假設(shè)我們的目標(biāo)函數(shù)是:
這個(gè)函數(shù)定義在[-1,1]之間,通常也叫domain。這個(gè)函數(shù)的在定義區(qū)間的最優(yōu)點(diǎn)是:x 。于是代碼為:
import GPyOptdef myf(x): return x ** 2bounds = [{‘name’: ‘var_1’, ‘type’: ‘continuous’, ‘domain’: (-1,1)}]# 變量名字,連續(xù)變量,定義區(qū)間是-1到1max_iter = 15# 最大迭代次數(shù)myProblem = GPyOpt.methods.BayesianOptimization(myf,bounds)#用貝葉適優(yōu)化來求解這個(gè)函數(shù),函數(shù)的約束條件是boundsmyProblem.run_optimization(max_iter)#開始求解print(myProblem.x_opt)#打印最優(yōu)解對(duì)應(yīng)的x為-0.00103print(myProblem.fx_opt)#打印最優(yōu)解對(duì)應(yīng)d的函數(shù)值為0.0004
總結(jié)
本文主要有以下內(nèi)容:
寫貝葉適優(yōu)化的出發(fā)點(diǎn)。
貝葉適優(yōu)化的適用場(chǎng)景。
貝葉適優(yōu)化是什么?(包括一個(gè)形象和一個(gè)公式化的解釋)。
貝葉適優(yōu)化的應(yīng)用例子。
那么問一問自己,看懂了嗎?
參考文獻(xiàn):
https://zhuanlan.zhihu.com/p/76269142
https://radiant-brushlands-42789.herokuapp.com/towardsdatascience.com/the-beauty-of-bayesian-optimization-explained-in-simple-terms-81f3ee13b10f
https://www.youtube.com/watch?v=4vGiHC35j9s
編輯:jq
-
工業(yè)
+關(guān)注
關(guān)注
3文章
2214瀏覽量
48665 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4399瀏覽量
66328 -
貝葉斯
+關(guān)注
關(guān)注
0文章
77瀏覽量
12844
原文標(biāo)題:【機(jī)器學(xué)習(xí)】一文看懂貝葉斯優(yōu)化/Bayesian Optimization
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
各位大佬給指點(diǎn)一下,感激不盡,貝斯前級(jí)DI效果器上的插件元件
AI+能源數(shù)字化破局者故事5:斯倫貝謝 x IBM 咨詢之 “全球化經(jīng)營(yíng)與本地化適配”
讓醫(yī)療設(shè)備「秒懂人心」:CCLink IE轉(zhuǎn)DeviceNet觸控方案全攻略
VirtualLab:光柵的優(yōu)化與分析
VirtualLab 應(yīng)用:傾斜光柵的參數(shù)優(yōu)化及公差分析
高速 PCB 設(shè)計(jì)如何保證信號(hào)完整性?看這一文,7個(gè)技巧總結(jié),秒懂
貝斯新能源:以科技創(chuàng)新為驅(qū)動(dòng)力 助推鋰電池行業(yè)高質(zhì)量發(fā)展
VirtualLab Fusion應(yīng)用:非近軸衍射分束器的設(shè)計(jì)與優(yōu)化
康謀方案 | 基于AI自適應(yīng)迭代的邊緣場(chǎng)景探索方案

貝思科爾推出創(chuàng)新工具,限時(shí)免費(fèi)試用
貝斯蘭半導(dǎo)體完成數(shù)千萬元天使輪融資
阿貝數(shù)如何影響光學(xué)器件性能
阿貝數(shù)與折射率的關(guān)系 阿貝數(shù)在顯微鏡中的應(yīng)用
秒懂連接器分類及應(yīng)用

評(píng)論