當前位置:
首頁 > 新聞 > 一文詳解神經網路結構搜索(NAS)

一文詳解神經網路結構搜索(NAS)

雷鋒網 AI 科技評論按:本文作者為東北大學自然語言處理實驗室 2018 級研究生胡馳,他的研究方向包括神經網路結構搜索、自然語言處理。雷鋒網 AI 科技評論經作者授權發表本文章。

近年來,深度學習的繁榮,尤其是神經網路的發展,顛覆了傳統機器學習特徵工程的時代,將人工智慧的浪潮推到了歷史最高點。然而,儘管各種神經網路模型層出不窮,但往往模型性能越高,對超參數的要求也越來越嚴格,稍有不同就無法復現論文的結果。而網路結構作為一種特殊的超參數,在深度學習整個環節中扮演著舉足輕重的角色。在圖像分類任務上大放異彩的 ResNet、在機器翻譯任務上稱霸的 Transformer 等網路結構無一不來自專家的精心設計。這些精細的網路結構的背後是深刻的理論研究和大量廣泛的實驗,這無疑給人們帶來了新的挑戰。

1. 經典的NAS方法

正如蒸汽機逐漸被電機取代一般,神經網路結構的設計,正在從手工設計轉型為機器自動設計。這一進程的標誌事件發生在2016年,Google發表論文Neural Architecture Search with Reinforcement Learning,他們使用強化學習進行神經網路結構搜索(NAS),並在圖像分類和語言建模任務上超越了此前手工設計的網路。如圖1所示,經典的NAS方法使用RNN作為控制器(controller)產生子網路(child network),再對子網路進行訓練和評估,得到其網路性能(如準確率),最後更新控制器的參數。然而,子網路的性能是不可導的,我們無法直接對控制器進行優化,幸好有強化學習這一利器,學者們採用了策略梯度的方法直接更新控制器參數。

一文詳解神經網路結構搜索(NAS)

圖1 經典NAS方法概覽圖

經典的NAS方法形式簡單,並且取得了令人矚目的效果,例如:在PTB語言建模任務上,NAS搜索出來的RNN模型擊敗了當時最先進的RHN網路,在測試集上取得了62.4的PPL(困惑度,越低越好)。然而受限於其離散優化的本質,這類方法有一個致命的缺點:太耗費計算資源了!例如,在CIFAR-10這麼一個小數據集上進行搜索就需要800張GPU計算3到4周,受限於當時的深度學習框架,該論文甚至專門提出了基於參數伺服器的分散式訓練框架。如此巨大的算力需求實在是令人望洋興嘆,那有沒有辦法加速搜索,讓NAS變得親民呢?首先我們來思考一下NAS為何如此耗時,在NAS中,為了充分挖掘每個子網路的「潛力」,控制器每次採樣一個子網路,都要初始化其網路權重從頭訓練,那每次採樣不重新初始化是不是就能大大減少訓練時間?為此,後面有人提出了ENAS,即Efficient NAS,顧名思義,其目的就是提高NAS的搜索效率。ENAS將搜索空間表示為一個有向無環圖(DAG),其中的任一子圖都代表了一個網路結構,每個節點代表了局部的計算,如矩陣乘法,而節點間的有向連接代表了信息的流動。所謂的權重共享,也就是不同的網路結構共享整個有向無環圖節點上的參數。如圖2所示,其中左邊是一個有向無環圖,假設紅色的連接被控制器選中,我們就可以將其轉換為右邊的網路結構,其中包含4個計算節點,而輸入輸出是固定的節點,此外激活函數也是控制器選擇出來的。ENAS提出的權重共享,極大地減少了搜索時間,使用一張GTX1080Ti只需10小時就可以完成在CIFAR-10上的搜索。

一文詳解神經網路結構搜索(NAS)

圖2 ENAS中的有向無環圖和對應的網路結構

2. NAS的發展現狀

