【論文筆記系列】AutoML:A Survey of State-of-the-art (下)


【論文筆記系列】AutoML:A Survey of State-of-the-art (上)

上一篇文章介紹了Data preparation,Feature EngineeringModel Selection,這篇文章會繼續介紹后面的內容。

4. Model Generation

4.2 Hyperparameters optimization

下圖很直觀地展示了網格搜索(grid search)和隨機搜索(random search)的區別,可以看到參數可以分為重要參數(藍色區域)和非重要參數(黃色區域),同樣是9次試驗,隨機搜索能測試更多種重要參數。

Grid&Random Search

為了解決網格搜索的缺點,Hsu【1】等人提出我們可以先用比較粗獷的grid來搜索出一個表現較好的區域,然后在這個區域繼續用細膩度的網格搜索,這樣提高搜索效率。 Hesterman等人【2】提出contracting-grid search算法,大概的思路就是先計算出網格里每個店的似然估計值,然后我們在以最大值的點為中心生成一個新的網格,新網格中每個點之間的間距是之前網格的一半,然后重復上述步驟直到收斂。

當然隨機搜索也有人提出改進算法,其中比較經典的就是Hyperband【3】,這個算法主要貢獻是在計算資源和表現結果之間做了權衡,因為我們知道你搜索的時間越長,當然越有可能找到最佳的參數,但是這不現實,因為時間和計算資源有限,具體的細節可以閱讀這篇文章機器學習超參數優化算法-Hyperband。還有人進一步提出了BOHB,即把貝葉斯和hyperband做了結合,這里不做展開。

4.2.2 進化算法

進化算法的步驟如下圖示(涉及到的細節比較多,感興趣的可以看看論文):

Evolution-based Algorithm

1)Selection

假設我們初始時候一共有10個,我們第一步就是selection,即選擇一部分(比如50%)網絡作為父網絡來生成子網絡,選擇的方式主要有三種:

  • fitness selection
  • rank selection
  • tournament selection

2)Crossover

這一步就是parent網絡兩兩配對,類似於染色體結合,雙方各自提供一部分結構用於生成后代。但是網絡模型如何crossover呢?這就需要對模型編碼,編碼方式大體有兩種:

  • 一種就是binary encoding,即0100101..., 每一位代表什么意思可以自己定,這種編碼做crossover很好理解,比如說可以設置為二進制運算,異或運算等等,這個可以自己設置。
  • 還有一種編碼方式是cellular encoding,這其實是一種tree結構,所以這種結構做crossover就是對sub-tree做替換。

3)mutation

這個就是我們常說的 (基因)突變,這也是為了讓模型結構更加豐富,binary encoding很簡單,就是0變1,1變0,當然突變是有一定概率的,這個也需要我們設置。當然除了point mutation,我們也可以設置一段序列突變等等,方式很多種,具體詳見論文。不過總的來說無非就是變了兩種結構:一是不同層之間的連接做了變化,另一種就是對某一層的具體運算操作做了突變。

4)update

因為計算資源有限,我們如果無限制地生成新的網絡而不把舊的網絡去掉,那么內存會爆炸啊,不過也有特例,按照這篇論文【4】介紹的,他們就沒有刪除任何模型。所以總結起來更新一共有三種策略:

  • 去掉表現最差的若干個模型
  • 去掉最久遠的若干個模型
  • 定期丟掉所有模型(這個也是蠻極端的。。。)

4.2.3 Bayesian optimization

前面幾種優化算法都是靠運氣,貝葉斯優化呢則是對之前實驗結果建模來預測下一次優化方向,大致的算法思路如下:

Bayesian optimization

更多的可以閱讀原文或者閱讀這篇文章貝葉斯優化(Bayesian Optimization)深入理解

4.2.4 Reinforcement learning

最開始提出NAS的文章【5】就是用了強化學習思想,后續基於強化學習的算法也大都遵循下圖的計算邏輯,即一個agent來生成新的網絡結構,這個agent通常是一個RNN網絡;之后生成的模型在訓練集上訓練一段時間,之后在驗證集上進行測試得到reward(例如准確率),這個reward就會被拿來更新agent。

Reinforcement learning

