0
本文作者: AI研習(xí)社-譯站 | 2019-04-18 10:51 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :
An introduction to high-dimensional hyper-parameter tuning
作者 | Thalles Silva
翻譯 | Yulian
校對(duì) | 斯蒂芬·二狗子 審核 | Pita 整理 | 立魚王
原文鏈接:
https://medium.freecodecamp.org/an-introduction-to-high-dimensional-hyper-parameter-tuning-df5c0106e5a4
如果你一直在努力調(diào)整機(jī)器學(xué)習(xí)模型(ML)性能,那么你讀這篇文章算是找對(duì)了地方。
超參調(diào)整針對(duì)的問(wèn)題是如何為一個(gè)學(xué)習(xí)算法找到最優(yōu)參數(shù)的集合。
通常,選出這些值的過(guò)程是非常耗時(shí)的。
甚至最簡(jiǎn)單的算法像線性回歸算法,找到超參的最優(yōu)解集也是困難的。當(dāng)涉及到深度學(xué)習(xí)算法,這件事會(huì)變得更艱難。
優(yōu)化神經(jīng)網(wǎng)絡(luò)(NNs)時(shí),一些需要調(diào)整的參數(shù)包括:
學(xué)習(xí)速率
動(dòng)量
正則化
dropout概率
批量標(biāo)準(zhǔn)化
在這篇短文中,我們談?wù)撚糜趦?yōu)化機(jī)器學(xué)習(xí)模型最優(yōu)方法。當(dāng)需要調(diào)整的參數(shù)超過(guò)兩個(gè)或三個(gè)的時(shí)候,這些方法可以被使用。
當(dāng)我們只有少量的參數(shù)需要優(yōu)化的時(shí)候,網(wǎng)格搜索通常是個(gè)好的選擇。也就是說(shuō),對(duì)于兩個(gè)甚至三個(gè)不同的參數(shù),這也許就是正確的方式。
對(duì)每個(gè)超參數(shù),首先需要定義待搜索的參數(shù)集合。
然后,該方法的思路嘗試各個(gè)參數(shù)值之間的所有可能組合。
對(duì)于每次組合,我們訓(xùn)練和評(píng)估一個(gè)不同的模型。
最后,我們保留一個(gè)只有最小泛化誤差的模型。
網(wǎng)絡(luò)搜索的主要問(wèn)題是一個(gè)指數(shù)時(shí)間算法。它的成本是隨著參數(shù)的數(shù)量增加而呈指數(shù)增長(zhǎng)。
換句話說(shuō),如果我們需要優(yōu)化p個(gè)參數(shù)并且每個(gè)帶有v個(gè)值,那它的執(zhí)行時(shí)間是O(v?) time。
同時(shí),網(wǎng)格搜索在超參空間并不是如我們所想的有效。
在看一看上面的代碼。使用這個(gè)實(shí)驗(yàn)設(shè)置,我們將要訓(xùn)練256個(gè)模型。注意如果我們決定多增加一個(gè)參數(shù)的尋優(yōu),實(shí)驗(yàn)的數(shù)字將會(huì)增至1024。
當(dāng)然,目前的設(shè)置只會(huì)探索每個(gè)參數(shù)的四個(gè)不同的值。也就是說(shuō),我們訓(xùn)練256個(gè)模型只為探索學(xué)習(xí)率、正則化等四個(gè)值。
除此之外,網(wǎng)格搜索經(jīng)常要求重復(fù)試驗(yàn)。比如將上面代碼中l(wèi)earning_rate_search的值作為一個(gè)例子。
learning_rate_search = [0.1, 0.01, 0.001, 0.0001]
考慮一下第一次運(yùn)行(256個(gè)模型試驗(yàn)),我們找到了最好的模型的學(xué)習(xí)率是0.01。
在這種情況下,我們應(yīng)該嘗試通過(guò)在0.01左右的網(wǎng)格上“放大”來(lái)改進(jìn)我們的搜索值,以便找到更好的值。
為了這個(gè),我們可以設(shè)置一個(gè)新的網(wǎng)格搜索并重新定義學(xué)習(xí)率的搜索范圍,比如:
learning_rate_search = [0.006, 0.008, 0.01, 0.04, 0.06]
但是如果我們得到的最好模型的學(xué)習(xí)率是0.0001怎么辦?
由于這個(gè)值位于初始搜索范圍的最邊緣,因此我們應(yīng)該改變搜索值,使用不同的集合重新搜索:
learning_rate_search = [0.0001, 0.00006, 0.00002]
并且盡可能的在找到一個(gè)好的候選值之后改進(jìn)范圍。
本文寫這些細(xì)節(jié)只是為了強(qiáng)調(diào)超參搜索是多么耗時(shí)。
如何隨機(jī)選擇我們的超參數(shù)候選值?盡管這種思路并不直觀好理解,但某種程度上隨機(jī)搜索比網(wǎng)格搜索更好。
一點(diǎn)點(diǎn)直覺(jué)
(讀者)應(yīng)注意到所提到的超參數(shù)中,某些超參數(shù)比其他參數(shù)更重要。
比如,學(xué)習(xí)率和動(dòng)量因子比其他參數(shù)更值得調(diào)整。
但是,由于上述情況也存在例外,因此我們很難知道哪些參數(shù)在優(yōu)化過(guò)程中起主要作用。實(shí)際上,我認(rèn)為每個(gè)參數(shù)的重要性可能會(huì)因不同的模型體系結(jié)構(gòu)和數(shù)據(jù)集而發(fā)生變化。
假設(shè)我們正在優(yōu)化兩個(gè)超參數(shù) - 學(xué)習(xí)率和正則化系數(shù)。并且,我們考慮到只有學(xué)習(xí)率對(duì)問(wèn)題是重要的。
在網(wǎng)格搜索的情況下,我們將進(jìn)行九個(gè)不同的實(shí)驗(yàn),但只嘗試學(xué)習(xí)率的三個(gè)候選。
圖片來(lái)源: Random Search for Hyper-Parameter Optimization, James Bergstra, Yoshua Bengio.
現(xiàn)在,看看如果我們對(duì)所有參數(shù)同時(shí)進(jìn)行隨機(jī)抽樣候選值會(huì)發(fā)生什么。在這種情況下,我們實(shí)際上是正在為每個(gè)參數(shù)探索九個(gè)不同的值。
(舉例) 如果您不相信,那么假設(shè)我們正在優(yōu)化三個(gè)超參數(shù)。例如,學(xué)習(xí)率,正則化強(qiáng)度和動(dòng)量。
在3個(gè)超參數(shù)上使用網(wǎng)格搜索進(jìn)行優(yōu)化
使用網(wǎng)格搜索,我們需要運(yùn)行125次訓(xùn)練,僅僅為了探索每個(gè)參數(shù)的五個(gè)不同值。
另一方面,使用隨機(jī)搜索,我們將探索每個(gè)參數(shù)的125個(gè)不同的值。
怎么做
如果我們想試試優(yōu)化學(xué)習(xí)率,比如值在0.1到0.0001的范圍內(nèi),我們會(huì):
請(qǐng)注意,我們是在對(duì)數(shù)函數(shù)下的均勻分布中采樣。
您可以將值-1和-4(學(xué)習(xí)率)視為指數(shù),則真實(shí)區(qū)間為[10e-1,10e-4]。
如果我們不使用對(duì)數(shù)方式,則會(huì)導(dǎo)致采樣分布的不均勻。換句話說(shuō),您不應(yīng)嘗試如下采樣:
在這種情況下,大多數(shù)值不會(huì)從“有效”區(qū)域采樣。實(shí)際上,考慮到本例中的學(xué)習(xí)率樣本,72%的值將落在區(qū)間[0.02,0.1]中。
此外,采樣值中的88%將來(lái)自區(qū)間[0.01,0.1]。也就是說(shuō),只有12%的學(xué)習(xí)率候選值,即3個(gè)值,將從區(qū)間[0.0004,0.01]中采樣。因此請(qǐng)不要那樣做。
在下圖中,我們從[0.1,0.0004]范圍內(nèi)抽取25個(gè)隨機(jī)值。左上角的圖顯示了原始值。
在右上角,注意72%的采樣值在[0.02,0.1]區(qū)間內(nèi)。88%的值位于[0.01,0.1]范圍內(nèi)。
底部圖顯示了值的分布。只有12%的值是在[0.0004,0.01]區(qū)間內(nèi)。要解決此問(wèn)題,請(qǐng)從對(duì)數(shù)范圍中的均勻分布中對(duì)值進(jìn)行采樣。
優(yōu)化正則化參數(shù)時(shí)也會(huì)嘗試取log
另外,請(qǐng)注意,與網(wǎng)格搜索一樣,您需要考慮我們上面提到的兩種情況。
如果最佳候選值非常接近邊緣,那么您的范圍可能會(huì)偏離,應(yīng)該移動(dòng)值范圍并重新采樣。此外,在選擇好第一個(gè)候選值之后,可以嘗試重新采樣到更精細(xì)的值范圍。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
總之,這些是關(guān)鍵的要點(diǎn)。
如果要調(diào)整超過(guò)兩個(gè)或三個(gè)超參數(shù),則首選“隨機(jī)搜索”。它比網(wǎng)格搜索更快/更容易實(shí)現(xiàn)和收斂。
使用適當(dāng)?shù)谋壤齺?lái)選擇您的值。可以試試對(duì)數(shù)空間中的均勻分布的樣本取樣。這將允許您對(duì)在參數(shù)范圍內(nèi)均勻分布的值進(jìn)行采樣。
無(wú)論是隨機(jī)搜索還是網(wǎng)格搜索,都要注意您選擇的候選值范圍。確保正確設(shè)置參數(shù)的范圍,并盡可能重新采樣已得到更精確的結(jié)果。
想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?
點(diǎn)擊【介紹高維超參數(shù)調(diào)整 - 優(yōu)化ML模型的最佳實(shí)踐】即可訪問(wèn):
https://ai.yanxishe.com/page/TextTranslation/1623
AI研習(xí)社今日推薦:機(jī)器學(xué)習(xí)大禮包
限時(shí)免費(fèi)\18本經(jīng)典書籍/Stanford經(jīng)典教材+論文
點(diǎn)擊鏈接即可獲取:
https://ai.yanxishe.com/page/resourceDetail/574
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。