在NAS、ENAS提出後,相關論文如同雨後春筍一般出現,神經網路結構搜索已經成為了一大研究潮流。雖然方法層出不窮,但基本都包括這三大部分:1. 定義搜索空間; 2. 執行搜索策略採樣網路; 3. 對採樣的網路進行性能評估。接下來我們從這三個方面介紹NAS的發展現狀。

搜索空間

搜索空間,即待搜索網路結構的候選集合。搜索空間大致分為全局搜索空間和基於細胞的搜索空間,前者代表搜索整個網路結構,後者只搜索一些小的結構,通過堆疊、拼接的方法組合成完整的大網路。如圖3(a)所示,早期的NAS的搜索空間是鏈式結構,搜索的內容只是網路的層數、每層的類型和對應的超參數。而後受到ResNet等網路的啟發,跳躍連接、分支結構也被引入了搜索空間中,如圖3(b)所示。搜索空間的複雜程度決定了網路結構的潛力,最近的一些工作表明,精心設計的搜索空間可以大大提高網路性能的下限,換言之,在這些空間里進行隨機搜索也能取得不錯的效果。目前最先進的方法都得益於其適當的搜索空間,而且幾乎都是類似於圖4中的細胞結構,既減少了搜索代價,也提高了結構的可遷移性。

一文詳解神經網路結構搜索(NAS)

圖3 全局搜索空間示意圖

一文詳解神經網路結構搜索(NAS)

圖4 基於細胞的搜索空間示意圖

搜索策略

搜索策略,即如何在搜索空間中進行選擇,根據方法的不同,搜索策略大致分為三種。

1. 基於強化學習的方法。強化學習被廣泛應用於連續決策建模中,該方法通過智能體(agent)與環境交互,每次agent都會執行一些動作(action),並從環境中獲得回饋,強化學習的目標就是讓回饋最大化。NAS可以很自然地被建模為一個強化學習任務,最初的NAS使用RNN作為控制器來採樣子網路,對子網路訓練、評估後使用策略梯度方法更新RNN參數。這種方法簡單可操作,易於理解和實現,然而基於策略梯度的優化效率是很低的,而且對子網路的採樣優化會帶來很大的變異性(策略梯度有時方差很大)。其實這也是無奈之舉,RNN只能生成網路描述,因而無法通過模型的準確率直接對其進行優化。同樣的策略也適用於各種其他的約束,如網路時延等各項衡量網路好壞的指標。

2. 基於進化演算法的方法。進化演算法的由來已久,該方法受生物種群進化啟發,通過選擇、重組和變異這三種操作實現優化問題的求解。Google在2017年的論文Large-Scale Evolution of Image Classifiers首次將進化演算法應用於NAS任務,並在圖像分類任務上取得了不錯的成績。該方法首先對網路結構進行編碼,維護結構的集合(種群),從種群中挑選結構訓練並評估,留下高性能網路而淘汰低性能網路。接下來通過預設定的結構變異操作形成新的候選,通過訓練和評估後加入種群中,迭代該過程直到滿足終止條件(如達到最大迭代次數或變異後的網路性能不再上升)。後續的論文Regularized Evolution for Image Classifier Architecture Search對這一方法進行了改進,為候選結構引入年代的概念(aging),即將整個種群放在一個隊列中,新加入一個元素,就移除掉隊首的元素,這樣使得進化更趨於年輕化,也取得了網路性能上的突破。

3. 基於梯度的方法。前面的方法網路空間是離散的,它們都將NAS處理為黑盒優化問題,因而效率不盡人意。如果能將網路空間表示為連續分布,就能通過基於梯度的方法進行優化。CMU和Google的學者在DARTS: Differentiable Architecture Search一文中提出可微分結構搜索方法。該方法與ENAS相同,將網路空間表示為一個有向無環圖,其關鍵是將節點連接和激活函數通過一種巧妙的表示組合成了一個矩陣,其中每個元素代表了連接和激活函數的權重,在搜索時使用了Softmax函數,這樣就將搜索空間變成了連續空間,目標函數成為了可微函數。在搜索時,DARTS會遍歷全部節點,使用節點上全部連接的加權進行計算,同時優化結構權重和網路權重。搜索結束後,選擇權重最大的連接和激活函數,形成最終的網路,DARTS的整個搜索過程如圖5所示。

