使用來自google Research的NASBench進行神經架構搜索 - 我們是否可以自動設計網絡架構,而不是依賴專家經驗和知識?
動機
神經結構架構搜索(NAS)的最新進展需要巨大的計算資源,這使得難以重現實驗并對無法進行大規模計算的研究人員施加限制。神經架構搜索(NAS)被引入用于自動化人工神經網絡(ANN)的設計。
- 搜索空間定義了可以設計和優化的ANN類型。
- 搜索策略定義了用于搜索空間的方法。
- 績效評估策略從一個可能的人工神經網絡的設計(不需要構建和訓練)來評估其性能
Jeff Dean的幻燈片顯示神經架構搜索可以嘗試20種不同的模型來找到最準確的
此文的結構如下:
- 陳述NAS及其在不同領域的優勢和應用。
- 用簡單的代碼示例總結Google研究論文NASBench -101。
- 舉一個用pytorch進行高效神經網絡搜索的例子。
神經架構搜索(NAS)應用程序
- 設計有辨別力的深度學習模型,如圖像分類、對象檢測和語義分割。
- 搜索生成模型,或者特別是基于自動編碼器的通用樣式轉移,缺乏系統的探索。
- 結合不同輸入類型(即RGB和光流)的抽象表示和基于視頻的CNN架構的分辨率。這有助于允許不同類型或信息源彼此交互,通過增加一組過度連接的架構及其連接權重學習。
NASBench-101的演變
在圖像分類領域,研究已經產生了許多將神經網絡層組合成獨特架構的方法,例如初始模塊、殘差連接或密集連接。這使得研究更多地研究神經架構搜索(NAS),并發現新架構作為一個優化問題,不僅是圖像分類領域,還有其他領域,如序列建模。
由于大量的訓練時間和不同的搜索空間的不同訓練程序,NASBench-101,谷歌研究引入了第一個NAS架構數據集,以滿足上述目的
- 利用圖同構來識別423k獨特的卷積體系結構。
- 列出他們的評估指標,包括運行時和準確性。
- 通過查詢預先計算的數據集,可以在幾毫秒內輕松評估各種模型的質量。
NASBench通常由一個表格數據集組成,該數據集將卷積神經網絡架構映射到他們在CIFAR-10上經過訓練和評估的性能。所有網絡共享相同的網絡“骨架”,神經網絡操作的唯一變化以任意圖形結構連接。下面的3個數字從左到右表示如下:
- 具有多達9個頂點和7個邊的有向非循環圖,每個頂點處的操作是“3x3卷積”、“1x1卷積”和“3x3最大池化”。
- 數據集中的類似初始的單元格。
- 高級概述每個模塊的內部過濾器數量。
體系架構
- NASBench架構選擇很大程度上取決于網絡的性能。對于網絡的每個所選層,該算法對該延遲預測模型上的架構進行采樣。研究發現,用1×1卷積或3×3最大池操作替換3×3卷積通常導致絕對最終驗證準確度分別下降1.16%和1.99%。這也反映在訓練時間的相對變化上,下降了14.11%和9.84%。盡管3×3最大池是無參數的,但是它在訓練時間上比1×1卷積高5.04%,并且平均絕對驗證準確度低0.81%。
- 選擇正確的網絡取決于評估神經網絡的深度與寬度的準確性。隨著網絡越來越廣,網絡的訓練時間增加,但有一個例外:寬度1網絡是最昂貴的。這是因為所有寬度為1的網絡都是簡單的前饋網絡而沒有分支,因此激活映射永遠不會通過其信道維度進行分割。
NAS旨在使用HPO(超參數優化)找到最佳神經網絡架構,該架構涉及通過執行粗網格搜索來找到最佳的魯棒訓練超參數集。 HPO通過調整各種數值神經網絡訓練參數(例如,學習速率)以及分類選擇(例如,優化器類型)來操作以優化訓練過程。
NASBench使用元架構作為其設計的一部分,以評估應使用多少個單元以及如何連接它們以構建實際模型。下圖是NAS內置手工制作架構的示例,例如跳過連接,允許構建復雜的多分支網絡。該圖由以下組成:左 - >兩個不同的單元,例如,正常單元(頂部)和縮小單元(底部),右 - >通過順序堆疊單元而構建的架構。細胞也可以以更復雜的方式組合,例如在多分支空間中,只需要通過簡單地用單元格替換層即可。
局部性
NASBench展示了局部性,通過局部性,、“接近”的體系架構往往具有類似性能指標的屬性。 “接近度”是根據編輯距離來定義的:將一個體系結構轉換為另一個體系結構所需的最小更改次數;其中一個更改需要在頂點或邊的存在/不存在處翻轉操作。局部性也通過隨機游走自相關(RWA)來測量,RWA定義為當我們在空間中進行長距離隨機變化時所訪問的點的精度的自相關。 RWA在較低的距離上顯示出較高的相關性高,表明了局部性。當距離超過6時,這種相關性與噪聲就無法區分了。
評估指標
神經網絡的結構和連通性通常可以由可變長度字符串指定,其中可以使用遞歸神經網絡(RNN)控制器來生成這樣的字符串。在實際數據上訓練由字符串指定的網絡 - “子網絡” - 將導致驗證集的準確性。
使用此準確度作為獎勵信號,我們可以計算策略梯度以更新控制器。因此,在下一次迭代中,控制器將為具有高精度的架構提供更高的概率。這有助于控制器隨著時間的推移學習和改進其搜索,從而使架構盡可能快地運行。
可以通過訓練準確度、驗證準確度、測試準確度,以秒為單位的訓練時間和可訓練模型參數的數量來測量改進。
實施
NASBench - Google Research
Sample Response:
使用Pytorch進行高效的神經網絡搜索
結論
麻省理工學院的研究人員開發了NAS算法,目的是直接學習目標硬件平臺的專用神經網絡,在大型數據集上運行僅需200個小時。 NAS使用網絡嵌入將現有網絡編碼為可訓練的嵌入向量。
嵌入有助于控制器網絡生成目標網絡的變換。多目標獎勵功能考慮通過策略梯度與控制器網絡預先訓練或共同訓練的網絡準確性、計算資源和訓練時間。由精確網絡和訓練時間網絡評估所得到的網絡。結果由獎勵引擎組合,將其輸出傳遞回控制器網絡。
由Google研究開發的NAS-Bench-101代表了神經架構搜索的基準,具有以下特征:
- 評估成本低廉,有助于嚴格比較各種算法并對一系列架構優化算法進行基準測試。
- 分析經過詳盡評估的卷積神經架構集的屬性。
- 使用少量操作符/參數,以500倍的推理時間加速,生成保存細節的更好的樣式傳輸圖像。