最近有一個(gè)模型調(diào)優(yōu)的事情,正好過年的時(shí)候看過automl里面有一個(gè)貝葉斯參數(shù)優(yōu)化,嘗試用了一下,感覺還比較有效。
1.目前常見的調(diào)參方法
- Grid Search,當(dāng)參數(shù)空間較小時(shí),網(wǎng)格搜索是個(gè)不錯(cuò)的選擇,并且容易并行化;當(dāng)參數(shù)空間較大時(shí),網(wǎng)格搜索效率會(huì)變得極低,通常該方法需結(jié)合一定的調(diào)參經(jīng)驗(yàn)來縮小參數(shù)空間。
- Random Search,隨機(jī)搜索,相當(dāng)于對(duì)參數(shù)空間的簡(jiǎn)單隨機(jī)抽樣,在相同的參數(shù)空間下,實(shí)際效果要比網(wǎng)格搜索低,但搜索效率更快。有時(shí)候會(huì)先用隨機(jī)搜索確定每個(gè)參數(shù)的大致范圍,然后再用網(wǎng)格搜索進(jìn)行密集運(yùn)算。
- 手動(dòng)調(diào)參,靠經(jīng)驗(yàn)直覺。
- 自動(dòng)調(diào)參,自動(dòng)超參數(shù)調(diào)整形成了關(guān)于超參數(shù)設(shè)置和模型性能之間關(guān)系的知識(shí),能利用先驗(yàn)知識(shí)選擇下一組超參數(shù)。
首先在多個(gè)配置中收集性能,然后進(jìn)行一些推斷并確定接下來要嘗試的配置。目的是在找到最佳狀態(tài)時(shí)盡量減少試驗(yàn)次數(shù)。
這個(gè)過程本質(zhì)上是順序的,不容易并行化。
調(diào)整超參數(shù)的大多數(shù)方法都屬于基于順序模型的全局優(yōu)化(SMBO)。這些方法使用代理函數(shù)來逼近真正的黑盒函數(shù)。SMBO的內(nèi)部循環(huán)是對(duì)該替代品的優(yōu)化,或者對(duì)代理進(jìn)行某種轉(zhuǎn)換。最大化此代理的配置將是下一個(gè)應(yīng)該嘗試的配置。SMBO算法在優(yōu)化替代品的標(biāo)準(zhǔn)以及他們根據(jù)觀察歷史對(duì)替代品進(jìn)行建模的方式上有所不同。最近在文獻(xiàn)中提出了幾種用于超參數(shù)的SMBO方法:- Bayesian Optimization:使用高斯過程對(duì)代理進(jìn)行建模,通常優(yōu)化 Expected Improvement(EI),這是新試驗(yàn)將在當(dāng)前最佳觀察上改進(jìn)的預(yù)期概率。高斯過程是函數(shù)的分布。來自高斯過程的樣本是整個(gè)函數(shù)。訓(xùn)練高斯過程涉及將此分布擬合到給定數(shù)據(jù),以便生成接近觀察數(shù)據(jù)的函數(shù)。使用高斯過程,可以計(jì)算搜索空間中任何點(diǎn)的EI。接下來將嘗試給出最高的EI。貝葉斯優(yōu)化通常為連續(xù)超參數(shù)(例如learning rate, regularization coefficient…)提供 non-trivial/off-the-grid 值,并且在一些好的數(shù)據(jù)集上擊敗人類表現(xiàn)。Spearmint是一個(gè)眾所周知的貝葉斯優(yōu)化實(shí)現(xiàn)。
- SMAC:使用隨機(jī)森林對(duì)目標(biāo)函數(shù)進(jìn)行建模,從隨機(jī)森林認(rèn)為最優(yōu)的區(qū)域(高EI)中抽取下一個(gè)點(diǎn)。
- TPE:是SMAC的改進(jìn)版本,其中兩個(gè)分離的模型用于模擬后驗(yàn)。眾所周知的TPE實(shí)現(xiàn)是hyperopt。
2. 貝葉斯調(diào)優(yōu)
2.1 基礎(chǔ)原理
貝葉斯調(diào)優(yōu)的原理是建立在高斯過程回歸上,而高斯過程回歸則是在求解目標(biāo)函數(shù)的后驗(yàn)分布,具體原理見黃橙橙:高斯過程回歸?效果意想不到的好。
假設(shè) x 是超參數(shù)集合, f(x) 是模型效,如果模型訓(xùn)練是很快的,那么我們總是可以遍歷 x ,找到最優(yōu)的 f(x) ,如網(wǎng)格搜索。但現(xiàn)實(shí)情況則是相反,模型訓(xùn)練的代價(jià)是昂貴的,所以我們要充分利用之前已經(jīng)嘗試過的 (x, f(x)) 集合。
因此貝葉斯優(yōu)化其實(shí)就是想求出后驗(yàn)概率 p(f|x, x, f(x)) 的分布,其中 f* 就是指未嘗試的f(x),x* 是指對(duì)應(yīng)的未嘗試的超參數(shù),而 x, f(x) 則是指嘗試過的超參數(shù)和模型效果,即 x 的參數(shù)下實(shí)際訓(xùn)練得到的模型效果。
如果我們能擬合出這個(gè)后驗(yàn)概率分布,那么我們就可以在 x 下,預(yù)估 f(x) 的值,既然分布都知道了,那么取最優(yōu)的 x 就可以了。
2.2 基本概念
Prior Function 先驗(yàn)函數(shù)
基于概率分布,用于描述目標(biāo)函數(shù)的分布,擬合目標(biāo)函數(shù)曲線。不同的分布,PF不同,效果是不一樣的。
Acquisition Function 收獲函數(shù)
從上面的介紹可以看出,貝葉斯調(diào)優(yōu)是一個(gè)順序模型,即每次取一組參數(shù) x 來得到真實(shí)的 f(x) ,從而用得到的結(jié)果來矯正對(duì)后驗(yàn)概率分布的預(yù)估,合理的是,當(dāng)對(duì)參數(shù)空間采樣越多時(shí),得到的分布就越準(zhǔn)確,但是模型訓(xùn)練的代價(jià)是昂貴的,我們不能任性的采樣,需要一個(gè)指標(biāo)來評(píng)估采樣的質(zhì)量。這就是Acquisition Function,也就是收獲函數(shù)。最簡(jiǎn)單的收獲函數(shù)可以設(shè)定為max(mean + var),即某組參數(shù)下, f(x) 的均值和方差之和取最大值,這是因?yàn)榫翟酱?,說明模型效果越好,方差越大,說明該區(qū)域評(píng)估出的分布不是很準(zhǔn)確,需要額外的取樣來矯正。
2.3 貝葉斯優(yōu)化的基本思想
一句話總結(jié):建立目標(biāo)函數(shù)的概率模型,并用它來選擇最有希望的超參數(shù)來評(píng)估真實(shí)的目標(biāo)函數(shù)。
基本思想是:利用先驗(yàn)知識(shí)逼近未知目標(biāo)函數(shù)的后驗(yàn)分布從而調(diào)節(jié)超參?;ㄒ稽c(diǎn)時(shí)間選擇下一個(gè)超參數(shù),以減少對(duì)目標(biāo)函數(shù)的調(diào)用。
建立代理模型的目標(biāo)函數(shù)(Prior Function/先驗(yàn)函數(shù))
- 找到在代理上表現(xiàn)最佳的超參數(shù)(利用EI值,根據(jù)Acquisition Function得出EI)
- 將這些超參數(shù)應(yīng)用于真正的目標(biāo)函數(shù)
- 更新包含新結(jié)果的代理模型
- 重復(fù)步驟2-4,直到達(dá)到最大迭代次數(shù)或時(shí)間
- 基于順序模型的優(yōu)化方法(SMBO)是貝葉斯優(yōu)化的形式化。順序是指一個(gè)接一個(gè)地運(yùn)行試驗(yàn),每次通過應(yīng)用貝葉斯推理和更新概率模型(代理)來嘗試更好的超參數(shù)。
2.4 貝葉斯優(yōu)化的優(yōu)點(diǎn)
- 能利用先驗(yàn)知識(shí)高效地調(diào)節(jié)超參數(shù),每個(gè)試驗(yàn)不獨(dú)立,前一個(gè)推動(dòng)下一個(gè)選擇
- 通過減少計(jì)算任務(wù)而加速尋找最優(yōu)參數(shù)的進(jìn)程
- 不依賴人為猜測(cè)所需的樣本量為多少,優(yōu)化技術(shù)基于隨機(jī)性,概率分布
- 在目標(biāo)函數(shù)未知且計(jì)算復(fù)雜度高的情況下極其強(qiáng)大
- 通常適用于連續(xù)值的超參,例如 learning rate, regularization coefficient
- 在測(cè)試集表現(xiàn)優(yōu)秀于手工調(diào)參結(jié)果,泛化性/魯棒性好
- 不易陷入局部最優(yōu)