Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

機器之心發表於2018-02-14

1. 簡介


神經架構搜尋(NAS)已成功用來設計影象分類和語言建模模型架構 (Zoph & Le, 2017; Zoph et al., 2018; Cai et al., 2018; Liu et al., 2017; 2018)。在 NAS 中,RNN 控制器進行迴圈訓練:控制器首先取樣候選架構,即一個子模型(child model),接著訓練它收斂以測量其在所需任務上的表現。控制器接著把子模型表現作為指導訊號以發現更好的架構。這一過程需要重複迭代很多次。儘管其實證表現令人印象深刻,NAS 的算力成本巨大且耗時,比如 Zoph et al. (2018) 使用 450 塊 GPUs 耗時 3-4 天(即 32,400-43,200 GPU 小時)。同時,使用的資源越少,所得結果的競爭力就越小 (Negrinho & Gordon, 2017; Baker et al., 2017a)。我們發現 NAS 的計算瓶頸是訓練每個子模型至收斂,只測量其精確度同時擯棄所有已訓練的權重。


本文研究做出的主要貢獻是通過強制所有子模型共享權重而提升了 NAS 的效率。這個想法明視訊記憶體在爭議,因為不同的子模型利用權重的方式也不同,但本文受到先前遷移學習和多工學習工作的啟發,即已確定一個特定任務的特定模型所學習的引數可用在其他任務的其他模型之上,幾乎無需做出修改(Razavian et al., 2014; Zoph et al., 2016; Luong et al., 2016)。


研究者證明,不僅子模型之間共享引數是可能的,而且表現也很出色。尤其在 CIFAR-10 上,他們的方法取得了 2.89% 的測試誤差,相比之下 NAS 為 2.65%。在 Penn Treebank 上,他們的方法實現了 55.8 的測試困惑度,明顯優於 NAS 62.4 的測試困惑度 (Zoph & Le, 2017),這是 Penn Treebank 在不使用後訓練處理的方法中所實現的一個新的當前最優結果。重要的是,在本研究所有使用單個 Nvidia GTX 1080Ti GPU 的實驗中,搜尋架構的時間都少於 16 小時。相較於 NAS,GPU 運算時間縮短了 1000 倍以上。鑑於其高效率,我們把這一方法命名為高效神經架構搜尋(ENAS)。


2. 方法


ENAS 思想的核心是觀察到 NAS 最終迭代的所有圖可以看作更大圖的子圖。換句話說,我們可以使用單個有向無環圖(DAG)來表徵 NAS 的搜尋空間。圖 2 是一個通用例項 DAG,其架構可通過採用 DAG 的子圖而實現。直觀講,ENAS 的 DAG 是 NAS 搜尋空間之中所有可能的子模型的疊加,其中節點表徵區域性計算,邊緣表徵資訊流。每一個節點的區域性計算有其自己的引數,這些引數只有當特定計算被啟用時才使用。因此在搜尋空間中,ENAS 的設計允許引數在所有子模型(即架構)之間共享。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 2:該圖表徵了整個搜尋空間,同時紅箭頭定義了其中一個由控制器決定的模型。這裡,節點 1 是模型的輸入,節點 3 和 6 是模型的輸出。


2.1 設計迴圈單元


為了設計迴圈單元,作者使用了有 N 個結點的有向無環圖(DAG),其中每個節點代表區域性運算,而每條邊代表 N 個節點中的資訊流。ENAS 的控制器是一個 RNN,它會控制:1)哪一條邊處於啟用狀態;2)在 DAG 中的每一個結點會執行哪些運算。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 1:搜尋空間中帶有四個計算節點的迴圈單元案例。左圖為對應迴圈單元的計算 DAG,其中紅色的邊代表圖中的資訊流。中間為迴圈單元。右圖為 RNN 控制器的輸出結果,它將會生成中間的迴圈單元和左邊的 DAG。注意節點 3 和 4 永遠不會被 RNN 取樣,所以它們結果是平均值,且可以作為單元的輸出。


