AutoML 是 Google 最新的産品,能夠根據問題自動确定最優參數和網絡結構。本文章就關注解析 AutoML 背後的技術,由于 AutoML 缺乏技術文檔,我們的解析有不到之處,還請多多更正。
羅馬不是一天建成的。AutoML 并非一蹴而就,而是 Google 的研究者在過去幾年不斷思考中産生的理論與實踐結合的完美産物。下圖是 Google 的 AutoML 探索之路。

人工網絡結構搜尋(Inception-ResNet 與 Inception V4)
Alexnet 在 IMAGENET 取得冠軍之後,Google 意識到了深度學習是未來的趨勢,于是投入巨資進行神經網絡的研究。從 Deepmind 被收購,Hinton 加入 Google,Tensorflow 的開源中可見 Google 對于 Deep Learning 的重視與遠見。Google 在不斷的調參數中發現了著名的 Inception 網絡,并且結合 ReNet,發現了 Inception-ResNet,V4 和 Xception。這些發現讓 Google 注意到了神經網絡結構會對結構産生巨大影響,但是找到最優的結構需要耗費大量的人力和物力,并且對于一個新的資料集還需要投入同樣的資源搜尋合适的結構,這樣的人工搜尋是不能夠 scalable 的。Inception-ResNet 的網絡結構請參考論文:https://arxiv.org/pdf/1602.07261.pdf。Inception 系列網絡跟 ResNet 的結果比較。
神經網絡搜尋初探:Neural Architecture Search with Reinforcement Learning(ICLR 2017 Best Paper)
為了增加網絡結構搜尋的 scalability,Google Residency Program 的成員 Barrret Zoph 在 Quoc Le 的帶領下開始了神經網絡自動調參的嘗試,Neural Architecture Search with Reinforcement Learning 就是對這一工作的總結。該論文獲得了 ICLR 2017 的 Best Paper。Barret Zoph 的工作成功在 CIFAR 和 PTB 上面搜尋到了 state-of-the-art 的 CNN 和 LSTM 結構,最優 CNN 與 LSTM 結構對比如下:
Barret Zoph 使用強化學習進行網絡結構搜尋,網絡架構圖如下圖:
Controller 是由 RNN 構成能夠産生每層網絡的 Kernel 大小和 skip connection 的連接配接,産生了網絡結構之後,使用網絡結構的準确率作為 Reward function。Controller 會根據 reward function 的回報進行網絡結構調節,最後會得到最優的網絡結構。Controller 生成網絡結構預測如下圖:
本篇論文會對 controller 預測的網絡進行 SGD 學習,網絡收斂之後的準确率為 Reward,然後使用 reinforcement learning 的 policy gradient 進行 controller 權值更新,policy gradient 公式如下:
期望值用下面的公式進行近似:
為了保證訓練穩定,引入了 baseline,公式如下:
為了保證收斂速度,作者引入了 asynchronous 權值更新,在每個 GPU 中配置設定多個網絡結構進行訓練,跟 asynchronous reinforcement learning 的 idea 類似。該論文的 distribution 結構如下圖:
本篇論文能夠避免手動調參數,但是得到網絡搜尋需要 800GPU 搜尋幾個月的時間,最近 Google 使用 P100 可以在一周左右訓練出模型,本論文僅僅在 CIFAR 上面進行實驗,在大規模資料集 IMAGENET 上面的使用受限。
Large Scale Evolution of Image Classifiers(ICML 2017)
本篇論文通過 large scale evolution 的辦法來搜尋最優的神經網絡,由于本人能力有限,我們不對這篇論文進行技術解析。該論文的結構搜尋過程如下圖:
有趣的現象是,evolution 搜尋偏向于沒有 skip connection 的神經網絡。通過 evolution 辦法搜尋到的神經網絡比 ResNet 結果好,但是低于 DenseNet,如下圖:
神經網絡搜尋技術實用之路探索
為了讓結構搜尋的工作能夠實用,Google 的研究者從 progressive Search,Transferable architecture 和 Bayesian 的角度進行探索,并且取得了進展。
Progressive Neural Architecture Search(PNAS)
本篇論文提出了通過 progressive 的辦法進行網絡搜尋,會比 RL 方法快 2 倍,比 evolution 方法快 5 倍。
與之前的方法不同,本篇論文是在一個網絡的基礎上面加上新的 cell,然後使用類似與 A*搜尋(Branch and Bound)的辦法,搜尋到最優的網絡結構。Progressive 方法示意圖如下:
PNAS 所使用的 Cell 結構如下:
Learning Transferable Architecture for Scalable Image Recognition
本篇論文是集大成者,Barret Zoph 在之前全部技術的基礎上面,成功地将自動結構搜尋在 IMAEGNET,COCO 等實用性的物體分類和檢測任務上面成功運用。結果太 AMAZING 啦。竟然超過了 ResNet-FPN,COCO 物體檢測結果如下:
Barret Zoph 首先在 CIFAR 上面使用之前的方法搜尋出最優 cell,然後将 cell 重複的運用在 IMAGENET 上面(真的就是這麼簡單有效 >_<)。最優單個 cell 的結構如下圖:
可能 AutoML 用的就是這種技術吧。
總結
Google 在大規模的調參中發現了手動調參不能夠适應大資料時代的需求。于是進行從 reinforcement learning 和 evolution 兩個角度進行了自動調參的初探。為了改進網絡結構搜尋的時間,Google 提出了 Progressive Search 和 Transferable Architecture 的辦法。從中我們可以感受到 Google 一步一個腳印的做事方法,希望 AI 公司和個人都能夠從中獲得一些收益 >_<。
from:http://tech.ifeng.com/a/20180202/44868903_0.shtml