神經架構搜索研究指南,只看這一篇就夠了

從訓練到用不同的參數做實驗,設計神經網絡的過程是勞力密集型的,非常具有挑戰性,而且常常很麻煩。但是想象一下,如果能夠將這個過程實現自動化呢?將這種想象轉變爲現實,就是本指南的核心內容。

我們將探索一系列的研究論文,這些論文試圖解決具有挑戰性的自動化神經網絡設計任務。在本指南中,我們假設讀者嘗試過使用Keras或TensorFlow等框架從頭開始設計神經網絡。

基於強化學習的神經結構搜索(2016:Neural Architecture Search with Reinforcement Learning

本文利用遞歸神經網絡(RNN)生成神經網絡的模型描述。爲了提高RNN在驗證集上的精度,作者對RNN進行了強化學習訓練,該方法在CIFAR-10數據集上的錯誤率爲3.65。

本文提出的神經結構搜索是基於梯度的。本文提出的方法是基於以下考慮:神經網絡的結構和連通性可以用變長串來描述。被稱爲控制器的神經網絡用於生成這樣的字符串。然後,字符串指定的子網絡根據真實數據進行訓練,並在驗證集上得到初始的準確度度量。然後,使用這個準確度數據計算策略梯度,再用後者更新控制器。因此,具有較高準確度的結構可以得到較高的選中概率。

來源:https://arxiv.org/pdf/1611.01578.pdf

神經網絡結構搜索中,該控制器用於生成神經網絡的結構超參數。在下圖中,控制器用於生成一個卷積神經網絡。控制器預測濾波器高度、濾波器寬度和步長。預測由softmax分類器執行,然後作爲輸入,輸入到下一個時間步。一旦控制器完成了生成結構的過程,帶有這個結構的神經網絡就會建立起來,並用它進行訓練。

來源:https://arxiv.org/pdf/1611.01578.pdf

於子網絡的訓練需要花費數小時的時間,爲了加快控制器的學習過程,作者採用了分佈式訓練和異步參數更新的方法。

來源:https://arxiv.org/pdf/1611.01578.pdf

該模型與其他模型的錯誤率對比如下:

來源:https://arxiv.org/pdf/1611.01578.pdf

可伸縮圖像識別領域的可轉移架構學習(2017:Learning Transferable Architectures for Scalable Image Recognition

在本文中,作者在一個小數據集上搜索結構上的一個組成模塊,然後將該模塊再轉換到一個大數據集上。這是因爲直接使用大型數據集將非常麻煩和耗時。

作者在CIFAR-10數據集上尋找最佳卷積層,並將其應用於ImageNet數據集。具體做法是將該層的更多副本堆疊在一起來實現的。每一層都有自己的參數,用於設計卷積架構。作者將這種體系結構稱爲NASNet架構。

他們還引入了正則化技術——ScheduledDropPath——來改進NASNet模型中的泛化性能。該方法的錯誤率爲2.4%。最大的NASNet模型平均精度達到43.1%。

與前一篇文章一樣,本文也使用了神經體系結構搜索(NAS)框架。本文的方案中,卷積網絡的總體結構是人工預置好的。它們由重複幾次的卷積單元組成。每個卷積層具有相同的結構,但權重不同。

該網絡有兩種類型的單元:返回相同維度特徵圖的卷積單元(Normal Cell),以及返回特徵圖的卷積單元(Reduction Cell)。後者特徵圖的高度和寬度在卷積輸出時減少了一半。

來源:https://arxiv.org/pdf/1707.07012.pdf

在本文提出的搜索空間中,每個單元接收兩個初始隱藏狀態作爲輸入,這兩個初始隱藏狀態是前兩層或輸入圖像中的兩個單元的輸出。在給定這兩個初始隱藏狀態的情況下,控制器RNN遞歸地預測卷積單元結構的其餘部分。

來源:https://arxiv.org/pdf/1707.07012.pdf

下面是CIFAR-10數據集上神經結構搜索的性能:

來源:https://arxiv.org/pdf/1707.07012.pdf

參數共享的高效神經結構搜索(2018:Efficient Neural Architecture Search via Parameter Sharing

本文作者提出了一種稱爲高效神經結構搜索(ENAS)的方法。在這種方法中,控制器通過在大型計算圖中搜索最優子圖來發現神經網絡結構。該控制器經過訓練,可以選出在驗證集上獲得最佳準確度的子圖。

然後訓練所選子圖對應的模型,使正則交叉熵損失最小化。參數通常在子模型之間共享,以便ENAS能夠提供更好的性能。在CIFAR-10測試中,ENAS的錯誤率爲2.89%,而神經結構搜索(NAS)的錯誤率爲2.65%。

本文強制所有子模型共享權值,以避免從零開始訓練每個子模型達到收斂,從而提高了NAS的效率。

本文用單個有向無環圖(DAG)表示NAS的搜索空間。通過引入一個具有N個節點的DAG,設計出了遞歸單元,該單元表示局部計算,圖中的邊表示N個節點之間的信息流。

ENAS的控制器是一個RNN,它決定在DAG中的每個節點上執行哪些計算以及激活哪些邊。控制器網絡是一個包含100個隱藏單元的LSTM。

來源:https://arxiv.org/pdf/1802.03268.pdf

在ENAS中,需要學習兩組參數:控制器LSTM的參數和子模型的共享參數。在訓練的第一階段,對子模型的共享參數進行訓練。在第二階段,對控制器LSTM的參數進行訓練。這兩個階段在ENAS的訓練期間交替進行。

來源:https://arxiv.org/pdf/1802.03268.pdf

以下是ENAS在CIFAR-10數據集上的表現情況:

來源:https://arxiv.org/pdf/1802.03268.pdf

高效結構搜索的層次化表示(ICLR 2018:Hierarchical Representations for Efficient Architecture Search

該網絡中提出的算法在CIFAR-10上實現了3.6%的top-1誤差,在ImageNet上實現了20.3%的top-1誤差。作者提出了一種描述神經網絡結構的層次化表示方法,證明了用簡單的隨機搜索可以得到具有競爭力的圖像分類網絡結構,並提出了一種可擴展的進化搜索方法變體。

對於平面體系結構表示,他們研究了由單源、單匯聚(single-sink)計算圖組成的神經網絡體系結構家族,該計算圖將源處的輸入轉換爲匯聚處的輸出。圖中的每個節點都對應一個特徵圖,每個有向邊都和某個操作關聯,比如池化操作或者卷積操作。此操作轉換輸入節點中的特徵圖,並將其傳遞給輸出節點。

來源:https://arxiv.org/abs/1711.00436

對於層次化結構,將在不同層次上有若干個不同的motifs。在較高層次的motifs構建過程中,較低層次的motifs被作爲構建模組。

來源:https://arxiv.org/abs/1711.00436

這是CIFAR-10測試集中不同模型的錯誤率:

漸進神經結構搜索(ECCV 2018:Progressive Neural Architecture Search

該方法採用基於序列模型的優化策略(SMBO)學習卷積神經網絡(CNNs)的結構。本文基於神經結構搜索(NAS)方法。

本文中,搜索算法的任務是識別一個好的卷積單元,而不是一個完整的CNN。每個單元格包含B個塊,每個塊是應用於兩個輸入數據的組合運算符。每個輸入都可以在組合之前進行轉換——例如,通過卷積進行轉換。然後根據訓練集的大小和最終CNN所要求的運行時間,決定疊加起來的單元的數量。

來源:https://arxiv.org/abs/1712.00559

通過使用步長爲1或步長爲2的基本單元疊加預定數量的副本,可以將單元疊加轉換爲CNN,如上圖所示。然後,在步長爲2的單元之間的步長爲1的單元數量,調整爲最多可以有N個。在網絡的頂層引入了平均池化和softmax分類層。

下圖顯示了模型在CIFAR測試集上的性能:

Auto-Keras:高效的神經結構搜索系統(2018:Auto-Keras: An Efficient Neural Architecture Search System

本文提出了一個框架,使用貝葉斯優化引導網絡形變,以提升NAS的效率。基於他們的方法,作者構建了一個名爲Auto-Keras的開源AutoML系統。

該方法中,網絡的主要組成模塊,是在貝葉斯優化算法的指導下,通過神經結構的形變來尋找搜索空間。NAS空間不是歐氏空間,因此作者設計了一個神經網絡核函數來解決這一問題。核函數是將一個神經結構變形爲另一個神經結構的編輯距離。

來源:https://arxiv.org/pdf/1806.10282.pdf

利用貝葉斯優化來指導網絡形態的第二個挑戰是獲取函數的優化。這些方法不適用於網絡形態的樹結構的搜索。通過優化樹結構空間的獲取函數,解決了這一難題。置信度上界(UCB)被選擇作爲獲取函數。

該體系結構的搜索模塊是包含貝葉斯優化器和高斯過程的模塊。搜索算法在CPU上運行,模型訓練器模塊在GPU上進行計算。

該模塊在分離的進程中用訓練數據訓練神經網絡,以實現並行化。圖模塊處理神經網絡的計算圖,並由搜索模塊控制,進行網絡形態學操作。模型存儲是一個包含經過訓練的模型的池子。由於這些模型很大,所以它們存儲在存儲設備上。

下面是該模型與其他模型在不同數據集上的性能比較:

基於貝葉斯優化和最優傳輸的神經結構搜索(2018:Neural Architecture Search with Bayesian Optimisation and Optimal Transport

這篇論文提出了一種基於高斯過程(貝葉斯優化,即BO)的神經結構搜索框架NASBOT。這是通過在神經網絡體系結構的空間中開發一個距離度量來實現的,該距離度量可以通過最優傳輸程序來計算。

作者提出了一種神經網絡結構的(僞)距離,稱爲OTMANN(神經網絡結構的最優傳輸度量),可以通過最優傳輸程序進行快速計算。他們還開發了一個BO框架來優化神經網絡結構上的函數,稱爲NASBOT(使用貝葉斯優化和最優傳輸的神經結構搜索)。

爲了實現BO方案,本文提出了一種神經網絡結構的核函數,並給出了一種優化神經網絡結構獲取函數的方法,它採用進化算法對獲取函數進行優化。

這個方法有一個初始的網絡池,並計算這些網絡上的獲取函數。然後該網絡池的一組Nmut個突變被生成出來。首先要做的就是從被評估的網絡集合中隨機選擇Nmut個候選對象,這樣那些具有較高的函數值的網絡更有可能被選中。然後對每個候選對象進行修改,以生成一個新的體系結構。

可以通過增加或減少一個層中的計算單元數量、添加或刪除層,或更改現有層的連接結構來更改體系結構。

最後一步是評估這些Nmut突變的獲取函數,將其添加到初始池中,並重復指定的次數。在實驗中,作者使用NASBOT來優化獲取。通過實驗,他們得出結論,NASBOT的性能優於用於優化採集的進化算法。

來源:https://arxiv.org/abs/1802.07191

與其他模型相比,NASBOT的性能如下圖所示:

SNAS:隨機神經結構搜索(ICLR 2019:SNAS: Stochastic Neural Architecture Search

這篇論文的作者提出了隨機神經結構搜索(SNAS)。SNAS是NAS的端到端解決方案,在同一輪的反向傳播中同時訓練神經算子參數和體系結構分佈參數。在此過程中,它維護了NAS流程的完整性和可微性。

作者將NAS重新表述爲單元中搜索空間的聯合分佈參數的優化問題。搜索梯度被用於,利用梯度信息進行泛化的可微損失的體系結構搜索。這種搜索梯度與基於增強學習的NAS優化了相同的目標,但爲結構決策分配分數時效率更高。

如下所示,搜索空間使用一個有向無環圖(DAG)表示,稱爲父圖。在圖中,節點xi代表隱式表示。邊(i, j)表示要在節點之間選擇的信息流和操作。

來源:https://arxiv.org/pdf/1812.09926.pdf

以下是CIFAR-10上SNAS和最先進的圖像分類器的分類錯誤:

DARTS:可微結構搜索(ICLR 2019:DARTS: Differentiable Architecture Search

這篇論文以可微的方式構造任務,解決了結構搜索的可伸縮性問題。

本文沒有在一組離散的候選結構上進行搜索,而是將搜索空間放寬爲連續的。因此,可以通過梯度下降,對體系結構的驗證集性能進行優化。基於梯度優化的數據效率提升,使得DARTS能夠使用更少的計算資源獲得出色的性能。該模型的性能也優於ENAS。DARTS既適用於卷積網絡,也適用於遞歸網絡。

作者尋找一種計算單元作爲最終架構的構建模塊。通過遞歸連接,學習單元可以被堆疊成卷積網絡或遞歸網絡。一個單元是由N個節點的有序序列組成的有向無環圖。每個節點都是一個隱式的表示——例如一個特徵圖——並且每條有向邊都與轉換節點的一些操作相關聯。一個單元格被假定爲有兩個輸入節點和一個輸出節點。卷積單元的輸入節點定義爲前兩層的單元輸出。最近文獻裏提到的卷積單元裏,它們的輸入節點被定義爲當前步驟的輸入和上一步所攜帶的狀態。對所有中間節點應用縮減操作(例如concatenation操作)來生成輸出單元。

來源:https://arxiv.org/pdf/1806.09055.pdf

該模型與CIFAR-10上最先進的圖像分類器的比較如下:

原文鏈接:

https://heartbeat.fritz.ai/research-guide-for-neural-architecture-search-b250c5b1b2e5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章