【SPOS】2019-arxiv-Single Path One-Shot Neural Architecture Search with Uniform Sampling-論文閱讀


SPOS

2019-arxiv-Single Path One-Shot Neural Architecture Search with Uniform Sampling

來源:ChenBong 博客園


Introduction

回顧

one-shot有種一步到位的意思,即只需要訓練一個超網,在超網的基礎上找到一個最佳子網。

而訓練超網和搜索子網兩個步驟可以同時進行,也可以分開進行;

因此One-shot NAS的兩種思路:

  • 訓練超網權重 和 搜索子網結構參數,兩個階段一起進行(DARTS系列,Proxyless...)
  • 訓練超網權重 和 搜索子網結構參數,兩個階段分開進行(Understanding [2],SMASH...)

image-20200727192902591

本文的思路:訓練 和 搜索兩階段分開進行:

構建一個簡化的超網,在訓練階段,每次訓練單條路徑,減少權重耦合;在搜索階段使用EA算法。

  • 訓練(超網)階段:隨機抽single path進行訓練

  • 搜索(子網)階段:使用EA算法搜索滿足特定限制(FLOPs,latency)的子網

訓練,搜索兩階段思路清晰,簡單有效;ablation study實驗豐富。


Motivation

基於weight-sharing的NAS方法存在2個問題:

  • 子網之間權重耦合的問題:子網的權重之間存在高度耦合,直接繼承超網的權重,而且權重對子網仍然有效,沒有理論依據

  • 結構參數和網絡權重耦合的問題:搜索空間松弛(離散化=>連續化,如DARTS系列)的基於梯度的方法中,結構參數(arch parameter)和網絡權重(weight)聯合優化,容易陷入“強化初始的選擇“的局部最優當中去(初始選擇敏感);

    如第一次隨機選擇/(梯度下降抽樣)了某個子網,這個子網上路徑上的權重會被訓練,后續選擇的過程中,這個子網路徑上的性能表現更好,更容易被抽到(梯度下降最快),就陷入一直強化第一次選擇的子網的過程,有的路徑被一直訓練,而有的路徑沒有得到充分訓練。因此初始的隨機選擇對結果影響非常大,收斂后可能只是局部最優

一些one-shot工作* 不使用可微分方法聯合優化結構參數(arch parameter)和網絡權重(weight),解決了第二個問題,將“超網訓練”和“結構搜索”兩個過程分離開來。

但第一個問題仍然存在,即子網絡之間參數耦合的問題。【ProxylessNAS】 等使用Path Dropout的超參數來減少路徑之間的耦合,但實驗結果對超參非常敏感,超參的選擇困難且超網比較難訓練。

image-20200726171636971

*這里的one-shot指的是狹義上的one-shot,即不使用可微分方法的超網抽樣子網的方法,如【Understanding One-Shot NAS】SMASH,廣義上DARTS系列使用可微分的方法也屬於one-shot


Contribution

為了解決以上2個問題,

  • 提出了一種簡單的訓練方式(single path),每個路徑都會被等概率地充分訓練,后續抽樣的時候不同路徑的訓練程度都相同,來解決子網絡權重耦合問題;
  • 提出了有效的搜索方式(EA),將超網訓練和子網搜索分離為2個單獨的步驟,解耦網絡權重與網絡結構的關系,同時可以容易實現各種約束(FLOPs,latency),而且是hard約束(使用EA多次搜索,直到搜索到滿足約束條件的子網),而不是soft約束(比如在loss上加latency損失項就屬於soft約束,soft約束只能將網絡大致限制在某個值,可以理解為多個損失項之間的權衡,如果一個網絡acc loss 非常小,可以犧牲一點latency約束,所以不能實現精確的約束)。

Method

訓練超網階段

\(W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathcal{L}_{\operatorname{train}}(\mathcal{N}(\mathcal{A}, W)) \qquad(6)\)

A代表超網的結構參數,W代表超網中所有的weights

\(W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathbb{E}_{a \sim \Gamma(\mathcal{A})}\left[\mathcal{L}_{\operatorname{train}}(\mathcal{N}(a, W(a)))\right] \qquad (8)\)

