擬合目標(biāo)函數(shù)后驗(yàn)分布的調(diào)參利器:貝葉斯優(yōu)化
如何優(yōu)化機(jī)器學(xué)習(xí)的超參數(shù)一直是一個(gè)難題,我們?cè)谀P陀?xùn)練中經(jīng)常需要花費(fèi)大量的精力來(lái)調(diào)節(jié)超參數(shù)而獲得更好的性能。因此,貝葉斯優(yōu)化利用先驗(yàn)知識(shí)逼近未知目標(biāo)函數(shù)的后驗(yàn)分布從而調(diào)節(jié)超參數(shù)就變得十分重要了。本文簡(jiǎn)單介紹了貝葉斯優(yōu)化的基本思想和概念,更詳細(xì)的推導(dǎo)可查看文末提供的論文。
超參數(shù)
超參數(shù)是指模型在訓(xùn)練過(guò)程中并不能直接從數(shù)據(jù)學(xué)到的參數(shù)。比如說(shuō)隨機(jī)梯度下降算法中的學(xué)習(xí)速率,出于計(jì)算復(fù)雜度和算法效率等,我們并不能從數(shù)據(jù)中直接學(xué)習(xí)一個(gè)比較不錯(cuò)的學(xué)習(xí)速度。但學(xué)習(xí)速率卻又是十分重要的,較大的學(xué)習(xí)速率不易令模型收斂到較合適的較小值解,而較小的學(xué)習(xí)速率卻又常常令模型的訓(xùn)練速度大大降低。對(duì)于像學(xué)習(xí)速率這樣的超參數(shù),我們通常需要在訓(xùn)練模型之前設(shè)定。因此,對(duì)于超參數(shù)眾多的復(fù)雜模型,微調(diào)超參數(shù)就變得十分痛苦。
超參數(shù)的選擇同樣對(duì)深度神經(jīng)網(wǎng)絡(luò)十分重要,它能大大提高模型的性能和精度。尋找優(yōu)良的超參數(shù)通常需要解決這兩個(gè)問(wèn)題:
- 如何高效地搜索可能的超參數(shù)空間,在實(shí)踐中至少會(huì)有一些超參數(shù)相互影響。
- 如何管理調(diào)參的一系列大型試驗(yàn)。
簡(jiǎn)單的調(diào)參法
在介紹如何使用貝葉斯優(yōu)化進(jìn)行超參數(shù)調(diào)整前,我們先要了解調(diào)參的樸素方法。
執(zhí)行超參數(shù)調(diào)整的傳統(tǒng)方法是一種稱之為網(wǎng)格搜索(Grid search)的技術(shù)。網(wǎng)格搜索本質(zhì)上是一種手動(dòng)指定一組超參數(shù)的窮舉搜索法。假定我們的模型有兩個(gè)超參數(shù) learning_rate 和 num_layes,表格搜索要求我們創(chuàng)建一個(gè)包含這兩個(gè)超參數(shù)的搜索表,然后再利用表格中的每一對(duì)(learning_rate,num_layes)超參數(shù)訓(xùn)練模型,并在交叉驗(yàn)證集或單獨(dú)的驗(yàn)證集中評(píng)估模型的性能。網(wǎng)格搜索***會(huì)將獲得***性能的參數(shù)組作為***超參數(shù)。
網(wǎng)格搜索窮舉地搜索整個(gè)超參數(shù)空間,它在高維空間上并不起作用,因?yàn)樗菀子龅骄S度災(zāi)難了。而對(duì)于隨機(jī)搜索來(lái)說(shuō),進(jìn)行稀疏的簡(jiǎn)單隨機(jī)抽樣并不會(huì)遇到該問(wèn)題,因此隨機(jī)搜索方法廣泛地應(yīng)用于實(shí)踐中。但是隨機(jī)搜索并不能利用先驗(yàn)知識(shí)來(lái)選擇下一組超參數(shù),這一缺點(diǎn)在訓(xùn)練成本較高的模型中尤為突出。因此,貝葉斯優(yōu)化能利用先驗(yàn)知識(shí)高效地調(diào)節(jié)超參數(shù)。
貝葉斯優(yōu)化的思想
貝葉斯優(yōu)化是一種近似逼近的方法。如果說(shuō)我們不知道某個(gè)函數(shù)具體是什么,那么可能就會(huì)使用一些已知的先驗(yàn)知識(shí)逼近或猜測(cè)該函數(shù)是什么。這就正是后驗(yàn)概率的核心思想。本文的假設(shè)有一系列觀察樣本,并且數(shù)據(jù)是一條接一條地投入模型進(jìn)行訓(xùn)練(在線學(xué)習(xí))。這樣訓(xùn)練后的模型將顯著地服從某個(gè)函數(shù),而該未知函數(shù)也將完全取決于它所學(xué)到的數(shù)據(jù)。因此,我們的任務(wù)就是找到一組能***化學(xué)習(xí)效果的超參數(shù)。
具體來(lái)說(shuō)在 y=mx+c 中,m 和 c 是參數(shù),y 和 x 分別為標(biāo)注和特征,機(jī)器學(xué)習(xí)的任務(wù)就是尋找合適的 m 和 c 構(gòu)建優(yōu)秀的模型。
貝葉斯優(yōu)化可以幫助我們?cè)诒姸嗄P椭羞x取性能***的模型。雖然我們可以使用交叉驗(yàn)證方法尋找更好的超參數(shù),但是我們不知道需要多少樣本才能從一些列候選模型中選出性能***的模型。這就是為什么貝葉斯方法能通過(guò)減少計(jì)算任務(wù)而加速尋找***參數(shù)的進(jìn)程。同時(shí)貝葉斯優(yōu)化還不依賴于人為猜測(cè)所需的樣本量為多少,這種***化技術(shù)是基于隨機(jī)性和概率分布而得出的。
簡(jiǎn)單來(lái)說(shuō),當(dāng)我們饋送***個(gè)樣本到模型中的時(shí)候,模型會(huì)根據(jù)該樣本點(diǎn)構(gòu)建一個(gè)直線。饋送第二個(gè)樣本后,模型將結(jié)合這兩個(gè)點(diǎn)并從前面的線出發(fā)繪制一條修正線。再到第三個(gè)樣本時(shí),模型繪制的就是一條非線性曲線。當(dāng)樣本數(shù)據(jù)增加時(shí),模型所結(jié)合的曲線就變得更多。這就像統(tǒng)計(jì)學(xué)里面的抽樣定理,即我們從樣本參數(shù)出發(fā)估計(jì)總體參數(shù),且希望構(gòu)建出的估計(jì)量為總體參數(shù)的相合、無(wú)偏估計(jì)。
下面我們繪制了另外一張非線性目標(biāo)函數(shù)曲線圖。我們發(fā)現(xiàn)對(duì)于給定的目標(biāo)函數(shù),在饋送了所有的觀察樣本后,它將搜尋到***值。即尋找令目標(biāo)函數(shù)***的參數(shù)(arg max)。
我們的目標(biāo)并不是使用盡可能多的數(shù)據(jù)點(diǎn)完全推斷未知的目標(biāo)函數(shù),而是希望能求得***化目標(biāo)函數(shù)值的參數(shù)。所以我們需要將注意力從確定的曲線上移開(kāi)。當(dāng)目標(biāo)函數(shù)組合能提升曲線形成分布時(shí),其就可以稱為采集函數(shù)(Acquisition funtion),這就是貝葉斯優(yōu)化背后的思想。
因此,我們的目標(biāo)首要就是確定令目標(biāo)函數(shù)取***值的參數(shù),其次再選擇下一個(gè)可能的***值,該***值可能就是在函數(shù)曲線上。
上圖是許多隨機(jī)集成曲線,它們都由三個(gè)黑色的觀察樣本所繪制而出。我們可以看到有許多波動(dòng)曲線,它表示給定一個(gè)采樣點(diǎn),下一個(gè)采樣點(diǎn)可能位于函數(shù)曲線的范圍。從下方的藍(lán)色區(qū)域可以看出,分布的方差是由函數(shù)曲線的均值得出。
因?yàn)槲覀儻B加未知函數(shù)曲線的觀察值而進(jìn)行估計(jì),所以這是一種無(wú)噪聲的優(yōu)化方法。但是當(dāng)我們需要考慮噪聲優(yōu)化方法時(shí),我們未知的函數(shù)將會(huì)因?yàn)樵肼曊`差值而輕微地偏離觀察樣本點(diǎn)。
貝葉斯優(yōu)化的目標(biāo)
我們一般希望能選取獲得***性能的超參數(shù),因此超參數(shù)選擇就可以看作為一種***化問(wèn)題,即***化超參數(shù)值為自變量的性能函數(shù) f(x)。我們可以形式化為以下表達(dá)式:
許多優(yōu)化設(shè)定都假設(shè)目標(biāo)函數(shù) f(x) 是已知的數(shù)學(xué)形式,同時(shí)還假定它為容易評(píng)估的凸函數(shù)。但是對(duì)于調(diào)參來(lái)說(shuō),目標(biāo)函數(shù)是未知的,且它為計(jì)算昂貴的非凸函數(shù)。所以常用的優(yōu)化方法很難起到作用,我們需要專門的貝葉斯優(yōu)化方法來(lái)解決這一類問(wèn)題。
貝葉斯優(yōu)化方法在目標(biāo)函數(shù)未知且計(jì)算復(fù)雜度高的情況下極其強(qiáng)大,該算法的基本思想是基于數(shù)據(jù)使用貝葉斯定理估計(jì)目標(biāo)函數(shù)的后驗(yàn)分布,然后再根據(jù)分布選擇下一個(gè)采樣的超參數(shù)組合。
貝葉斯優(yōu)化充分利用了前一個(gè)采樣點(diǎn)的信息,其優(yōu)化的工作方式是通過(guò)對(duì)目標(biāo)函數(shù)形狀的學(xué)習(xí),并找到使結(jié)果向全局***提升的參數(shù)。貝葉斯優(yōu)化根據(jù)先驗(yàn)分布,假設(shè)采集函數(shù)而學(xué)習(xí)到目標(biāo)函數(shù)的形狀。在每一次使用新的采樣點(diǎn)來(lái)測(cè)試目標(biāo)函數(shù)時(shí),它使用該信息來(lái)更新目標(biāo)函數(shù)的先驗(yàn)分布。然后,算法測(cè)試由后驗(yàn)分布給出的最值可能點(diǎn)。
高斯過(guò)程
為了使用貝葉斯優(yōu)化,我們需要一種高效的方式來(lái)對(duì)目標(biāo)函數(shù)的分布建模。這比直接對(duì)真實(shí)數(shù)字建模要簡(jiǎn)單地多,因?yàn)槲覀冎恍枰靡粋€(gè)置信的分布對(duì) f(x) 建模就能求得***解。如果 x 包含連續(xù)型超參數(shù),那么就會(huì)有無(wú)窮多個(gè) x 來(lái)對(duì) f(x) 建模,即對(duì)目標(biāo)函數(shù)構(gòu)建一個(gè)分布。對(duì)于這個(gè)問(wèn)題,高斯過(guò)程(Gaussian Process)實(shí)際上生成了多維高斯分布,這種高維正態(tài)分布足夠靈活以對(duì)任何目標(biāo)函數(shù)進(jìn)行建模。
逼近目標(biāo)函數(shù)的高斯過(guò)程
在上圖中,假定我們的目標(biāo)函數(shù)(虛線)未知,該目標(biāo)函數(shù)是模型性能和超參數(shù)之間的實(shí)際關(guān)系。但我們的目標(biāo)僅僅是搜索令性能達(dá)到***的超參數(shù)組合。
開(kāi)發(fā)和探索之間的權(quán)衡
一旦我們對(duì)目標(biāo)函數(shù)建了模,那么我們就能抽取合適的樣本嘗試計(jì)算,這就涉及到了開(kāi)發(fā)(exploitation)和探索(exploration)之間的權(quán)衡,即模型到底是在當(dāng)前***解進(jìn)一步開(kāi)發(fā),還是嘗試探索新的可能解。
對(duì)于貝葉斯優(yōu)化,一旦它找到了局部***解,那么它就會(huì)在這個(gè)區(qū)域不斷采樣,所以貝葉斯優(yōu)化很容易陷入局部***解。為了減輕這個(gè)問(wèn)題,貝葉斯優(yōu)化算法會(huì)在探測(cè)和開(kāi)發(fā) (exploration and exploitation) 中找到一個(gè)平衡點(diǎn)。
探測(cè)(exploration)就是在還未取樣的區(qū)域獲取采樣點(diǎn)。開(kāi)發(fā)(exploitation)就是根據(jù)后驗(yàn)分布,在最可能出現(xiàn)全局***解的區(qū)域進(jìn)行采樣。我們下一個(gè)選取點(diǎn)(x)應(yīng)該有比較大的均值(開(kāi)發(fā))和比較高的方差(探索)。
選擇下一個(gè)可能的***點(diǎn),并在方差和均值間權(quán)衡。因?yàn)槲覀冊(cè)诟叻讲罘植贾兴阉飨乱稽c(diǎn),這意味著探測(cè)新的點(diǎn) x。高均值意味著我們?cè)谳^大偏移/偏差下選擇下一點(diǎn)(x)。
在給定前 t 個(gè)觀察樣本,我們可以利用高斯過(guò)程計(jì)算出觀察值的可能分布,即:
μ和σ的表達(dá)式如下,其中 K 和 k 是由正定核推導(dǎo)出的核矩陣和向量。具體來(lái)說(shuō),K_ij=k(x_i,x_j) 為 t 乘 t 階矩陣,k_i=k(x_i,x_t+1) 為 t 維向量。***,y 為觀察樣本值的 t 維向量。
上面的概率分布表明在擬合數(shù)據(jù)后,樣本點(diǎn) x 的預(yù)測(cè)值 y 成高斯分布。并且該高斯分布有樣本均值和樣本方差這兩個(gè)統(tǒng)計(jì)量。現(xiàn)在為了權(quán)衡開(kāi)發(fā)和探索,我們需要選擇下一點(diǎn)到底是均值較高(開(kāi)發(fā))還是方差較大(探索)。
采集函數(shù)
為了編碼開(kāi)發(fā)探索之間的權(quán)衡,我們需要定義一個(gè)采集函數(shù)(Acquisition function)而度量給定下一個(gè)采樣點(diǎn),到底它的效果是怎樣的。因此我們就可以反復(fù)計(jì)算采集函數(shù)的極大值而尋找下一個(gè)采樣點(diǎn)。
隨著樣本增加,不同的采集函數(shù)和曲線擬合的對(duì)比。
上置信邊界
也許最簡(jiǎn)單的采集函數(shù)就是采取有較高期望的樣本點(diǎn)。給定參數(shù) beta,它假設(shè)該樣本點(diǎn)的值為均值加上 beta 倍標(biāo)準(zhǔn)差,即:
通過(guò)不同的 beta 值,我們可以令算法傾向于開(kāi)發(fā)還是探索。
提升的概率
提升采集函數(shù)概率背后的思想,即我們?cè)?**化提升概率(MPI)的基礎(chǔ)上選擇下一個(gè)采樣點(diǎn)。
高斯過(guò)程的提升概率
在上圖中,***觀察值是在 x*上的 y*,綠色區(qū)域給出了在 x_3 點(diǎn)的提升概率,而 x_1 和 x_2 點(diǎn)的提升概率非常小。因此,在 x_3 點(diǎn)抽樣可能會(huì)在 y*的基礎(chǔ)上得到提升。
其中Φ(x) 為標(biāo)準(zhǔn)正態(tài)分布函數(shù)。
貝葉斯優(yōu)化過(guò)程
上圖可以直觀地解釋貝葉斯優(yōu)化。其中紅色的曲線為實(shí)際的目標(biāo)函數(shù),并且我們并不知道該函數(shù)確切的表達(dá)式。所以我們希望使用高斯過(guò)程逼近該目標(biāo)函數(shù)。通過(guò)采樣點(diǎn)(上圖有 4 個(gè)抽樣點(diǎn)),我們能夠得出直觀或置信曲線以擬合觀察到的樣本點(diǎn)。所以上圖綠色的區(qū)域?yàn)橹眯庞?,即目?biāo)曲線最有可能處于的區(qū)域。從上面的先驗(yàn)知識(shí)中,我們確定了第二個(gè)點(diǎn)(f+)為***的樣本觀察值,所以下一個(gè)***點(diǎn)應(yīng)該要比它大或至少與之相等。因此,我們繪制出一條藍(lán)線,并且下一個(gè)***點(diǎn)應(yīng)該位于這一條藍(lán)線之上。因此,下一個(gè)采樣在交叉點(diǎn) f+和置信域之間,我們能假定在 f+點(diǎn)以下的樣本是可以丟棄的,因?yàn)槲覀冎恍枰阉髁钅繕?biāo)函數(shù)取極大值的參數(shù)。所以現(xiàn)在我們就縮小了觀察區(qū)域,我們會(huì)迭代這一過(guò)程,直到搜索到***解。下圖是貝葉斯優(yōu)化算法的偽代碼:
論文:Taking the Human Out of the Loop: A Review of Bayesian Optimization
地址:http://ieeexplore.ieee.org/document/7352306/
摘要:大數(shù)據(jù)應(yīng)用通常和復(fù)雜系統(tǒng)聯(lián)系到一起,這些系統(tǒng)擁有巨量用戶、大量復(fù)雜性軟件系統(tǒng)和大規(guī)模異構(gòu)計(jì)算與存儲(chǔ)架構(gòu)。構(gòu)建這樣的系統(tǒng)通常也面臨著分布式的設(shè)計(jì)選擇,因此最終產(chǎn)品(如推薦系統(tǒng)、藥物分析工具、實(shí)時(shí)游戲引擎和語(yǔ)音識(shí)別等)涉及到許多可調(diào)整的配置參數(shù)。這些參數(shù)通常很難由各種開(kāi)發(fā)者或團(tuán)隊(duì)具體地編入軟件中。如果我們能聯(lián)合優(yōu)化這些超參數(shù),那么系統(tǒng)的性能將得到極大的提升。貝葉斯優(yōu)化是一種聯(lián)合優(yōu)化超參數(shù)的強(qiáng)力工具,并且最近也變得越來(lái)越流行。它能自動(dòng)調(diào)節(jié)超參數(shù)以提升產(chǎn)品質(zhì)量和人類生產(chǎn)力。該綜述論文介紹了貝葉斯優(yōu)化,并重點(diǎn)關(guān)注該算法的方法論和列舉一些廣泛應(yīng)用的案例。
原文:
- 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
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】