作者:Chris Ying * 1 Aaron Klein * 2 Esteban Real 1 Eric Christiansen 1 Kevin Murphy 1 Frank Hutter
摘要
NAS需要大量的計算開銷,論文提出第一個公共NAS搜索的結構數據集:NAS-Bench-101
包含423k個卷積結構,在CIFAR-10數據集上多次對模型訓練和評估。
作用:使得可以再毫秒時間內從數據集查找評估模型的質量
代碼:https://github.com/google-research/nasbench
基准測試代碼腳本:https://github.com/automl/nas_benchmarks
1、介紹
NAS有影響力工作:
Designing neural network architectures using reinforcement learning MIT的NAS開山之作
Neural architecture search with reinforcement learning NAS開山之作
Neural architecture search: A survey NAS綜述
NAS的SOTA工作:
NAS難復現原因:1、計算開銷大 2、不同方法不好比較:搜索空間、訓練過程不同
建立NAS-Bench-101數據集:
- 包含423k個樣本,映射模型結構到對應的指標(run time and accuracy)
- 遍歷了窮盡了整個搜索空間,使之可對整個搜索空間做復雜分析
開源代碼 https://github.com/google-research/nasbench 包含數據、搜索空間、訓練代碼
論文貢獻如下:
- 提出第一個開源結構NAS數據集NAS-Bench-101
- 介紹了使用數據集去分析搜索空間,揭示內部機理去指導網絡設計
- 介紹了使用數據集對各種開源NAS優化算法做benchmarking
2、NASBench數據集
NAS-Bench-101:數據集表格包含CNN結構和對應訓練\評估指標
2.1 結構
如圖所示,每個CNN結構的外骨架,由stem、stack、downsample組成,每個stack中有3個Cell單元
網絡結構的變化,由Cell單元變化產生
Cell單元:由包含V個頂點(其中兩個為IN-OUT頂點)的所有可能有向非循環圖(DAGs)組成,每個頂點包含L種可能的ops,L=3。
ops集合包含(3x3 conv; 1x1 conv; 3x3 max-pool操作);V <= 7;最大邊數<=9;
所有卷積使用了BN+ReLU
2.2 Cell編碼
編碼方式:基於7個頂點的無向循環圖,每個頂點有3種可能的操作
|
In |
1 |
2 |
3 |
4 |
5 |
Out |
In |
|
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
1 |
|
|
1/0 |
1/0 |
1/0 |
1/0 |
1/0 |
2 |
|
|
|
1/0 |
1/0 |
1/0 |
1/0 |
3 |
|
|
|
|
1/0 |
1/0 |
1/0 |
4 |
|
|
|
|
|
1/0 |
1/0 |
5 |
|
|
|
|
|
|
1/0 |
Out |
|
|
|
|
|
|
|
如圖所示,1/0表示圖中的頂點是否連通,總計有 種可能連通方式;除去IN-OUT頂點,每個頂點有3種可能,總共有種可能的ops組合。
綜上,有 種可能Cell結構
除去無效和重復的,有423K個不同的結構圖
2.4 訓練
設計了一個對所有數據集模型適用的開源單一通用的訓練流程
超參數設置:使用單一固定的超參數集,選對不同結構都魯棒的超參,依據對50個隨機采樣機構的平均精度來選擇
實現細節:
數據集:CIFAR-10(40k訓練/10k驗證/10k測試),標准數據擴充技術(參考ResNet)
優化器:RMSProp 損失函數:Cross-entropy loss
代碼:https://github.com/google-research/nasbench
每個模型在4 種Epochs下各重復訓練/評估3次
2.5 度量指標Metric
結構A,在不同E_stop下,不同初始化訓練3次,得到如下映射關系數據集
(A, E_stop,trial#) -à (訓練acc, 驗證acc, 測試acc, 訓練時間, 模型參數數量)
2.6 基准測試方法Benchmarking
NAS-Bench-101數據集的其中一個目的:促進NAS算法的基准測試
表示在整個數據集上具有最高平均測試精度的模型
在搜索過程中,根據驗證集精度排序記錄搜索算法發現的最好的結構
計算中間regret:
Regret作為每次搜索的分數
3、NASNet作為數據集
分析整個NASNet數據集來深入了解ops和cell拓撲結構在CNN網絡中性能
3.1 數據集統計信息
如圖左,大部分結構訓練精度收斂至100%,驗證/測試精度達到90%
如圖右,相同結構,由於訓練\測試的有一定的噪聲,更長的訓練epochs有更低的噪聲
最好的結構測試精度達到94.32%,ResNet-like:93.12%,Inception-like:92.95%
研究了參數數目、訓練時間、驗證集精度之間的關系
如圖左,顯示了三者呈正相關;但參數數目和訓練時間不是唯一決定因素
如圖右,顯示了參數和訓練時間都更少的resnet和inception仍達到了同樣高精度
3.2 結構設計
替換Cell中的ops,不同操作,絕對驗證精度對比和相對訓練時間對比
左圖,把3x3卷積替代為1x1卷積或3x3 max-pool,驗證精度下降1.16%和1.99%
右圖,把3x3卷積替代為1x1卷積或3x3 max-pool,訓練時間下降14.11%和9.84%
3.3 位置
位置特性:結構接近有相似的性能。
接近度:edit-distance(編輯距離):從一個結構轉向另一個結構所需最少的變化數目
衡量位置的參數,Random-walk autocorrelation(RWA):defined as the autocorrelation of the accuracies of points visited as we perform a long walk of random changes through the space
參考:https://stats.stackexchange.com/questions/181167/what-is-the-autocorrelation-for-a-random-walk
如左圖,RWA在小距離時顯示了高相關性,超過6時,相關性變得不可區分
FDC(fitness-distance correlation):測量鄰近的locality
4、作為基准的NASBench
4.1 比較NAS算法
通過使用數據集對比其他Alg,建立baseline
基准測試了小部分NAS、hyperparameter optimization(HPO)、RS、regularized evolution(RE)、SMAC、TPE、HB、BOHB、
基准測試代碼腳本:https://github.com/automl/nas_benchmarks
調研了所有optimizer的元參數 見S2.2
如圖左,顯示了每類NAS/HPO算法的平均性能,通過500次獨立試驗
如圖右,研究了優化器對隨機性的魯棒性
運行每種方法500次,每次10M秒,關於regret的經驗累積誤差(CDF,empirical cumulative distribution), RE, BOHB, and SMAC顯示最魯棒
4.2 Generalization bootstrap
測試在數據集上結果的泛化能力,需要在更大數據集上運行基准測試算法
由於計算限制,不能在更大空間做大量NAS試驗
在NAS-Bench-Mini數據集上試驗(NAS-Bench-101的子集),包括在搜索空間內所有的Cell,僅用<=6個頂點(64.5k unique cells)。
如圖,可以看到在NASBench-Mini和NASBench-101不同大小空間上,相同算法精度比較是一致的都是 RS<NRE<RE
5、討論
5.1 聯系超參優化(hyperparameter optimization )
NAS:目標去發現好的神經網絡結構
HPO:目標針對給定結構,尋找最優訓練超參數集
f 是性能度量指標,如驗證精度
NAS問題為在最優參數下的最優結構
實際上,尋找所有結構的最優超參數 H_*,計算上是棘手的,所以用 近似H_+
H_+:通過在小的結構子集上S(隨機采樣50個結構),選擇取得最大平均精度的超參數集
用 來近似求解近似最優結構
並給出了如上近似結構的證明
如圖,兩個函數的秩高度相關,Spearman rank correlation = 0.9155
總結
提出了NAS-Bench-101,一個神經結構搜索的表格基准,保留了初始NAS優化問題
使得可以快速比較各種算法,而不用巨大地計算開銷
利用數據集,可以對卷積神經結構做窮盡地評估和分析