搜尋一次就夠了:中科院 & 圖森提出通過稀疏優化進行一次神經架構搜尋
1. 引言
毫無疑問, 深度神經網路 (DNN)近年來一直是 AI 復興的引擎。早在 2012 年,基於 DNN 的方法就重新整理了許多 AI 應用的記錄,比如影象分類(Krizhevsky et al. (2012); Szegedy et al. (2015); He et al. (2016))、語音識別(Hinton et al. (2012); Graves et al. (2013))和圍棋(Silver et al. (2016; 2017))。考慮到深度學習驚人的表徵能力,DNN 已經將這些應用的正規化從手動設計特徵和分段流程轉向端到端學習。儘管 DNN 已經將研究人員從特徵工程(feature engineering)中解放出來,但另一件乏味的工作——「網路工程」出現了。多數情況下要根據特定任務設計神經網路,然後進入無窮盡的 超引數 調整和嘗試。因此,設計合適的神經網路架構仍然需要大量專業知識和經驗。
為了使技術更親民,研究者們提出了神經架構搜尋(NAS),或者更廣泛的說法是 AutoML。NAS 主要有兩個流派:第一個是遵循 Zoph&Le(2017)的開創性工作,他們提出了一種訓練迴圈神經網路(RNN)控制器的強化學習演算法,這個控制器可以生成編碼架構(Zoph et al. (2018); Pham et al. (2018))。第二個是進化演算法,它可以迭代地評估並提出新的評估模型(Real et al. (2017); Stanley & Miikkulainen (2002))。儘管這些模型的效能令人印象深刻,但對於像ImageNet這樣的大資料集來說,它們的搜尋過程非常耗費資源,而且很不實用。儘管已經提出了一些加速方法(Zhong et al. (2018); Pham et al. (2018))。近期,DARTS(Liu et al. (2018b))提出了一種基於梯度的方法,它通過 softmax 分類器選擇連線。儘管 DARTS 在提升了速度的情況下還實現了良好效能,但與之前的工作一樣,它的搜尋空間仍侷限於長度固定的編碼和共享塊的搜尋。
本文從另一個角度解決這些問題。我們重新設計了 NAS,使它可以刪除大型網路的無用連線。這種大型網路包含完整的網路架構假設空間,因此只要訓練和評估一個單獨的模型。由於在訓練過程中直接優化了網路結構,所以我們的方法叫做直接稀疏優化 NAS(DSONAS)。我們還進一步證明,相對於低效的強化學習或革命性搜尋,這種稀疏正則化問題可以通過改進的加速近端梯度方法得到有效優化。值得注意的是,DSO-NAS 比現有的搜尋方法都更簡單,因為它將神經網路權重學習和架構搜尋結合到一個單優化問題中。DSO-NAS 不需要任何控制器(Zoph & Le (2017); Zoph et al. (2018); Pham et al. (2018))、效能預測器(Liu et al. (2018a))或搜尋空間鬆弛化(Zoph & Le (2017); Zoph et al. (2018); Pham et al. (2018); Liu et al. (2018b))。由於其高效性和簡單性,DSO-NAS 首次證明了 NAS 可以在不共享模組結構的情況下,直接用在像ImageNet這樣的大資料集上。我們的實驗表明,DSO-NAS 在 CIFAR-10 上的平均測試誤差為 2.84%,而用 600M FLOPs 在ImageNet上得到了 25.4% 的 top-1 誤差。
總而言之,我們的貢獻總結如下:
- 我們提出了一個新模型,該模型基於稀疏優化,可以為神經架構搜尋進行修剪。在搜尋過程中只需訓練一個模型
- 我們提出了一種理論上合理的優化方法來有效地解決這個具有挑戰性的優化問題。
- 我們論證了我們提出的方法的結果極具競爭力,或者說它比其他 NAS 方法都更好,同時它還顯著簡化和加速了搜尋過程。
論文:You Only Search Once: Single Shot Neural Architecture Search via Direct Sparse Optimization
論文連結:https://arxiv.org/abs/1811.01567
摘要:近年來,神經架構搜尋(NAS)引起了學界和業界的極大興趣,但由於其搜尋空間巨大且不連續,該方法仍具挑戰性。與以往應用進化演算法和強化學習的方法不同,本文提出了直接稀疏優化 NAS(DSO-NAS)方法。在 DSO-NAS 中,我們為 NAS 問題提供了一個新的模型修剪視角。具體而言,我們從一個完全連線的模組開始,引入縮放因子來縮放運算之間的資訊流。接著,我們強行加上了稀疏正則化來刪除架構中無用的連線。最後,我們總結出了有效且理論上合理的優化方法來解決這個問題。這種方法具有可微分和高效率的優點,可以直接應用在像ImageNet這樣的大資料集上。特別是在 CIFAR-10 資料集上,DSO-NAS 的平均測試誤差只有 2.84%,而 DSO-NAS 用 8 個 GPU 在 18 個小時內以 600M FLOPs 在ImageNet資料集上得到的測試誤差為 25.4%。
動機
DSO-NAS 的思想主要遵循的是可以用完全連線的有向無環圖(DAG)表示神經網路(或其中的微小結構)的架構空間。在這個空間中的任何其他架構都可以用其子圖表示。換句話說,可以從完整的圖中選擇邊和節點的子集來獲得特定的架構。之前的工作(Zoph & Le (2017), Liu et al. (2018a), Liu et al. (2018b))關注點主要在搜尋擁有兩類塊的架構,分別是卷積塊和 reduction 塊。根據微小結構搜尋的思想,我們用完整的圖表示一個單獨的塊的搜尋空間。然後可以用一堆有殘差連線的模組表示最終的網路架構。圖 1 所示是指定塊的 DAG 示例,它的節點和邊分別表示區域性運算 O 和資訊流。
對於一個有 T 個節點的 DAG 來說,可以用區域性運算 O(i)轉化所有前驅節點(h(j),j<i)輸出的和來計算第 i 個節點 h(i)的輸出,也就是說:
然後就可以將架構搜尋問題轉變成邊緣刪除問題。在搜尋過程中,我們刪除了完整 DAG 中無用的邊和節點,留下了最重要的結構。為了實現這個目標,我們在每一條邊上用縮放因子來縮放每個節點的輸出。可以將等式 1 修改為:
式中 λ(i)(j)是用在從節點 j 到 i 的資訊流上的縮放因子。然後我們在縮放參數上用稀疏正則化在搜尋時強制將部分因子變成 0。直觀地說,如果 λ(i)(j)是 0,因為它沒有任何貢獻,所以可以安全地移除相關的邊,並刪除獨立的節點。
圖 1:可以用完全連線的 DAG 表示整個搜尋空間。節點 1 和 6 分別是輸入節點和輸出節點。虛線和虛線圓表示刪除了與它們相關的節點和邊。例如,可以通過 h(5)=O(5)(P4j=1h(j))計算節點 5 的初始輸出,但對刪除過的子圖而言,變成了 h(5)=O(5)(h(2)+h(4))。
搜尋空間
DSO-NAS 可以搜尋 DNN 中每個構建塊的結構,然後和 DNN 中所有的塊共享,就像之前的工作一樣。它也可以在不共享塊的情況下直接搜尋整個網路架構,同時還保持著極具競爭力的搜尋時間。我們在下文中將先討論每一個獨立塊的搜尋空間,再討論整個巨集架構。
一個塊由 M 個順序層組成,這些順序層又由 N 個不同運算組成。在每個塊中,每個運算都和前面層的所有運算以及塊的輸入相連線。因此,塊的輸出也和塊中的所有運算有關。對每一個連線來說,我們用乘數 λ 縮放了其輸出,並強行加了稀疏正則化。優化後,刪除了 λ 為 0 的相關連線和所有獨立的運算得到最後的架構。塊搜尋的過程如圖 2 所示。
圖 2:搜尋塊的例子,該例中有兩個 level 和兩步運算:(a)完全連線的塊。(b)在搜尋過程中,我們聯合優化了神經網路的權重以及與每一個邊都相關的 λ。(c)刪除無用的連線和操作後的最終模型。
實驗
圖 4:在不同資料集上學到的塊結構。
表 1:在 CIFAR-10 上與當前最佳的 NAS 方法的比較。
表 2:在ImageNet上與當前最佳的影象分類器的比較。
圖 5:自適應 FLOPs 技術的效能。
表 3:在 CIFAR-10 資料集上不同設定的比較。