一文詳解神經網路結構搜索(NAS)

圖5 DARTS在搜索時不斷優化結構權重,最終只保留一個子結構

此外中科大和微軟發表的論文Neural Architecture Optimization中提出另一種基於梯度的方法,該方法基於經典的encode-decode框架。首先將網路結構映射到連續空間的表示(embedding),這個空間中的每一個點對應一個網路結構。在這個空間上可以定義準確率的預測函數,以它為目標函數進行基於梯度的優化,這樣就可以對embedding進行優化。網路收斂後,再將這個表示映射回網路結構。這些方法與強化學習和進化演算法相比,極大提高了搜索效率,在權重共享的情況下,單卡一天就能夠完成搜索。

性能評估

性能評估,即在目標數據集上評估網路結構的性能好壞。上一節討論的搜索策略旨在找到某些性能(如準確度)最高的網路,為了引導它們的搜索過程,這些策略需要考慮如何評判給定架構的性能高低。最簡單的方法是在訓練數據上訓練每個子網路並評估其在測試數據上的表現,然而,從頭訓練這麼多結構太過耗時。上面提到過,ENAS、DARTS和NAO都使用了權重共享來代替重新初始化,並大大加速了搜索過程。除此之外,還有別的方法嗎?當然是有的,例如評估時使用數據集的一小部分、減少網路參數、訓練更少的輪數或者預測網路訓練的趨勢等,這和充分的訓練相比大大加快了速度,然而由於超參數的選擇,這樣會帶來新的問題:我們無法公平地對比網路結構。例如,有的結構在訓練早期性能突出,但最終不如其他的結構,這樣就會錯過最優的網路。

基於One-Shot的結構搜索是目前的主流方法,該方法將搜索空間定義為超級網路(supernet),全部網路結構都被包含其中。這個方法最顯著的特徵就是在一個過參數化的大網路中進行搜索,交替地訓練網路權重和模型權重,最終只保留其中一個子結構,上面提到的DARTS和ENAS就是這一類方法的代表。該類方法的本質其實是對網路結構進行排序,然而不同的網路共享同一權重這一做法雖然大大提高搜索效率,卻也帶來了嚴重的偏置。顯然,不同的神經網路不可能擁有相同的網路參數,在共享權重時,網路輸出必定受到特定的激活函數和連接支配。ENAS和DARTS的搜索結果也反應了這一事實,如圖6所示,其中ENAS搜索出來的激活函數全是ReLU和tanh,而DARTS搜索出來激活函數的幾乎全是ReLU。此外,DARTS等方法在搜索時計算了全部的連接和激活函數,顯存佔用量很大,這也是它只能搜索較小的細胞結構的原因。

一文詳解神經網路結構搜索(NAS)

圖6 ENAS(左)和DARTS(右)在PTB上搜索的RNN模型

最近的一些工作著眼於解決共享權重帶來的偏置問題和超級圖的高顯存佔用問題,並將新的搜索目標如網路延時、結構稀疏性引入NAS中。商湯研究院提出的隨機神經網路結構搜索(SNAS)通過對NAS進行重新建模,從理論上繞過了基於強化學習的方法在完全延遲獎勵中收斂速度慢的問題,直接通過梯度優化NAS的目標函數,保證了結果網路的網路參數可以直接使用。曠視研究院提出的Single Path One-Shot NAS與MIT學者提出的ProxylessNAS類似,都是基於One-Shot的方法,與DARTS相比,它們每次只探索一條或者兩條網路路徑,大大減少了顯存消耗,從而可以搜索更大的網路。其中,SNAS將結構權重表示為一個連續且可分解的分布,而ProxylessNAS將二值化連接引入NAS中。這些方法的湧現還標誌著NAS正在朝著多任務、多目標的方向前進。

3. NAS未來展望

