[机器学习]超参数优化算法-SuccessiveHalving与Hyperband
一 傳統優化算法
機器學習中模型性能的好壞往往與超參數(如batch size,filter size等)有密切的關系。最開始為了找到一個好的超參數,通常都是靠人工試錯的方式找到"最優"超參數。但是這種方式效率太慢,所以相繼提出了網格搜索(Grid Search, GS) 和 隨機搜索(Random Search,RS)。
但是GS和RS這兩種方法總歸是盲目地搜索,所以貝葉斯優化(Bayesian Optimization,BO) 算法閃亮登場。BO算法能很好地吸取之前的超參數的經驗,更快更高效地最下一次超參數的組合進行選擇。但是BO算法也有它的缺點,如下:
- 對于那些具有未知平滑度和有噪聲的高維、非凸函數,BO算法往往很難對其進行擬合和優化,而且通常BO算法都有很強的假設條件,而這些條件一般又很難滿足。
- 為了解決上面的缺點,有的BO算法結合了啟發式算法(heuristics),但是這些方法很難做到并行化
?
二 SuccessiveHalving算法
SuccessiveHalving算法:假設有nn組超參數組合,然后對這nn組超參數均勻地分配預算并進行驗證評估,根據驗證結果淘汰一半表現差的超參數組,然后重復迭代上述過程直到找到最終的一個最優超參數組合。
?
?
三 Hyperband算法
1.Hyperband是什么
在介紹Hyperband之前我們需要理解怎樣的超參數優化算法才算是好的算法,如果說只是為了找到最優的超參數組合而不考慮其他的因素,那么我們那可以用窮舉法,把所有超參數組合都嘗試一遍,這樣肯定能找到最優的。但是我們都知道這樣肯定不行,因為我們還需要考慮時間,計算資源等因素。而這些因素我們可以稱為Budget,用𝐵表示。
假設一開始候選的超參數組合數量是𝑛,那么分配到每個超參數組的預算就是𝐵/𝑛。所以Hyperband做的事情就是在𝑛與𝐵/𝑛做權衡(tradeoff)。
上面這句話什么意思呢?也就是說如果我們希望候選的超參數越多越好,因為這樣能夠包含最優超參數的可能性也就越大,但是此時分配到每個超參數組的預算也就越少,那么找到最優超參數的可能性就降低了。反之亦然。所以Hyperband要做的事情就是預設盡可能多的超參數組合數量,并且每組超參數所分配的預算也盡可能的多,從而確保盡可能地找到最優超參數。
2.Hyperband算法
Hyperband算法對 Jamieson & Talwlkar(2015)提出的SuccessiveHalving算法做了擴展。所以首先介紹一下SuccessiveHalving算法是什么。
其實仔細分析SuccessiveHalving算法的名字你就能大致猜出它的方法了:假設有𝑛組超參數組合,然后對這𝑛組超參數均勻地分配預算并進行驗證評估,根據驗證結果淘汰一半表現差的超參數組,然后重復迭代上述過程直到找到最終的一個最優超參數組合。
基于這個算法思路,如下是Hyperband算法步驟:
- r: 單個超參數組合實際所能分配的預算;
- R: 單個超參數組合所能分配的最大預算;
- 𝑠𝑚𝑎𝑥: 用來控制總預算的大小。上面算法中𝑠𝑚𝑎𝑥=?𝑙𝑜𝑔𝜂(𝑅)?,當然也可以定義為𝑠𝑚𝑎𝑥=?𝑙𝑜𝑔𝜂(𝑛𝑚𝑎𝑥)?
- B: 總共的預算,𝐵=(𝑠𝑚𝑎𝑥+1)𝑅
- 𝜂: 用于控制每次迭代后淘汰參數設置的比例
- get_hyperparameter_configuration(n):采樣得到n組不同的超參數設置
- run_then_return_val_loss(t,ri):根據指定的參數設置和預算計算valid loss。𝐿表示在預算為𝑟𝑖的情況下各個超參數設置的驗證誤差
- top_k(𝑇,𝐿,?𝑛𝑖/𝜂?):第三個參數表示需要選擇top k(𝑘=𝑛𝑖/𝜂)參數設置。
注意上述算法中對超參數設置采樣使用的是均勻隨機采樣,所以有算法在此基礎上結合貝葉斯進行采樣,提出了BOHB:Practical Hyperparameter Optimization for Deep Learning
3.Hyperband算法例子
文中給出了一個基于MNIST數據集的示例,并將迭代次數定義為預算(Budget),即一個epoch代表一個預算。超參數搜索空間包括學習率,batch size,kernel數量等。
令𝑅=81,𝜂=3,所以𝑠𝑚𝑎𝑥=4,𝐵=5𝑅=5×81
下圖給出了需要訓練的超參數組和數量和每組超參數資源分配情況。
由算法可以知道有兩個loop,其中inner loop表示SuccessiveHalving算法。再結合下圖左邊的表格,每次的inner loop,用于評估的超參數組合數量越來越少,與此同時單個超參數組合能分配的預算也逐漸增加,所以這個過程能更快地找到合適的超參數。
右邊的圖給出了不同𝑠對搜索結果的影響,可以看到𝑠=0或者𝑠=4并不是最好的,所以并不是說𝑠越大越好。
?
PS:
https://www.cnblogs.com/marsggbo/p/10161605.html
Hyperband: Bandit-Based Configuration Evaluation for Hyperparameter Optimization
總結
以上是生活随笔為你收集整理的[机器学习]超参数优化算法-SuccessiveHalving与Hyperband的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人如何注册cn域名备案
- 下一篇: Linux系统监视工具Glances怎么