谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

劉曉坤發表於2017-12-18
李飛飛最近宣佈谷歌在中國正式設立了人工智慧研究中心,參閱《剛剛,李飛飛在谷歌開發者大會宣佈谷歌 AI 中國中心正式成立》;同時她自己參與的人工智慧研究也仍在繼續出爐釋出。在本月初發布在 arXiv 上的一項研究中,來自谷歌多個部門的研究者提出了一種漸進式神經架構搜尋方法,可用於高效地搜尋 CNN 結構。該論文的第一作者為來自約翰·霍普金斯大學的谷歌實習生 Chenxi Liu,另外還有李佳、李飛飛以及《Machine Learning: A Probabilistic Perspective》作者 Kevin Murphy 等人。

論文:漸進式神經架構搜尋(Progressive Neural Architecture Search)

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

論文地址:https://arxiv.org/abs/1712.00559

摘要

我們提出了一種比之前的方法更高效的用於學習 CNN 結構的方法:我們沒有使用強化學習(RL)或遺傳演算法(GA),而是使用了基於序列模型的優化(SMBO)策略,我們在其中按複雜度逐漸增大的順序搜尋架構,同時學習一個用於引導該搜尋的代理函式(surrogate function),類似於 A* 搜尋。我們的方法在 CIFAR-10 資料集上找到了一個與 Zoph et al. (2017) 的強化學習方法有同等分類準確度(3.41% 錯誤率)的 CNN 結構,但速度卻快 2 倍(在所評估的模型的數量方面)。我們的方法的表現也優於 Liu et al. (2017) 的遺傳演算法方法,它得到的模型的表現更差(3.63% 錯誤率),而且耗時還長 5 倍。最後我們還表明我們在 CIFAR 上學習到的模型也能在 ImageNet 分類任務上取得良好的效果。尤其是我們得到的表現足以與當前最佳水平媲美:top-1 準確度達 82.9%,top-5 準確度達 96.1%。

1 引言

在這篇論文中,我們描述了一種可以學習 CNN 的方法,而且這種方法足以媲美之前的最佳結果並且在架構搜尋過程中僅需要大約一半的模型樣本。我們的起點是 Zoph et al. (2017) 所提出的結構化搜尋空間,其中搜尋演算法的任務是搜尋優良的卷積「單元」,而不是搜尋完整的 CNN。一個單元包含 B 個「模組」,其中一個模組是一個應用於兩個輸入(張量)的組合運算元(比如加法),這兩個輸入在被組合之前都可以進行變換(比如使用卷積)。然後將這種單元結構堆疊一定的次數,具體數量取決於訓練集的大小以及我們想要的最終模型的執行時間。儘管結構化空間能顯著簡化搜尋過程,但可能的單元結構的數量仍然非常巨大。因此,在更高效地搜尋這一空間的研究上還存在很多機會。

我們的方法類似於 A* 演算法(也被稱為分支限界法),其中我們從簡單到複雜搜尋模型空間,並在前進過程中剪枝處理掉沒有前途的模型。這些模型(單元)按照它們所包含的模組的數量進行排序。我們從考量帶有一個模組的單元開始。我們評估這些單元(通過訓練它們並在一個驗證集上計算它們的損失),然後使用觀察得到的獎勵來訓練一個基於 RNN 的啟發式函式(也被稱為代理函式),其可以預測任何模型的獎勵。我們可以使用這個學習到的啟發式函式來決定應該評估哪些帶有 2 個模組的單元。在對它們進行了評估之後,我們再對這個啟發式函式進行更新。重複這一過程,直到我們找到帶有所想要的模組數量的優良單元。

我們的漸進式(從簡單到複雜)方法有一些優點。首先,簡單模型的訓練速度更快,所以我們可以快速得到一些用於訓練該代理函式的初始結果。第二,我們僅要求該代理函式預測模型的質量,而這些模型與它之前已經見過的模型僅有少許不同(參考信賴域方法(trust-region method))。第三,我們將搜尋空間分解成了更小的搜尋空間的積。

總結來說,我們提出了一種用於 CNN 結構學習的方法,該方法的效率是之前最好方法的大約 2 倍,同時也實現了同等質量的結果。我們相信我們的方法能讓我們將架構搜尋擴充套件到更復雜的搜尋空間和更大的資料集。

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

圖 1:來自 Zoph et al. (2017) 的用於 CIFAR-10 和 ImageNet 的網路架構。注意我們學習的是單一一種單元型別,而沒有區分 Normal 單元和 Reduction 單元。

4 方法

4.1 漸進式神經架構搜尋(PNAS)

虛擬碼見演算法 1,解釋見圖 2。

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

