解读高效的神经架构搜索ENAS
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 的設計允許參數在所有子模型(即架構)之間共享。
?
圖 2:該圖表征了整個搜索空間,同時紅箭頭定義了其中一個由控制器決定的模型。這里,節點 1 是模型的輸入,節點 3 和 6 是模型的輸出。
?
2.1 設計循環單元
?
為了設計循環單元,作者使用了有 N 個結點的有向無環圖(DAG),其中每個節點代表局部運算,而每條邊代表 N 個節點中的信息流。ENAS 的控制器是一個 RNN,它會控制:1)哪一條邊處于激活狀態;2)在 DAG 中的每一個結點會執行哪些運算。
?
圖 1:搜索空間中帶有四個計算節點的循環單元案例。左圖為對應循環單元的計算 DAG,其中紅色的邊代表圖中的信息流。中間為循環單元。右圖為 RNN 控制器的輸出結果,它將會生成中間的循環單元和左邊的 DAG。注意節點 3 和 4 永遠不會被 RNN 采樣,所以它們結果是平均值,且可以作為單元的輸出。
?
2.3 設計卷積網絡
?
在卷積網絡的搜索空間中,RNN 控制器在每一個決策模塊上會制定兩組決策:1)前一個單元需要連接什么;2)它需要什么樣的運算過程。這些決策共同構建了卷積網絡中的不同層級。
?
圖 3:搜索空間中一個循環單元的實例運行,該空間帶有 4 個計算節點,表征卷積網絡的 4 個層。頂部:控制器 RNN 的輸出。左下:對應于網絡架構的計算 DAG。紅箭頭表征激活的計算路徑。右下:完整的網絡。虛線箭頭表征跳躍連接。
?
2.4 設計卷積單元
?
本文并沒有采用直接設計完整的卷積網絡的方法,而是先設計小型的模塊然后將模塊連接以構建完整的網絡(Zoph et al., 2018)。圖 4 展示了這種設計的例子,其中設計了卷積單元和 reduction cell。接下來將討論如何利用 ENAS 搜索由這些單元組成的架構。
?
圖 4:連接卷積單元和 reduction 單元,以構建完整的網絡。
?
圖 5:控制器在卷積單元搜索空間中運行的示例。上:控制器的輸出。在卷積單元的搜索空間中,節點 1 和節點 2 是單元的輸入,因此控制器只需要設計節點 3 和節點 4。左下:對應的 DAG,其中紅邊代表激活的連接。右下:由控制器采樣得到的卷積單元。
?
3 實驗
?
3.1 在 Penn Treebank 數據集上訓練的語言模型
?
圖 6:ENAS 為 Penn Treebank 數據集發現的 RNN 單元。
?
表 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 數據集上的圖像分類實驗
?
表 2:ENAS 發現的架構在 CIFAR-10 數據集上的分類誤差和其它基線結果的對比。在這個表中,第一塊展示了 DenseNet,由人類專家設計的當前最佳架構。第二塊展示了設計整個網絡的方法。最后一塊展示了設計模塊單元以構建大型模型的技術。
?
圖 7:ENAS 從大型搜索空間中發現的用于圖像分類的網絡架構。
?
ENAS 用了 11.5 個小時來發現合適的卷積單元和 reduction 單元,如圖 8 所示。
?
圖 8:ENAS 在微搜索空間中挖掘新的單元。
?
論文:Efficient Neural Architecture Search via Parameters Sharing
?
?
論文鏈接: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% 的測試誤差)。
?
轉自:https://baijiahao.baidu.com/s?id=1592346270601400953&wfr=spider&for=pc
總結
以上是生活随笔為你收集整理的解读高效的神经架构搜索ENAS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 详解随机神经网络结构搜索 (SNAS)
- 下一篇: Windows下如何安装和使用git