AI 科技評論按:近年來,深度學習的繁榮,尤其是神經(jīng)網(wǎng)絡的發(fā)展,顛覆了傳統(tǒng)機器學習特征工程的時代,將人工智能的浪潮推到了歷史最高點。然而,盡管各種神經(jīng)網(wǎng)絡模型層出不窮,但往往模型性能越高,對超參數(shù)的要求也越來越嚴格,稍有不同就無法復現(xiàn)論文的結果。而網(wǎng)絡結構作為一種特殊的超參數(shù),在深度學習整個環(huán)節(jié)中扮演著舉足輕重的角色。在圖像分類任務上大放異彩的ResNet、在機器翻譯任務上稱霸的Transformer等網(wǎng)絡結構無一不來自專家的精心設計。這些精細的網(wǎng)絡結構的背后是深刻的理論研究和大量廣泛的實驗,這無疑給人們帶來了新的挑戰(zhàn)。 1. 經(jīng)典的 NAS 方法
正如蒸汽機逐漸被電機取代一般,神經(jīng)網(wǎng)絡結構的設計,正在從手工設計轉型為機器自動設計。這一進程的標志事件發(fā)生在2016年,Google發(fā)表論文NeuralArchitecture Search with Reinforcement Learning,他們使用強化學習進行神經(jīng)網(wǎng)絡結構搜索(NAS),并在圖像分類和語言建模任務上超越了此前手工設計的網(wǎng)絡。如圖1所示,經(jīng)典的NAS方法使用RNN作為控制器(controller)產(chǎn)生子網(wǎng)絡(child network),再對子網(wǎng)絡進行訓練和評估,得到其網(wǎng)絡性能(如準確率),最后更新控制器的參數(shù)。然而,子網(wǎng)絡的性能是不可導的,我們無法直接對控制器進行優(yōu)化,幸好有強化學習這一利器,學者們采用了策略梯度的方法直接更新控制器參數(shù)。
圖1 經(jīng)典NAS方法概覽圖
經(jīng)典的NAS方法形式簡單,并且取得了令人矚目的效果,例如:在PTB語言建模任務上,NAS搜索出來的RNN模型擊敗了當時最先進的RHN網(wǎng)絡,在測試集上取得了62.4的PPL(困惑度,越低越好)。然而受限于其離散優(yōu)化的本質,這類方法有一個致命的缺點:太耗費計算資源了!例如,在CIFAR-10這么一個小數(shù)據(jù)集上進行搜索就需要800張GPU計算3到4周,受限于當時的深度學習框架,該論文甚至專門提出了基于參數(shù)服務器的分布式訓練框架。如此巨大的算力需求實在是令人望洋興嘆,那有沒有辦法加速搜索,讓NAS變得親民呢?首先我們來思考一下NAS為何如此耗時,在NAS中,為了充分挖掘每個子網(wǎng)絡的“潛力”,控制器每次采樣一個子網(wǎng)絡,都要初始化其網(wǎng)絡權重從頭訓練,那每次采樣不重新初始化是不是就能大大減少訓練時間?為此,后面有人提出了ENAS,即Efficient NAS,顧名思義,其目的就是提高NAS的搜索效率。ENAS將搜索空間表示為一個有向無環(huán)圖(DAG),其中的任一子圖都代表了一個網(wǎng)絡結構,每個節(jié)點代表了局部的計算,如矩陣乘法,而節(jié)點間的有向連接代表了信息的流動。所謂的權重共享,也就是不同的網(wǎng)絡結構共享整個有向無環(huán)圖節(jié)點上的參數(shù)。如圖2所示,其中左邊是一個有向無環(huán)圖,假設紅色的連接被控制器選中,我們就可以將其轉換為右邊的網(wǎng)絡結構,其中包含4個計算節(jié)點,而輸入輸出是固定的節(jié)點,此外激活函數(shù)也是控制器選擇出來的。ENAS提出的權重共享,極大地減少了搜索時間,使用一張GTX1080Ti只需10小時就可以完成在CIFAR-10上的搜索。
圖2 ENAS中的有向無環(huán)圖和對應的網(wǎng)絡結構
2. NAS 的發(fā)展現(xiàn)狀
在NAS、ENAS提出后,相關論文如同雨后春筍一般出現(xiàn),神經(jīng)網(wǎng)絡結構搜索已經(jīng)成為了一大研究潮流。雖然方法層出不窮,但基本都包括這三大部分:1. 定義搜索空間;2. 執(zhí)行搜索策略采樣網(wǎng)絡;3. 對采樣的網(wǎng)絡進行性能評估。接下來我們從這三個方面介紹NAS的發(fā)展現(xiàn)狀。
搜索空間,即待搜索網(wǎng)絡結構的候選集合。搜索空間大致分為全局搜索空間和基于細胞的搜索空間,前者代表搜索整個網(wǎng)絡結構,后者只搜索一些小的結構,通過堆疊、拼接的方法組合成完整的大網(wǎng)絡。如圖3(a)所示,早期的NAS的搜索空間是鏈式結構,搜索的內容只是網(wǎng)絡的層數(shù)、每層的類型和對應的超參數(shù)。而后受到ResNet等網(wǎng)絡的啟發(fā),跳躍連接、分支結構也被引入了搜索空間中,如圖3(b)所示。搜索空間的復雜程度決定了網(wǎng)絡結構的潛力,最近的一些工作表明,精心設計的搜索空間可以大大提高網(wǎng)絡性能的下限,換言之,在這些空間里進行隨機搜索也能取得不錯的效果。目前最先進的方法都得益于其適當?shù)乃阉骺臻g,而且?guī)缀醵际穷愃朴趫D4中的細胞結構,既減少了搜索代價,也提高了結構的可遷移性。
圖3 全局搜索空間示意圖
圖4 基于細胞的搜索空間示意圖
搜索策略,即如何在搜索空間中進行選擇,根據(jù)方法的不同,搜索策略大致分為三種。
1. 基于強化學習的方法。強化學習被廣泛應用于連續(xù)決策建模中,該方法通過智能體(agent)與環(huán)境交互,每次agent都會執(zhí)行一些動作(action),并從環(huán)境中獲得回饋,強化學習的目標就是讓回饋最大化。NAS可以很自然地被建模為一個強化學習任務,最初的NAS使用RNN作為控制器來采樣子網(wǎng)絡,對子網(wǎng)絡訓練、評估后使用策略梯度方法更新RNN參數(shù)。這種方法簡單可操作,易于理解和實現(xiàn),然而基于策略梯度的優(yōu)化效率是很低的,而且對子網(wǎng)絡的采樣優(yōu)化會帶來很大的變異性(策略梯度有時方差很大)。其實這也是無奈之舉,RNN只能生成網(wǎng)絡描述,因而無法通過模型的準確率直接對其進行優(yōu)化。同樣的策略也適用于各種其他的約束,如網(wǎng)絡時延等各項衡量網(wǎng)絡好壞的指標。
2. 基于進化算法的方法。進化算法的由來已久,該方法受生物種群進化啟發(fā),通過選擇、重組和變異這三種操作實現(xiàn)優(yōu)化問題的求解。Google在2017年的論文Large-ScaleEvolution of Image Classifiers首次將進化算法應用于NAS任務,并在圖像分類任務上取得了不錯的成績。該方法首先對網(wǎng)絡結構進行編碼,維護結構的集合(種群),從種群中挑選結構訓練并評估,留下高性能網(wǎng)絡而淘汰低性能網(wǎng)絡。接下來通過預設定的結構變異操作形成新的候選,通過訓練和評估后加入種群中,迭代該過程直到滿足終止條件(如達到最大迭代次數(shù)或變異后的網(wǎng)絡性能不再上升)。后續(xù)的論文Regularized Evolution for Image Classifier Architecture Search對這一方法進行了改進,為候選結構引入年代的概念(aging),即將整個種群放在一個隊列中,新加入一個元素,就移除掉隊首的元素,這樣使得進化更趨于年輕化,也取得了網(wǎng)絡性能上的突破。
3. 基于梯度的方法。前面的方法網(wǎng)絡空間是離散的,它們都將NAS處理為黑盒優(yōu)化問題,因而效率不盡人意。如果能將網(wǎng)絡空間表示為連續(xù)分布,就能通過基于梯度的方法進行優(yōu)化。CMU和Google的學者在DARTS:Differentiable Architecture Search一文中提出可微分結構搜索方法。該方法與ENAS相同,將網(wǎng)絡空間表示為一個有向無環(huán)圖,其關鍵是將節(jié)點連接和激活函數(shù)通過一種巧妙的表示組合成了一個矩陣,其中每個元素代表了連接和激活函數(shù)的權重,在搜索時使用了Softmax函數(shù),這樣就將搜索空間變成了連續(xù)空間,目標函數(shù)成為了可微函數(shù)。在搜索時,DARTS會遍歷全部節(jié)點,使用節(jié)點上全部連接的加權進行計算,同時優(yōu)化結構權重和網(wǎng)絡權重。搜索結束后,選擇權重最大的連接和激活函數(shù),形成最終的網(wǎng)絡,DARTS的整個搜索過程如圖5所示。
圖5 DARTS在搜索時不斷優(yōu)化結構權重,最終只保留一個子結構
此外中科大和微軟發(fā)表的論文NeuralArchitecture Optimization中提出另一種基于梯度的方法,該方法基于經(jīng)典的encode-decode框架。首先將網(wǎng)絡結構映射到連續(xù)空間的表示(embedding),這個空間中的每一個點對應一個網(wǎng)絡結構。在這個空間上可以定義準確率的預測函數(shù),以它為目標函數(shù)進行基于梯度的優(yōu)化,這樣就可以對embedding進行優(yōu)化。網(wǎng)絡收斂后,再將這個表示映射回網(wǎng)絡結構。這些方法與強化學習和進化算法相比,極大提高了搜索效率,在權重共享的情況下,單卡一天就能夠完成搜索。
性能評估,即在目標數(shù)據(jù)集上評估網(wǎng)絡結構的性能好壞。上一節(jié)討論的搜索策略旨在找到某些性能(如準確度)最高的網(wǎng)絡,為了引導它們的搜索過程,這些策略需要考慮如何評判給定架構的性能高低。最簡單的方法是在訓練數(shù)據(jù)上訓練每個子網(wǎng)絡并評估其在測試數(shù)據(jù)上的表現(xiàn),然而,從頭訓練這么多結構太過耗時。上面提到過,ENAS、DARTS和NAO都使用了權重共享來代替重新初始化,并大大加速了搜索過程。除此之外,還有別的方法嗎?當然是有的,例如評估時使用數(shù)據(jù)集的一小部分、減少網(wǎng)絡參數(shù)、訓練更少的輪數(shù)或者預測網(wǎng)絡訓練的趨勢等,這和充分的訓練相比大大加快了速度,然而由于超參數(shù)的選擇,這樣會帶來新的問題:我們無法公平地對比網(wǎng)絡結構。例如,有的結構在訓練早期性能突出,但最終不如其他的結構,這樣就會錯過最優(yōu)的網(wǎng)絡。
基于One-Shot的結構搜索是目前的主流方法,該方法將搜索空間定義為超級網(wǎng)絡(supernet),全部網(wǎng)絡結構都被包含其中。這個方法最顯著的特征就是在一個過參數(shù)化的大網(wǎng)絡中進行搜索,交替地訓練網(wǎng)絡權重和模型權重,最終只保留其中一個子結構,上面提到的DARTS和ENAS就是這一類方法的代表。該類方法的本質其實是對網(wǎng)絡結構進行排序,然而不同的網(wǎng)絡共享同一權重這一做法雖然大大提高搜索效率,卻也帶來了嚴重的偏置。顯然,不同的神經(jīng)網(wǎng)絡不可能擁有相同的網(wǎng)絡參數(shù),在共享權重時,網(wǎng)絡輸出必定受到特定的激活函數(shù)和連接支配。ENAS和DARTS的搜索結果也反應了這一事實,如圖6所示,其中ENAS搜索出來的激活函數(shù)全是ReLU和tanh,而DARTS搜索出來激活函數(shù)的幾乎全是ReLU。此外,DARTS等方法在搜索時計算了全部的連接和激活函數(shù),顯存占用量很大,這也是它只能搜索較小的細胞結構的原因。
圖6 ENAS(左)和DARTS(右)在PTB上搜索的RNN模型
最近的一些工作著眼于解決共享權重帶來的偏置問題和超級圖的高顯存占用問題,并將新的搜索目標如網(wǎng)絡延時、結構稀疏性引入NAS中。商湯研究院提出的隨機神經(jīng)網(wǎng)絡結構搜索(SNAS)通過對NAS進行重新建模,從理論上繞過了基于強化學習的方法在完全延遲獎勵中收斂速度慢的問題,直接通過梯度優(yōu)化NAS的目標函數(shù),保證了結果網(wǎng)絡的網(wǎng)絡參數(shù)可以直接使用。曠視研究院提出的SinglePath One-Shot NAS與MIT學者提出的ProxylessNAS類似,都是基于One-Shot的方法,與DARTS相比,它們每次只探索一條或者兩條網(wǎng)絡路徑,大大減少了顯存消耗,從而可以搜索更大的網(wǎng)絡。其中,SNAS將結構權重表示為一個連續(xù)且可分解的分布,而ProxylessNAS將二值化連接引入NAS中。這些方法的涌現(xiàn)還標志著NAS正在朝著多任務、多目標的方向前進。
3. NAS 未來展望
目前NAS搜索的網(wǎng)絡都是比較簡單的節(jié)點和激活函數(shù)的排列組合,盡管在一些任務上性能表現(xiàn)突出,但仍離不開繁瑣的超參數(shù)選擇。個人認為未來NAS技術的發(fā)展趨勢有這幾點:
網(wǎng)絡設計自動化:真正做到把數(shù)據(jù)丟給機器,直接獲得最優(yōu)的模型,而不是依賴眾多超參數(shù)。谷歌、阿里巴巴等巨頭都早已推出了AutoML的云服務產(chǎn)品,實現(xiàn)了隨機搜索、進化算法和網(wǎng)格搜索等方法,在一定程度上達到了超參數(shù)選擇的自動化,但不能為網(wǎng)絡設計帶來新的靈感。
多目標搜索:根據(jù)不同任務,朝著多目標的方向繼續(xù)前進。這和模型的應用場景是息息相關的,例如目前手機端的模型一般都是對特定模型進行剪枝或低精度化實現(xiàn),而ProxylessNAS等方法將網(wǎng)絡時延、稀疏性納入搜索考慮的指標,提出了針對不同平臺的結構搜索,使得這些工作逐漸轉型為自動化設計。不難預見,未來還會有更多的NAS工作聚焦于其他的搜索目標。
大規(guī)模搜索:直接在大規(guī)模數(shù)據(jù)集上進行搜索,而不僅僅是在幾個小型數(shù)據(jù)集上搜索、強化手工設計的網(wǎng)絡。要實現(xiàn)這個目標,需要在搜索空間的定義、搜索策略的制定和性能評估方法的選擇上取得關鍵性的突破。2019年初CMU學者的一篇論文RandomSearch and Reproducibility for Neural Architecture Search就給此前的各類NAS方法潑了一盆冷水,該論文證明了在使用權重共享的情況下,隨機搜索可以打敗ENAS、DARTS等一系列強勁的方法。
拓展應用領域:盡管NAS在圖像分類、目標檢測和語義分割等圖像和視覺領域表現(xiàn)突出,但自然語言處理領域方面的工作寥寥無幾,現(xiàn)有的方法主要集中在語言建模任務,而目前Transformer及其變種在語言模型的王者地位依然無人動搖。
相關資料
1. Zoph, B., & Le, Q.V. (2017). Neural Architecture Search withReinforcement 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: DifferentiableArchitecture Search. ArXiv, abs/1806.09055.
4. Xie, S., Zheng, H., Liu, C., & Lin, L. (2019). SNAS: StochasticNeural 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 UniformSampling. ArXiv, abs/1904.00420.
6. Cai, H., Zhu, L., & Han, S. (2019). ProxylessNAS: Direct NeuralArchitecture 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 ImageClassifiers. ICML.
9. Wistuba, M., Rawat, A., & Pedapati, T. (2019). A Survey onNeural Architecture Search. ArXiv, abs/1905.01392.
10. Li, L., & Talwalkar, A. (2019). Random Search andReproducibility for Neural Architecture Search. ArXiv, abs/1902.07638.
本文作者介紹:
胡馳,東北大學自然語言處理實驗室2018級研究生,研究方向:神經(jīng)網(wǎng)絡結構搜索、自然語言處理。
東北大學自然語言處理實驗室
東北大學自然語言處理實驗室由姚天順教授創(chuàng)建于1980年,現(xiàn)由朱靖波教授領導,長期從事計算語言學的相關研究工作,主要包括機器翻譯、語言分析、文本挖掘等。