圖 2:當最大模組數量 B=3 時的 PNAS 搜尋過程圖示。其中 Q_b 表示有 b 個模組的候選單元的集合。我們從所有單元有 1 個模組開始,即 Q_1=B_1;我們訓練和評估了所有這些單元,並更新了該預測器。在第 2 輪迭代時,我們擴充套件 Q_1 中的每個單元使所有單元都有 2 個模組,即 M_2=B_(1:2);我們預測它們的分數,選擇其中最好的 K 個得到 Q_2,然後訓練和評估它們並更新預測器。在第 3 輪迭代中,我們擴充套件 Q2 中的每個單元,得到帶有 3 個模組的單元的一個子集,即 M_3⊆ B_(1:3);我們預測它們的分數,選擇其中最好的 K 個得到 Q_3,然後訓練和評估它們並返回優勝者。藍色橫線表示每個集合的大小,其中 B_b = |B_b|,是在層級 b 處可能模組的數量,K 是束的大小。

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

4.2 使用編碼器 RNN 進行準確度預測

我們選擇使用一個迴圈神經網路(RNN)作為我們的預測器,因為眾所周知 RNN 很準確而且可以輕鬆應對大小會改變的輸入;此外,我們的監督式學習方法比強化學習方法要遠遠更具樣本效率。

5 實驗和結果

5.2 PNAS 的效率


谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

圖 3:NAS 和 PNAS 演算法的相對效率比較。藍色是 PNAS 訪問的前 1280 個模型在 CIFAR-10 驗證集上的驗證準確度,紅色是 NAS-RL 訪問的前 3000 個模型在 CIFAR-10 驗證集上的驗證準確度。下圖是上圖的區域性放大。PNAS 的結果呈現出 B=5 個叢集,反映了該演算法的 B 個階段。PNAS 經過 1280 個模型之後得到了 0.917 的 top-1 準確度、0.915 的平均 top-5 準確度和 0.912 的平均 top-25 準確度。NAS-RL 在經過 2280 個模型之後得到了 0.917 的 top-1 準確度、0.915 的平均 top-5 準確度和 0.913 的平均 top-25 準確度。注意這些架構搜尋演算法的平均 top 準確度是平滑變化的(有一些隨機波動)。

5.3 在 CIFAR-10 影像分類任務上的結果


谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

表 1:一些最近的結構學習方法在 CIFAR-10 上的結果;最下面的方法來自本論文。Algo 一列是這些方法所用的對應搜尋演算法的型別(RL=強化學習,EA=進化演算法。SMBO=基於序列模型的優化)。Error 一列是對應最佳模型的 top-1 分類錯誤率。Params 一列是對應的引數數量。Models 一列是為了尋找最佳模型而訓練和評估的模型的數量。我們的錯誤率以 µ±σ 的形式給出,其中 µ 是在 15 次擬合和評估每個模型的隨機試驗上的平均驗證表現,σ 是標準差。

5.4 更小模型的表現

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

圖 4:在 b∈{1, 2, 3, 4, 5} 時,PNAS 找到的在 CIFAR-10 上的最佳模型的測試表現的箱線圖。我們訓練和測試了每個模型 15 次,每次 600 epoch;所以質量的範圍(縱軸)是由引數初始化中的隨機性、SGD 優化過程等造成的。其中的橫線是 NAS-RL 單元方法所找到的最佳模型的表現,這種方法的一個單元也是 5 個模組。

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

圖 5:PNASNet-{1, 2, 3, 4} 中所用的單元的結構

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

圖 6:PNASNet-5 中所用的單元的結構

5.5 剪枝過程的有效性


谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

圖 7:測量剪枝過程的有效性。我們描繪了三個指標:(a)最高準確度、(b)平均準確度(帶有誤差範圍)、(c)在每個層級 b 的 K=256 個模型內準確度大於 0.9 的模型的數量。PNAS 是我們的演算法。Rand 是從 B_(1:b) 中隨機選擇的 K 個模型。

5.6 在 ImageNet 影像分類上的結果

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

表 2:在 Mobile 設定下的 ImageNet 分類結果

谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

表 3:在 Large 設定下的 ImageNet 分類結果

6 討論和未來研究

這項工作的主要貢獻是表明我們可以通過使用漸進式搜尋越來越複雜的圖(graph)空間來加速搜尋優良的 CNN 結構,這種方法結合了一個學習到的預測函式來高效地識別最有希望的模型並在此基礎上進行探索。結果得到的架構實現了與之前的工作同等的表現,但計算成本僅相當於之前方法的一小部分。我們希望未來能進一步提升這種搜尋的效率(比如使用基於模型的早停)並擴充套件這種技術從而可將其用於更加複雜的圖結構,比如那些用於執行目標檢測的圖結構。谷歌雲提出漸進式神經架構搜尋:高效搜尋高質量CNN結構

相關文章