\(\mathbb{E}_{a \sim \Gamma(\mathcal{A})}\) 表示a是在A中均勻采樣


搜索子網階段

\(a^{*}=\underset{a \in \mathcal{A}}{\operatorname{argmax}} \mathrm{ACC}_{\text {val }}\left(\mathcal{N}\left(a, W_{\mathcal{A}}(a)\right)\right) \qquad (7)\)

a表示子網的結構參數,a*表示最佳子網的結構參數

搜索最佳的子網(的結構參數)


搜索空間

image-20200726174457577 image-20200726174521081

搜索空間中的輸入通道數,和輸出通道數可以看做“最大通道數”,實際抽樣到的子網的通道數是<=“最大通道數”的。


訓練階段,隨機采樣通道數

image-20200726174333115

細節:如何選擇通道數,每個layer預先設置有max c_in ,max c_out,kernel size*,因此這個layer的最大參數量為 kernel_size × max_c_in × max_c_out,每次抽樣的c_in由上個layer的c_out決定,c_in在<=max_c_in的范圍內隨機抽樣,可以看出,不同的iter中抽到的該層的通道數都不相同,而這些參數又是共享的,多次抽樣下,(作者說)會很快收斂。


*如果 kernel 為3×3,那么這里的kernel size=9


訓練階段,采樣混合精度

這部分不是很熟,先把結果放上來,后續再學習。

image-20200726180158627
image-20200726180238802

搜索階段,使用EA算法

image-20200726174034207

EA搜索與隨機搜索的比較:

image-20200726174004657

Experiments

實驗配置

batch size 1024,8*1080ti

train supernet:120 epochs

retrain best arch:240 epochs


網絡總體結構

整個網絡共有20個choice blocks

image-20200726174457577

總體結構如下表:

每個choice block有4種候選(分別是choice_3, choice_5, choice_7, choice_x),共有20個choice blocks,因此搜索空間一共是\(4^{20}\)

image-20200726174521081

由於之前大多數NAS的工作與手工設計網絡的大小都在[300, 330],因此我們將FLOPs限制在<=330M

image-20200726195642000

說明:

1)第一部分:不同的choice_x block的FLOPs是不同的,因此我們調整(搜索?)不同的channels來滿足FLOPs約束;全部使用單一種類的blocks(我的理解是,比如全部使用choice_3的block構建超網,訓練超網,在超網中隨機抽樣出滿足FLOPs約束的子網絡,重新訓練)

2)第二部分:在整個搜索空間(由4種block構建的spuernet)中隨機搜索 和 在single path supernet中隨機搜索;使用single path訓練的spuer net搜索空間只比第一種略高。(我的理解是,第一種:由4種blocks構建的supernet,直接訓練,然后隨機搜索;第二種:由4種blocks構建的spuernet,使用single path訓練,然后隨機搜索)

3)第三部分:在使用single path訓練過后的supernet中將隨機搜索替換為EA搜索,效果比隨機搜索高了0.5個點(74.3,這里的搜索在下文中被稱為block search,我的理解是,這里搜索的子網每一層用的都是最大通道數)。


為了進一步提高acc,我們同時搜索 blcoks 和 channels:

這里有2種策略:

1)在best block search 的結果上,執行channels search

2)直接同時搜索 blocks 和 channels

實驗表明,第一種稍微好一點

image-20200726201853186

EA搜索有效性-應用在之前工作的搜索空間(spuernet)上

與其他SOTA的比較(使用與之前工作相同的搜索空間):

將本文搜索階段的EA算法應用在之前工作相同的超網上,搜到的結果比較好。這部分只能說明搜索階段EA算法的有效性,無法說明訓練階段 single path 訓練策略的有效性。

image-20200726202147298

top-1 acc baseline列的數據中,左邊是論文里報告的數據,括號里是作者自己復現的數據。

&&疑問:表格中是分別滿足 FLOPs 和 latency 的約束,是不是無法同時滿足FLOPs和latency的約束?


EA搜索有效性評估-Kendall Tau metric

Kendall Tau metric,它會評估搜索階段(預測性能)與評估階段(實際性能)模型性能的相關性,相關性越高則表示算法越有效,它的計算公式如下:

\(\tau=\frac{N_{C}-N_{D}}{N_{C}+N_{D}}\)

其中NC,ND分別表示 concordant and discordant pairs。τ的大小在-1到1之間:

  • τ= 1:算法很好地找到表現好的模型,即搜索階段表現最好的模型在評估階段也是最好的。
  • τ= -1: 算法能很好地找到表現好的模型,即搜索階段表現最好的模型在評估階段反而是最差的。
  • τ=0:搜索階段和評估階段之間完全沒有關系,基本上是隨機搜索。

有一些工作認為性能差異只是搜索空間設計的不同,在相同的搜索空間上,有些NAS的搜索策略與隨機搜索策略幾乎沒有區別。

因此我們在NAS-Bench-201的子集上進行搜索,使用Kendall Tau metric評估我們搜索算法的好壞。

NAS-Bench-201包含有1.5w個網絡結構,並提供這些結構在cifar-10,cifar-100,ImageNet-16-120數據集上的(充分訓練后的)真實性能。

NAS-Bench-201有搜索空間有5種操作:

  • zeroize
  • skip connection
  • 1-by-1 convolution
  • 3-by-3 convolution
  • 3-by-3 average pooling

我們將:

刪除1-by-1 conv 操作后的搜索空間叫做:Reduce-1

刪除3-by-3 avg pool 操作后的搜索空間叫做:Reduce-2

兩個操作都刪除的搜索空間叫做:Reduce-3

在這3個搜索空間上搜索的結果:

image-20200726202656795

根據Kendall Tau metric的定義,τ∈[-1, 1],隨機搜索τ=0,我們的結果>0,即正相關,但依然不夠好,即正相關性不夠

發現:越簡單的搜索空間,我們的搜索算法正相關性越強


開銷對比

image-20200727111005144

訓練超網階段

搜索子網階段

重訓練最佳子網階段


Conclusion

  • 提出了之前NAS工作的2個缺點(子網絡權重耦合,可微分的聯合優化的導致的初始選擇敏感、權重和結構參數耦合的問題)作為本文的出發點
  • 提出了single path的訓練方式,解決子網權重耦合的問題
  • 不使用微分方法,使用EA的離散搜索,將訓練超網(優化權重)和搜索子網(優化結構參數)兩個階段分開,降低權重與結構參數的耦合
  • 可以搜索通道數+混合精度
  • 搜索階段的EA搜索算法有一定效果,但預測性能與實際性能的相關性還不夠強,作者根據實驗猜想搜素空間越簡單,相關性會越強

Summary

文章思路比較清晰,提出NAS之前工作存在的問題,介紹了之前的工作,總結了NAS問題的框架,針對存在的問題,針對性提出解決方法,並實驗驗證。

訓練超網階段 Single Path 策略的有效性實驗:

  • 普通方法訓練 + 隨機搜索:73.7

  • Single Path 方法訓練 + 隨機搜索:73.8

  • Single Path 方法訓練 + EA搜索block:74.3

  • Single Path 方法訓練 + EA搜索block and channels:74.7

image-20200727114040562

image-20200727114106181


搜索階段EA算法的有效性:

  • 在之前工作的搜索空間(supernet)上使用EA搜索,比原結果好
  • 在NAS-Bench-201的搜索空間上使用EA搜索,τ>0
image-20200726202147298 image-20200726202656795

主要實驗放在證明搜索階段EA搜索的有效性,而訓練階段 Single Path 方法有效性說服力不夠強。

本文投了2020-ICLR,有一篇關於隨機采樣的文章在本文6周之前發布,本文有引用但正文未提到(作者稱是並行的工作),reviewer 認為真正新穎的只有EA搜索的部分,結果好的原因可能是采用了好的pipleline,而不是方法的原因,因此給了Rreject(詳見Refer-OpenReview)


Reference

知乎-2020-ICLR 拒稿討論

OpenReview-2020-ICLR-Reject

NAS 學習筆記(八)- Single Path One-Shot NAS

AutoDL論文解讀(七):基於one-shot的NAS

論文筆記:Single Path One-Shot Neural Architecture Search with Uniform Sampling


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM