機器之心專欄
作者:大俊
本文是一篇神經網絡架構搜索綜述文章,從 Search Space、Search Strategy、Performance Estimation Strategy 三個方面對架構搜索的工作進行了綜述,幾乎涵蓋了所有近幾年的優秀工作。
論文:Neural Architecture Search: A Survey連結:https://www.paperweekly.site/papers/2249作者:Thomas Elsken / Jan Hendrik Metzen / Frank Hutter
引言
深度學習模型在很多任務上都取得了不錯的效果,但調參對於深度模型來說是一項非常苦難的事情,眾多的超參數和網絡結構參數會產生爆炸性的組合,常規的 random search 和 grid search 效率非常低,因此最近幾年神經網絡的架構搜索和超參數優化成為一個研究熱點。
本文從網絡架構搜索的三個方面進行了分類綜述,包括:
搜索空間 搜索策略 評價預估
問題定義
網絡架構和超參數優化的問題,有以下的特點:
1. 評價函數未知,是一個黑箱優化問題,因為評價往往是在 unseen dataset 上進行評價;
2. 非線性;
3. 非凸;
4. 混合優化,既有離散空間,又有連續空間;
5. 一次優化結果的評價非常耗時,大型的深度學習模型參數數以億計,運行一次結果需要幾周時間;
6. 在某些應用場景中,存在多個目標。比如:移動端的模型結構優化,既希望得到儘量高的準確率,又希望有非常好的模型計算效率。
搜索空間
搜索空間定義了優化問題的變量,網絡結構和超參數的變量定義有所不同,不同的變量規模對於算法的難度來說也不盡相同。
早期很多工作都是用以遺傳算法為代表的進化算法對神經網絡的超參數和權重進行優化,因為當時的神經網絡只有幾層,每層十幾個神經元,也不存在複雜的網絡架構,參數很有限,可直接進行優化。而深度學習模型一方面有著複雜的網絡結構,另一方面權重參數通常都以百萬到億來計,進化算法根本無法優化。
但換個思路,假如我們找到了一組網絡架構參數和對應的超參數,深度學習模型的性能其實是由這組參數來控制和決定的,所以只需要對複雜模型的架構參數和對應的超參數進行優化即可。
目前常見的一種網絡架構是鏈狀結構,如下圖:
這種結構相當於一個 N 層的序列,每一層有幾種可選的算子,比如卷積、池化等,每種算子包括一些超參數,比如卷積尺寸、卷積步長等。
最近的一些工作受啟發於一些人工設計的網絡架構,研究帶有多分支的網絡,如下圖:
很多的深層 RNN 會有類似的結構,很多的網絡結構雖然很深,但會有許多重複 cell,將 cell 抽象出來之後,複雜的結構也會變得簡單,一方面可以減少優化變量數目,另一方面相同的 cell 在不同任務之間進行遷移,如下圖。
網絡架構搜索問題由於其高維度、連續和離散混合等諸多難點,在搜索空間維度這塊如果可以做些降維,將會大大提升效果,Zoph 在 2018 年的工作用了 cell 這種方式相比於 2017 年的工作有 7 倍的加速。
搜索策略
搜索策略定義了使用怎樣的算法可以快速、準確找到最優的網絡結構參數配置。常見的搜索方法包括:隨機搜索、貝葉斯優化、進化算法、強化學習、基於梯度的算法。其中,2017 年穀歌大腦的那篇強化學習搜索方法將這一研究帶成了研究熱點,後來 Uber、Sentient、OpenAI、Deepmind 等公司和研究機構用進化算法對這一問題進行了研究,這個 task 算是進化算法一大熱點應用。
註:國內有很多家公司在做 AutoML,其中用到的一種主流搜索算法是進化算法。
強化學習
強化學習是一種非常有意思的範式,幾乎只要可以提煉出強化學習四要素,原問題就可以用強化學習來求解。
在 NAS 任務中,將架構的生成看成是一個 agent 在選擇 action,reward 是通過一個測試集上的效果預測函數來獲得(這個函數類似於工程優化問題中的 surrogate model,即代理模型)。這類工作整體的框架都是基於此,不同的點在於策略表示和優化算法。
一個工作是,用 RNN 來表示策略函數,初始化時先用策略梯度算法賦初值,然後用 PPO 來進行優化。另一個工作是,用簡單的 Q-learning 算法來訓練策略函數,序列地進行動作選擇,即選擇 layer 的類型和相關的超參數。
因為在 NAS 任務中,agent 與環境沒有交互,可以降階為無狀態的多臂老虎機(MAB)問題。這裡的幾個工作都是近兩三年的新工作,後面會對這些 paper 進行專門解讀。
進化算法
進化算法是一大類算法,大概的框架也基本類似,先隨機生成一個種群(N 組解),開始循環以下幾個步驟:選擇、交叉、變異,直到滿足最終條件。最近幾年流行一種基於概率模型的進化算法 EDA (Estimation Distribution of Algorithm),基本的思路類似遺傳算法,不同的是沒有交叉、變異的環節,而是通過 learning 得到一個概率模型,由概率模型來 sample 下一步的種群。
用進化算法對神經網絡超參數進行優化是一種很古老、很經典的解決方案,90 年代的學者用進化算法同時優化網絡結構參數和各層之間的權重,因為當時的網絡規模非常小,所以還能解決,但後續深度學習模型網絡規模都非常大,無法直接優化。
進化算法是一種無梯度的優化算法(Derivative Free Optimization Algorithm),優點是可能會得到全局最優解,缺點是效率相對較低,近兩年幾家高科技企業做 NAS 時都在用進化算法優化網絡結構,同時用基於梯度的方法(BP)來優化權值。在 NAS 任務中,進化算法的交叉算子和任務結合比較緊,被定義為一些類似添加、刪除層的操作,而非簡單的更改某一位編碼。
用進化算法解決 NAS 問題,不同的工作可能聚焦在不同的過程中,比如如何 sample 種群,如何 update 種群,如何生成子代種群等。這些工作將會被在後面的文章中進行解讀。
貝葉斯優化
貝葉斯優化(Bayesian Optimization)是超參數優化問題的常用手段,尤其是針對一些低維的問題,基於高斯過程(Gaussian Processes)和核方法(kernel trick)。對於高維優化問題,一些工作融合了樹模型或者隨機森林來解決,取得了不錯的效果。
除了常見的三大類方法,一些工作也在研究分層優化的思路,比如將進化算法和基於模型的序列優化方法融合起來,取各種方法的優勢。Real 在 2018 年的一個工作對比了強化學習、進化算法和隨機搜索三類方法,前兩種的效果會更好一些。
評價預估
評價預估類似於工程優化中的代理模型(surrogate model),因為深度學習模型的效果非常依賴於訓練數據的規模,大規模數據上的模型訓練會非常耗時,對優化結果的評價將會非常耗時,所以需要一些手段去做近似的評估。
一種思路是用一些低保真的訓練集來訓練模型,低保真在實際應用可以有多種表達,比如訓練更少的次數,用原始訓練數據的一部分,低解析度的圖片,每一層用更少的濾波器等。用這種低保真的訓練集來測試優化算法會大大降低計算時間,但也存在一定的 bias,不過選擇最優的架構並不需要絕對數值,只需要有相對值就可以進行排序選優了。
另一種主流思路是借鑑於工程優化中的代理模型,在很多工程優化問題中,每一次優化得到的結果需要經過實驗或者高保真仿真(有限元分析)進行評價,實驗和仿真的時間非常久,不可能無限制地進行評價嘗試,學者們提出了一種叫做代理模型的回歸模型,用觀測到的點進行插值預測,這類方法中最重要的是在大搜索空間中如何選擇儘量少的點預測出最優結果的位置。
第三種主流思路是參數級別的遷移,用之前已經訓練好的模型權重參數對 target 問題進行賦值,從一個高起點的初值開始尋優將會大大地提高效率。在這類問題中,積累了大量的歷史尋優數據,對新問題的尋優將會起到很大的幫助,用遷移學習進行求解,是一個很不錯的思路。
另一種比較有意思的思路叫做單次(One-Shot)架構搜索,這種方法將所有架構視作一個 one-shot 模型(超圖)的子圖,子圖之間通過超圖的邊來共享權重。
思考和評論
網絡結構和超參數優化是自動機器學習(AutoML)中關鍵的一個環節,在上一個人工智慧時代,淺層神經網絡比較火的時候,自動調參也有很多工作,只不過區別在於不僅僅對超參數進行優化,還對網絡的權值一起進行了優化。
在這個人工智慧時代來臨之後,各種深度模型的效果非常好,重新點燃了這個方向的研究激情,加上強化學習的火熱,各種流派百家爭鳴。
這個領域中,今後比較有意思的研究點包括:
研究針對多任務和多目標問題的 NAS; 研究更加靈活的搜索變量表示,類似 cell 這種方便進行遷移的表示方式; 挖掘更多的、有難度的 benchmark; 遷移學習的引入,進一步提高效率。
本文作者是 Thomas Elsken,來自德國弗萊堡大學的博士生,他們組維護一個 AutoML 博客[1]。這篇綜述涵蓋了 NAS 任務近幾年幾乎所有的工作,總結地非常詳細。他們組裡還在撰寫一本 AutoML 的學術專著——AUTOML: METHODS, SYSTEMS, CHALLENGES [2]。
AutoML 相關 Paper Repo 推薦:
1. awesome-automl-papershttps://github.com/hibayesian/awesome-automl-papers2. awesome-architecture-searchhttps://github.com/markdtw/awesome-architecture-search
AutoML 相關創業公司推薦:
1. 第四範式https://www.4paradigm.com/2. 探智立方http://iqubic.net/3. 智易科技https://www.zhiyi.cn/4. 智鈾科技https://www.wisutech.com/5. 雲腦科技http://www.cloudbrain.ai/6. Sentienthttps://www.sentient.ai/
當然,Google、Microsoft、Salesforce、阿里雲也都有 AutoML 服務,很多大公司內部也都有自己的平臺,Uber、OpenAI、Deepmind 也都在 NAS 任務上做研究。從發展趨勢來看,AutoML 是未來人工智慧發展的一個重要方向,但目前現階段的研究成果成熟度和實際產品應用成熟度都存在巨大的提升空間。
相關連結
[1]. https://www.automl.org/
[2]. https://www.automl.org/book/
本文為機器之心專欄,轉載請聯繫原作者獲得授權。