參考文獻:Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization算法
機器學習中模型性能的好壞每每與超參數(如batch size,filter size等)有密切的關係。最開始爲了找到一個好的超參數,一般都是靠人工試錯的方式找到"最優"超參數。可是這種方式效率太慢,因此相繼提出了網格搜索(Grid Search, GS) 和 隨機搜索(Random Search,RS)。數組
可是GS和RS這兩種方法總歸是盲目地搜索,因此貝葉斯優化(Bayesian Optimization,BO) 算法閃亮登場。BO算法能很好地吸收以前的超參數的經驗,更快更高效地最下一次超參數的組合進行選擇。可是BO算法也有它的缺點,以下:微信
爲了解決上述問題,Hyperband算法被提出。在介紹Hyperband以前咱們須要理解怎樣的超參數優化算法纔算是好的算法,若是說只是爲了找到最優的超參數組合而不考慮其餘的因素,那麼咱們那能夠用窮舉法,把全部超參數組合都嘗試一遍,這樣確定能找到最優的。可是咱們都知道這樣確定不行,由於咱們還須要考慮時間,計算資源等因素。而這些因素咱們能夠稱爲Budget,用$B$表示。dom
假設一開始候選的超參數組合數量是$n$,那麼分配到每一個超參數組的預算就是$\frac{B}{n}$。因此Hyperband作的事情就是在$n$與$\frac{B}{n}$作權衡(tradeoff)。機器學習
上面這句話什麼意思呢?也就是說若是咱們但願候選的超參數越多越好,由於這樣可以包含最優超參數的可能性也就越大,可是此時分配到每一個超參數組的預算也就越少,那麼找到最優超參數的可能性就下降了。反之亦然。因此Hyperband要作的事情就是預設儘量多的超參數組合數量,而且每組超參數所分配的預算也儘量的多,從而確保儘量地找到最優超參數。函數
Hyperband算法對 Jamieson & Talwlkar(2015)提出的SuccessiveHalving算法作了擴展。因此首先介紹一下SuccessiveHalving算法是什麼。oop
其實仔細分析SuccessiveHalving算法的名字你就能大體猜出它的方法了:假設有$n$組超參數組合,而後對這$n$組超參數均勻地分配預算並進行驗證評估,根據驗證結果淘汰一半表現差的超參數組,而後重複迭代上述過程直到找到最終的一個最優超參數組合。性能
基於這個算法思路,以下是Hyperband算法步驟:學習
注意上述算法中對超參數設置採樣使用的是均勻隨機採樣,因此有算法在此基礎上結合貝葉斯進行採樣,提出了BOHB:Practical Hyperparameter Optimization for Deep Learning優化
文中給出了一個基於MNIST數據集的示例,並將迭代次數定義爲預算(Budget),即一個epoch表明一個預算。超參數搜索空間包括學習率,batch size,kernel數量等。
令$R=81,\eta=3$,因此$s_{max}=4,B=5R=5×81$。
下圖給出了須要訓練的超參數組和數量和每組超參數資源分配狀況。
由算法能夠知道有兩個loop,其中inner loop表示SuccessiveHalving算法。再結合下圖左邊的表格,每次的inner loop,用於評估的超參數組合數量愈來愈少,與此同時單個超參數組合能分配的預算也逐漸增長,因此這個過程能更快地找到合適的超參數。
右邊的圖給出了不一樣$s$對搜索結果的影響,能夠看到$s=0$或者$s=4$並非最好的,因此並非說$s$越大越好。
<footer style="color:white;;background-color:rgb(24,24,24);padding:10px;border-radius:10px;"><br> <h3 style="text-align:center;color:tomato;font-size:16px;" id="autoid-2-0-0"><br> <br> <center> <span>微信公衆號:AutoML機器學習</span><br> <img src="https://ask.qcloudimg.com/draft/1215004/21ra82axnz.jpg" style="width:200px;height:200px"> </center> <b>MARSGGBO</b><b style="color:white;"><span style="font-size:25px;">♥</span>原創</b><br> <span>若有意合做或學術討論歡迎私戳聯繫~<br>郵箱:marsggbo@foxmail.com</span> <b style="color:white;"><br> 2018-12-22<p></p> </b><p><b style="color:white;"></b><br> </p></h3><br> </footer>