目前NAS搜索的網路都是比較簡單的節點和激活函數的排列組合,儘管在一些任務上性能表現突出,但仍離不開繁瑣的超參數選擇。個人認為未來NAS技術的發展趨勢有這幾點:

1. 網路設計自動化:真正做到把數據丟給機器,直接獲得最優的模型,而不是依賴眾多超參數。谷歌、阿里巴巴等巨頭都早已推出了AutoML的雲服務產品,實現了隨機搜索、進化演算法和網格搜索等方法,在一定程度上達到了超參數選擇的自動化,但不能為網路設計帶來新的靈感。

2. 多目標搜索:根據不同任務,朝著多目標的方向繼續前進。這和模型的應用場景是息息相關的,例如目前手機端的模型一般都是對特定模型進行剪枝或低精度化實現,而ProxylessNAS等方法將網路時延、稀疏性納入搜索考慮的指標,提出了針對不同平台的結構搜索,使得這些工作逐漸轉型為自動化設計。不難預見,未來還會有更多的NAS工作聚焦於其他的搜索目標。

3. 大規模搜索:直接在大規模數據集上進行搜索,而不僅僅是在幾個小型數據集上搜索、強化手工設計的網路。要實現這個目標,需要在搜索空間的定義、搜索策略的制定和性能評估方法的選擇上取得關鍵性的突破。2019年初CMU學者的一篇論文Random Search and Reproducibility for Neural Architecture Search就給此前的各類NAS方法潑了一盆冷水,該論文證明了在使用權重共享的情況下,隨機搜索可以打敗ENAS、DARTS等一系列強勁的方法。

4. 拓展應用領域:儘管NAS在圖像分類、目標檢測和語義分割等圖像和視覺領域表現突出,但自然語言處理領域方面的工作寥寥無幾,現有的方法主要集中在語言建模任務,而目前Transformer及其變種在語言模型的王者地位依然無人動搖。

相關資料

1. Zoph, B., & Le, Q.V. (2017). Neural Architecture Search with Reinforcement Learning. ArXiv, abs/1611.01578.

2. Pham, H., Guan, M.Y., Zoph, B., Le, Q.V., & Dean, J. (2018). Efficient Neural Architecture Search via Parameter Sharing. ArXiv, abs/1802.03268.

3. Liu, H., Simonyan, K., & Yang, Y. (2019). DARTS: Differentiable Architecture Search. ArXiv, abs/1806.09055.

4. Xie, S., Zheng, H., Liu, C., & Lin, L. (2019). SNAS: Stochastic Neural Architecture Search. ArXiv, abs/1812.09926.

5. Guo, Z., Zhang, X., Mu, H., Heng, W., Liu, Z., Wei, Y., & Sun, J. (2019). Single Path One-Shot Neural Architecture Search with Uniform Sampling. ArXiv, abs/1904.00420.

6. Cai, H., Zhu, L., & Han, S. (2019). ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware. ArXiv, abs/1812.00332.

7. Real, E., Aggarwal, A., Huang, Y., & Le, Q.V. (2018). Regularized Evolution for Image Classifier Architecture Search. ArXiv, abs/1802.01548.

8. Real, E., Moore, S., Selle, A., Saxena, S., Suematsu, Y.L., Tan, J.Y., Le, Q.V., & Kurakin, A. (2017). Large-Scale Evolution of Image Classifiers. ICML.

9. Wistuba, M., Rawat, A., & Pedapati, T. (2019). A Survey on Neural Architecture Search. ArXiv, abs/1905.01392.

10. Li, L., & Talwalkar, A. (2019). Random Search and Reproducibility for Neural Architecture Search. ArXiv, abs/1902.07638.

作者單位信息:

東北大學自然語言處理實驗室由姚天順教授創建於 1980 年,現由朱靖波教授領導,長期從事計算語言學的相關研究工作,主要包括機器翻譯、語言分析、文本挖掘等。

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

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


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

AI晶元公司有多少種生存之道?
官宣!Google 大中華區總裁換人了

TAG:雷鋒網 |