2.3 設計卷積網路


在卷積網路的搜尋空間中,RNN 控制器在每一個決策模組上會制定兩組決策:1)前一個單元需要連線什麼;2)它需要什麼樣的運算過程。這些決策共同構建了卷積網路中的不同層級。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 3:搜尋空間中一個迴圈單元的例項執行,該空間帶有 4 個計算節點,表徵卷積網路的 4 個層。頂部:控制器 RNN 的輸出。左下:對應於網路架構的計算 DAG。紅箭頭表徵啟用的計算路徑。右下:完整的網路。虛線箭頭表徵跳躍連線。


2.4 設計卷積單元


本文並沒有採用直接設計完整的卷積網路的方法,而是先設計小型的模組然後將模組連線以構建完整的網路(Zoph et al., 2018)。圖 4 展示了這種設計的例子,其中設計了卷積單元和 reduction cell。接下來將討論如何利用 ENAS 搜尋由這些單元組成的架構。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 4:連線卷積單元和 reduction 單元,以構建完整的網路。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 5:控制器在卷積單元搜尋空間中執行的示例。上:控制器的輸出。在卷積單元的搜尋空間中,節點 1 和節點 2 是單元的輸入,因此控制器只需要設計節點 3 和節點 4。左下:對應的 DAG,其中紅邊代表啟用的連線。右下:由控制器取樣得到的卷積單元


3 實驗


3.1 在 Penn Treebank 資料集上訓練的語言模型


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 6:ENAS 為 Penn Treebank 資料集發現的 RNN 單元。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

表 1:ENAS 為 Penn Treebank 資料集發現的架構的測試困惑度以及其它的基線結果的比較。(縮寫說明:RHN 是 Recurrent Highway Network、VD 是 Variational Dropout、WT 是 Weight Tying、ℓ2 是 Weight Penalty、AWD 是 Averaged Weight Drop、MoC 是 Mixture of Contexts、MoS 是 Mixture of Softmaxes。)


3.2 在 CIFAR-10 資料集上的影象分類實驗


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

表 2:ENAS 發現的架構在 CIFAR-10 資料集上的分類誤差和其它基線結果的對比。在這個表中,第一塊展示了 DenseNet,由人類專家設計的當前最佳架構。第二塊展示了設計整個網路的方法。最後一塊展示了設計模組單元以構建大型模型的技術。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 7:ENAS 從大型搜尋空間中發現的用於影象分類的網路架構。


ENAS 用了 11.5 個小時來發現合適的卷積單元和 reduction 單元,如圖 8 所示。


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

圖 8:ENAS 在微搜尋空間中挖掘新的單元。


論文:Efficient Neural Architecture Search via Parameters Sharing


Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋


論文連結:https://arxiv.org/abs/1802.03268


我們在本文中提出高效神經架構搜尋(ENAS),這是一種高效和經濟的自動化模型設計的方法。在 ENAS 中,有一個控制器通過在一個大型計算圖中搜尋一個最優的子圖以學習發現最優神經網路架構的方法。控制器採用策略梯度進行訓練,以選擇最大化驗證集期望獎勵的子圖。同時,和所選子圖對應的模型將進行訓練以最小化標準交叉熵損失。由於子模型之間的引數共享,ENAS 的速度很快:它只需要使用少得多的 GPU 運算時間就能達到比當前的自動化模型設計方法好很多的經驗效能,尤其是,其計算成本只有標準的神經架構搜尋(NAS)的千分之一。在 Penn Treebank 資料集上,ENAS 發現了一個新穎的架構,其達到了 55.8 的測試困惑度,這是未經後處理而達到當前最佳效能的新方法。在 CIFAR-10 資料集上,ENAS 設計了一個新穎的架構,其測試誤差達到了 2.89%,與 NASNet(Zoph et al., 2018)不相上下(2.65% 的測試誤差)。Jeff Dean等人提出ENAS:通過引數共享實現高效的神經架構搜尋

相關文章