當前位置:
首頁 > 知識 > 神經架構搜索方法知多少

神經架構搜索方法知多少

選自arXiv

作者:Martin Wistuba等

機器之心編譯

參與:李詩萌、張倩

神經架構搜索可以降低深度學習的門檻,有助於研究人員和從業人員更容易地使用深度學習。本文對現有神經架構搜索方法做了統一、分類和對比,還做了詳細的分析。本文討論了常見搜索空間以及基於強化學習原理和進化演算法的常用架構優化演算法,還有結合了代理模型和 one-shot 模型的方法。

研究人員對機器學習和深度學習自動化興趣的日益增長,促進了神經架構優化的自動化方法的發展。網路架構的選擇至關重要,深度學習中的諸多進展也源於它的即時改進。但深度學習技術是計算密集型,而且應用深度學習需要較高的領域相關相關知識。因此,即便這一過程只有部分是自動化的,也有助於研究人員和從業人員更容易地使用深度學習。

這篇文章對現有方法做了統一和分類,並對比了不同的方法,還做了詳細的分析。本文討論了常見搜索空間以及基於強化學習原理和進化演算法的常用架構優化演算法,還有結合了代理模型和一次性(one-shot)模型的方法。

此外,本文還討論了約束、多目標架構搜索、自動數據增強、優化器以及激活函數搜索等新的研究方向。

引言

在過去的兩年中,機器學習領域一直在研究自動化搜索過程。可以這麼說,Zoph 和 Le 的工作(2017)是這項研究工作開始的標誌,他們的工作證明強化學習演算法可以發現好的架構。此後不久,Real et al.(2017)表示,研究至今的神經進化方法(Floreano et al.,2008)也可以得到類似的結果。

但這兩種搜索方法都要用 GPU 運行幾千小時。因此,後續工作都試圖降低這種計算負擔。沿著這條思路,許多成功的演算法都利用了重用已經學習好的模型參數的原則,其中最令人矚目的是 Cai et al.(2018a)和 Pham et al.(2018)的工作。Cai et al.(2018a)提出可以從一個簡單的架構開始搜索,通過功能保留的操作逐步增加搜索的寬度和深度。

現在更流行也更快的搜索方法是 Pham et al.(2018)提出的,他們構造了包含搜索空間中所有架構的過參數化架構。在演算法的每一個時間步上,都會對這個大型架構中的一小部分進行採樣和訓練。訓練完成後,抽樣得到的架構可以共享訓練權重,這樣就可以將搜索的工作量減少到和訓練單個架構差不多的水平。

搜索空間的設計構成了神經架構搜索的另一個重要組成部分。除了加快搜索過程外,這還會影響搜索的持續時間和搜索得到的解決方案的質量。在神經架構搜索的早期工作中,設計空間主要是為了搜索順序架構的。但隨著手工構建的分支架構已經在性能上超越了傳統網路,因此剛發表不久後就提出了合適的搜索空間,並且這些空間已經成為了該領域的規範(Zoph et al.,2018)。

在這些工作取得進展的同時,研究人員拓寬了神經架構搜索的視野,希望神經架構搜索可以減少搜索時間,降低發現架構的泛化誤差。可以同時處理多個目標函數的方法開始進入人們的視野。這方面值得注意的工作包括為了將模型部署在移動設備上,試著限制模型參數數量(Tan et al.,2018;Kim et al.,2017)或其他部分。此外,已經開發的架構搜索技術也已經擴展到深度學習其他相關組件的高級自動化上了。例如,激活函數的搜索(Ramachandran et al.,2018)以及合適的數據增強(Cubuk et al.,2018a)。

目前,以神經架構搜索的形式實現深度學習自動化是機器學習領域發展最快的方向之一。每周在 arXiv.org (http://arxiv.org/) 和主流會議刊物上都會出現一些有趣的工作,因此人們很容易迷失方向。

本文總結了現有方法。我們可以通過這樣的總結辯證地審視不同的方法,並理解不同組件的好處,這些組件有助於神經架構搜索的設計與成功。在這一過程中,作者還試圖消除一些常見的誤解,並指出當前架構搜索趨勢中的一些陷阱。作者還做了適當的實驗補充自己的想法。

神經架構搜索空間

神經架構搜索空間是神經架構一般定義的子空間。其運算空間是有限的,而且可以對架構施加一定的約束。本文接下來用搜索空間指代神經架構搜索方法的可行方案的集合。

全局搜索空間

全局搜索空間中的實例(instances)在運算方面有很大的自由度。可以假設一個架構模板,它限制了架構定義中所允許的結構選擇的自由。這個模板一般是用來修復網路圖的某些方面的。

圖 1 展示了模板約束搜索空間的架構樣例。

圖 1:全局搜索空間:(a)順序搜索空間;(b)和跳躍(skips)相同;(c)架構模板,只有深藍色運算之間的連接沒有修復。

Tan et al.(2018)的另一項工作是找到可以部署在移動設備上的神經網路模型,該模型可以在準確性、推理時間以及參數數量等多個方面高效地執行。他們以此為目的設計了合適的搜索空間,該空間由具有層級表徵的架構組成。

圖 2:Tan et al.(2018)提出將架構分解成不同部分。每一部分 i 都有自己的模式(藍色運算),這一部分會重複 n_i 次並有 f_i 個過濾器。

基於單元(cell-based)搜索空間

cell-based 搜索空間建立在一個觀察結果之上,即許多有效的手工架構都基於重複的固定結構。這樣的架構一般是較小的圖堆疊起來形成的較大的架構。在文獻中,一般將這些重複結構稱為單元(cell 或 unit)或塊(block)。在本文中用 cell 指代這樣的結構。

在 cell-based 搜索空間中,網路是通過在模板定義的、預先指定好的排列中重複 cell 結構來構建的。如圖 3 所示,cell 一般是一個小的有向無環圖。

圖 3:NASNet 搜索空間實例的結構。n 個正常單元(normal cell)後面跟著一個縮減單元(reduction cell)。這樣的序列會重複幾次,縮減單元也可能會重複。

圖 4 展示了 cell 結構可視化的例子。

圖 4:以 NASNet-A 架構的縮減單元(Zoph et al.,2018)為例,展示一個 cell 在 NASNet 搜索空間中是什麼樣子。可以將 block 用做其他 block(如 block 1 和 block 3)的輸入,未使用的 block 連在一起成為 cell 的輸出。

已經可以用 cell-based 設計範式來定義適用於移動設備的搜索空間了。Dong et al.(2018)提出了一個專門滿足這類需求(比如參數較少的目標和更少的推理時間)的搜索空間。

圖 7:Dong et al.(2018)用的移動搜索空間。包括 cell 在內的整個網路都是密集連接的。

全局搜索空間 vs. cell-based 搜索空間

cell-based 搜索空間,尤其是 NASNet 搜索空間,是開發新方法時最常用的選擇。大多數研究這兩個搜索空間的工作都提供了經驗證據支持這一選擇,這些經驗證據表明 cell-based 搜索空間可以得到更好的結果。

無論如何,cell-based 搜索空間得益於發現的架構可以很容易地跨數據集遷移。此外,通過改變過濾器和單元的數量,幾乎可以任意改變架構的複雜性。

通常,全局搜索空間中的架構不會顯示上面說的所有這些屬性,但是某些情況也可能會從中受益。例如,可以改變過濾器的數量自然地修改架構,但要想將發現的架構轉移到輸入結構不同的新數據集或深化體系結構並不是一件容易的事。

優化方法

響應函數 f 的優化是一個全局黑箱優化問題。接下來將會討論幾種基於強化學習、進化演算法等的優化策略。

強化學習

強化學習對於順序決策過程的建模是很有用的,在這個過程中,智能體(agent)和環境交互的唯一目標是最大化未來收益。

圖 9:強化學習演算法的一般框架。

時序差分學習(Temporal Difference Learning):像 SARSA、TD-λ 和 Q-learning 這樣的方法都試著通過近似最優值函數隱式地找出這種策略。然後根據最優值函數將最優策略定義為貪心策略。最優值函數 v ? (s) 和 q ? (a, s) 滿足 Bellman 最優標準。

策略梯度方法(Policy Gradient Methods):RL 中的其他替代方法(統稱為策略梯度方法)不適用價值函數,而是直接學習由參數集合 πθ(a|s) 定義的策略。這些方法在不顯式參考價值函數的情況下選擇動作(action)。

基於 Q-Learning 的優化: Baker et al.(2017)是最早提出用基於 RL 的演算法進行神經架構搜索的人之一。他們在設計演算法時結合了 Q-learning、ε-greedy 和經驗回放(Experience replay)。他們方法中的動作是選擇要添加到架構中的不同層,以及終止構建架構並將它認定為已經完成的運算。

基於策略梯度方法的優化:基於策略梯度方法的替代方法也已經用在神經架構搜索中了。Zoph 和 Le(2017)是第一個研究這種建模方法的。他們直接針對控制器建模,可以將控制器的預測值視為構建神經架構的動作。

圖 10:Zoph 和 Le(2017)用控制器預測一層的結構(圖中沒有呈現跳躍連接(skip connection)的預測值)。

進化演算法

進化演算法(Evolutionary algorithms,EA)是基於種群的黑箱函數全局優化器,它必需的組件有:初始化(initialization)、父代選擇(parent selection)、重組(recombination)與變異(mutation)以及新代選擇(survivor selection)。

圖 11:進化演算法的一般框架。

在這一工作的背景下,本文討論了六個基於 EA 的神經架構搜索的重要工作。表 1 中對這些方法做了簡單的概述。

表 1:用於神經架構搜索的各種進化演算法的高級細節。

基於代理模型的優化

顧名思義,基於代理模型的優化器用代理模型 f hat 來近似響應函數 f。就神經架構搜索而言,這可以近似響應不在訓練步消耗時間且能提升整個搜索過程效率的架構。將該代理模型建模為機器學習模型,在元數據集上進行訓練,這個元數據集中包含架構描述以及對應的響應函數值。

Luo et al.(2018)用了一種有趣的方式。他們共同學習了用於架構表徵的自動編碼器和代理模型,該代理模型用自動編碼器提供的連續編碼,即架構代碼作為輸入(圖 15)。

一個關鍵的區別在於,他們的搜索演算法使用代理模型,通過對架構代碼執行梯度步驟來採樣新的架構。

圖 15:Luo et al.(2018)提出結合自動編碼器和代理模型。這個模型通過共同學習實現了 α≈α ? 和 f(α)≈f ?(α)

one-shot 架構搜索

將在搜索過程中只訓練一個單一神經網路(single neural network)的架構搜索方法定義為 one-shot。然後該神經網路在整個搜索空間中推導出一個架構,將其作為優化問題的解決方案。大多數用 one-shot 方法考慮的架構都是基於過參數化網路的。

這類方法的優點是搜索工作量相對較低——只比搜索空間中一個架構的訓練成本略高一點。正如我們後面要討論的,這個方法可以和之前討論過的許多優化方法結合在一起。

權重共享(Weight Sharing):Pham et al.(2018)在 NASNet 搜索空間(見 2.2)的子空間中進行搜索,並在覆蓋了整個搜索空間的過參數化網路上進行運算。

圖 17:左圖:特定深度的卷積神經結構的一部分。圖中展示了尺寸不同(如 4 和 8)的運算。卷積神經結構的深度是任意的。右圖:在順序搜索空間中只有兩步運算的權重共享示例。

可微架構搜索:Liu et al.(2018c)提出了一種替代的優化方法,這種方法用基於梯度的優化方法使訓練集損失最小化,學習了模型 θ 的參數;又使驗證集損失最小化,學習了結構參數 β。

超網路(Hypernetworks):Brock et al.(2018)提出可以使用動態超網路(dynamic hypernetworks,Ha et al.,2017),這是一種可以根據一個變數條件(在這種情況下是架構描述)為另一個神經網路生成權重的神經網路。經過訓練的超網路可以生成各種架構的網路權重。它可以用超網路對不同架構排序,並衍生出最終架構,然後再從頭開始訓練。這一方法還可以共享權重,但大多數權重都在超網路中共享。

總結

表 2 給出了不同演算法在 CIFAR-10 基準數據集上完成分類任務得到的結果。

表 2:本文討論的不同搜索演算法在 CIFAR-10 上得到的結果以及所需搜索時間。此外,上表還列出了各種隨機搜索和人工設計的架構得到的結果。

論文鏈接:https://arxiv.org/abs/1905.01392

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

科大訊飛的To C 能走多遠?
ARM停止授權,華為迎來最嚴峻挑戰,任正非:投資千億打造全球最強信息產業

TAG:機器之心 |