大致上的區別就是使用的強化學習算法不同:

  • 【5】使用的是policy gradient algorithm
  • 【6】使用PPO算法
  • 【7】MetaQNN使用Q-learning算法

但是上述算法效率都不太高,而ENAS的提出極大地提高了強化學習算法的效率,按ENAS【8】的說法是它比【4】提高了將近1000倍,具體算法介紹可以閱讀論文筆記系列-Efficient Neural Architecture Search via Parameter Sharing

4.2.5 Gradient descent

前面算法都是在離散空間中搜索和優化,而DARTS【9】的提出將連續優化成為可能,后面很多連續優化也是基於這個算法,更多細節可以閱讀原論文和論文筆記系列-DARTS: Differentiable Architecture Search

DARTS

當然DARTS也有缺點,其一是每次計算會把所有操作都納入計算圖中,這會使得顯存占用爆照,所以很難搜索較大的模型,ProxylessNAS用BinaryConnect來解決內存占用大的問題,SNAS的思想很接近,是用one-hot方式來選擇概率最高的一個操作進行計算。另一個問題就是DARTS在搜索后期會傾向於Skip-connection這個操作,這個操作一旦過多會導致模型參數變深,但是參數變少,反而會使得模型性能降低,所以 DARTS+ 提出了earl-stopping來解決這個問題,P-DARTS也是用類似的方法來抑制skip-connection數量。

5. Model Estimation

模型生成好了,就得評估它的好壞。比較簡單粗暴的方式就是生成一個模型后,把這個模型訓練至收斂,然后在驗證集上評估,但是這種方式耗時耗力,所以有不少方法來加速評估。

5.1 Low-fidelity

一種就是降低fidelity,比如FABOLAS【10】使用訓練集的子集來訓練和評估模型,還有的降低輸入圖像的分辨率來加速。這篇文章【11】則是通過將多個low-fidelity做ensemble,這樣既保證了評估的准確性,又提高了效率。還有其他方法可以詳見論文。

5.2 Weight-sharing

前面提到的ENAS就是通過weight sharing來提高了模型訓練和評估的速度,Single-path NAS【12】也是類似的思路。

5.3 Surrogate

這個簡單理解就是用另外一個模型來預測生成的模型的好壞,比如PNAS【13】就是這個方法的代表。

5.4 Early-stopping

前面提到的 DARTS+ 是使用早停機制來控制skip-connection的數量,早停機制也可以用來加速評估,避免浪費時間和過擬合。比如【14】則通過學習擬合出learning curve來判斷什么時候停止。

5.5 Resource-aware

之前不少NAS算法只關注找到表現好的模型,而忽略了模型大小,因為說到底我們找模型是為了應用到實際,而很多情況是希望能移植到移動設備上,所以也有很多方法把resource納入了考慮,比較受關注的方法是MnasNet,這是Google提出的,它的設計思路也成了后面很多方法的范式。那么如何設計resource-aware的模型呢?一種就是想MnasNet一樣,它借鑒了MobileNet的設計思路,指定operation為MBConv,這種設計方式使得參數量少,而且效果還不錯。另一種就是在loss函數中加入約束項。這個約束項的值可以是1)模型參數大小;2)Multiply-ACcumulate (MAC) 計算數量;3)FLOPs數量;4)模型在真實設備上的延遲。比如MONAS【15】是一個基於強化學習的算法,所以它直接MAC加入到reward function中來控制模型大小。而對於基於梯度更新的算法,顯然不能直接在loss中加上這個常數,因為你求導等於0,並沒有什么貢獻。MnasNet則是通過設計了一種自定義的loss函數來使得可求導,公式為:

\[\underset{m}{\operatorname{maximize}} \quad A C C(m) \times\left[\frac{L A T(m)}{T}\right]^{w} \]

where \(w\) is the weight factor defined as:

\[w=\left\{\begin{array}{ll} {\alpha,} & {\text { if } L A T(m) \leq T} \\ {\beta,} & {\text { otherwise }} \end{array}\right. \]

FBNet是通過查表的方式來獲得每個操作的延遲時間,SNAS中延遲與網絡結構線性相關,這樣便可以求導了。

6. NAS Performance Summary

這一章是對NAS算法在CIFAR10上做比較,結果如下:

NAS Performance Summary

在CIFAR10和PTB上與人類設計SOTA模型比較:

image.png

7. Open Problems and Future Work

  • 完整的pipeline系統

即真正地實現端到端的AutoML Pipeline系統,這個應該終極目標。

  • 可解釋性
  • 可復現性
  • 編碼方式

現在很多NAS算法對網絡模型的編碼都是基於人類的經驗設計的,有沒有一種更廣泛通用的編碼方式找到跳脫與人類思維的結構呢?比如說Transformer這種復雜的結構用現如今的NAS技術肯定是找不出來的。

  • 應用到更多領域

目前NAS更多的是應用在計算機視覺上,在其他領域還有待開發

  • lifelong learning

結語

通過博文的方式來介紹論文總會丟失一些細節,因此對某個部分感興趣的還是推薦自己去閱讀一下原文。也希望論文和這兩篇博文能夠幫助大家對AutoML有一個比較全面的了解,當然如果文章中有任何問題也歡迎指出,如果你在AutoML中也發表了一些成果也歡迎留言或者私戳我,我們在審核后也會更新的論文里去,謝謝!

參考

  • 【1】C.-W. Hsu, C.-C. Chang, C.-J. Lin et al., “A practical guide to support vector classification,” 2003
  • 【2】J. Y. Hesterman, L. Caucci, M. A. Kupinski, H. H. Barrett, and L. R. Furenlid, “Maximum-likelihood estimation with a contracting-grid search algorithm,” IEEE transactions on nuclear science, vol. 57, no. 3, pp. 1077–1084, 2010.
  • 【3】L. Li, K. Jamieson, G. DeSalvo, A. Rostamizadeh, and A. Talwalkar, “Hyperband: A novel bandit-based approach to hyperparameter optimization.”
  • 【4】H. Liu, K. Simonyan, O. Vinyals, C. Fernando, and K. Kavukcuoglu, “Hierarchical representations for efficient architecture search,” in ICLR, p. 13.
  • 【5】Neural Architecture Search with Reinforcement Learning
  • 【6】B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le, “Learning transferable architectures for scalable image recognition.
  • 【7】B. Baker, O. Gupta, N. Naik, and R. Raskar, “Designing neural network architectures using reinforcement learning,” vol. ICLR
  • 【8】H. Pham, M. Y. Guan, B. Zoph, Q. V. Le, and J. Dean, “Efficient neural architecture search via parameter sharing,” vol. ICML.
  • 【9】H. Liu, K. Simonyan, and Y. Yang, “DARTS: Differentiable architecture search.”
  • 【10】A. Klein, S. Falkner, S. Bartels, P. Hennig, and F. Hutter, “Fast bayesian optimization of machine learning hyperparameters on large datasets.”
  • 【11】Y.-q. Hu, Y. Yu, W.-w. Tu, Q. Yang, Y. Chen, and W. Dai, “Multi-Fidelity Automatic Hyper-Parameter Tuning via Transfer Series Expansion ,” p. 8, 2019.
  • 【12】D. Stamoulis, R. Ding, D. Wang, D. Lymberopoulos, B. Priyantha, J. Liu, and D. Marculescu, “Single-path nas: Designing hardware-efficient convnets in less than 4 hours,”.
  • 【13】C. Liu, B. Zoph, M. Neumann, J. Shlens, W. Hua, L.-J. Li, L. Fei-Fei, A. Yuille, J. Huang, and K. Murphy, “Progressive neural architecture search.”
  • 【14】T. Domhan, J. T. Springenberg, and F. Hutter, “Speeding up automatic hyperparameter optimization of deep neural networks by extrapolation of learning curves,” in Twenty-Fourth International Joint Conference on Artificial Intelligence, 2015.
  • 【15】C.-H. Hsu, S.-H. Chang, J.-H. Liang, H.-P. Chou, C.-H. Liu, S.-C. Chang, J.-Y. Pan, Y.-T. Chen, W. Wei, and D.-C. Juan, “Monas: Multi-objective neural architecture search using reinforcement learning,” arXiv preprint arXiv:1806.10332, 2018.



微信公眾號:AutoML機器學習
MARSGGBO原創
如有意合作或學術討論歡迎私戳聯系~
郵箱:marsggbo@foxmail.com



2020-02-11 12:06:24




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM