論文解讀:Single path one-shot neural architecture search with uniform sampling

Single path one-shot neural architecture search with uniform sampling



1、總覽

大多數搜索空間鬆弛化的方法裏,結構分佈是被連續地參數化了,這些參數在超網絡訓練時一同被聯合優化,因此結構搜索是在優化的過程中進行,優化結束後從結構分佈中採樣最好的結構。但這存在兩個問題:(1)超網絡裏的參數是深度耦合的;(2)聯合優化進一步引入了結構參數和超網絡權重之間的耦合。梯度下降方法天生的貪婪特徵會在結構分佈和超網絡權重中引入偏差,這可能會誤導結構搜索。

one-shot方法爲結構搜索提供了一個新的方向,並且沒有結構鬆弛化和分佈參數。結構搜索問題從超網絡訓練中解耦出來,變成一個單獨的步驟,它結合了嵌套優化和聯合優化方法的優點。剛纔介紹的兩篇論文就是這樣的one-shot方法,解決了上面提到的第二個問題,但並沒有很好地解決第一個問題,超網絡的權重仍然是耦合的。在《Understanding and Simplifying One-Shot Architecture Search》裏提到,one-shot成果的關鍵是一個使用權重繼承的結構的準確率應該對已經優化好的結構有預測性。因此,作者提出超網絡訓練應該是隨機的,所有的結構都可以同時優化它們的權重。爲了減少超網絡的權重耦合,作者提出了一個簡單的搜索空間,單路徑超網絡(single path supernet)。對於超網絡訓練,作者採用均勻採樣,平等地對待所有結構,沒有超參數。

2、NAS方法回顧
我們用{\color{Red} \mathcal A}表示結構搜索空間,這是一個有向無環圖(DAG),一個搜索到的結構是DAG的子圖a∈Aa \in \mathcal Aa∈A,記爲N(a,w)\mathcal N(a,w)N(a,w),www爲權重。NAS的目的是去解決兩個有關聯的問題,第一個是在標準深度學習裏給定一個網絡結構,優化其權重:

wa=argminwLtrain (N(a,w))(1)w_{a}=\underset{w}{\operatorname{argmin}} \mathcal{L}_{\text {train }}(\mathcal{N}(a, w)) \tag{1}

a
​    
 = 
w
argmin
​    
 L 
train 
​    
 (N(a,w))(1)

Ltrain(⋅)\mathcal L_{train}(\cdot)L 
train
​    
 (⋅)是在訓練集上的損失函數。第二個問題是結構優化,一般來說是通過驗證集的準確率來尋找:

a∗=argmina∈AACCval (N(a,wa))(2)a^{\ast}=\underset{a \in \mathcal A}{\operatorname{argmin}} {\rm ACC}_{\text {val }}(\mathcal{N}(a, w_{a})) \tag{2}


 = 
a∈A
argmin
​    
 ACC 
val 
​    
 (N(a,w 
a
​    
 ))(2)

ACCval(⋅){\rm ACC}_{\rm val}(\cdot)ACC 
val
​    
 (⋅)是驗證集準確率。真實情況下會對網絡的內存消耗、FLOPs、latency、功耗等有要求,這些取決於結構aaa、軟件和硬件等,但和權重waw_{a}w 
a
​    
 無關,因此作者稱爲“結構限制”。一個典型的限制網絡的latency不大於預設的budget:

Latency(a∗)≤Latmax(3){\rm Latency(a^{\ast}) \leq {\rm Lat}_{\rm max}} \tag{3}
Latency(a 

 )≤Lat 
max
​    
 (3)

對於大多數方法來說,同時滿足式(2)和式(3)是很有挑戰性的。最近的NAS方法採用了權值共享的策略,結構搜索空間A\mathcal AA被編碼進一個超網絡,記作N(A,W)\mathcal N(\mathcal A, W)N(A,W),WWW是超網絡的權重。超網絡被訓練一次,所有的結構都從WWW裏直接繼承,因此他們在相同的圖節點上式共享權值的。大多權值共享的方法將離散的搜索空間轉爲連續的,A\mathcal AA鬆弛化爲A(θ)\mathcal A(\theta)A(θ),θ\thetaθ爲表示結構分佈的連續化參數。注意新的空間包含了原始的搜索空間:A⊆A(θ)\mathcal A \subseteq \mathcal A(\theta)A⊆A(θ)。這樣鬆弛化的好處是可以用梯度方法聯合優化權重和結構分佈參數,表示如下:

(θ∗,Wθ∗)=argminθ,WLtrain(N(A(θ),W))(4)\left(\theta^{*}, W_{\theta^{*}}\right)=\underset{\theta, W}{\operatorname{argmin}} \mathcal{L}_{t r a i n}(\mathcal{N}(\mathcal{A}(\theta), W)) \tag{4}
(θ 

 ,W 
θ 

 
​    
 )= 
θ,W
argmin
​    
 L 
train
​    
 (N(A(θ),W))(4)

優化後,最好的結構a∗a^{\ast}a 

 從A(θ)\mathcal A(\theta)A(θ)採樣得到,然後從Wθ∗W_{\theta^{\ast}}W 
θ 

 
​    
 繼承權值、微調。理論上這樣做很合理,但優化式(4)是具有挑戰性的。首先,在超網絡裏的圖節點的權重是互相依賴的、深度耦合的,但從WWW中繼承的權重解耦了,尚不明確爲什麼這樣做是有效的。第二,聯合訓練結構參數θ\thetaθ和權值WWW進一步引入了耦合。滿足結構限制也是困難的,一些工作使用精心設計的soft損失項來擴充式(4)中的損失函數Ltrain\mathcal L_{train}L 
train
​    
 ,但也很難滿足像式(3)中的限制。作者總結了一下這部分提到的方法,連同作者提出的方法一同作了比較:


3、one-shot NAS 回顧
通過上面的分析,耦合的結構搜索和權重優化是困難的,我們能否同時擁有問題解耦和權值共享的優點?這引出了叫做one-shot的方法(即上面解讀的兩篇論文),這兩種方法依然訓練一個超網絡然後共享其中的參數,超網絡訓練和結構搜索是解耦成兩個步驟,這既不同於嵌套式優化也不同於聯合優化。首先,第一步優化超網絡權重:

WA=argminWLtrain (N(A,W))(5)W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathcal{L}_{\text {train }}(\mathcal{N}(\mathcal{A}, W)) \tag{5}

A
​    
 = 
W
argmin
​    
 L 
train 
​    
 (N(A,W))(5)

相比於式(4),搜索空間的連續化參數消失了,只有權重被優化。第二步,結構搜索表示爲:

a∗=argmaxa∈AACCval(N(a,WA(a)))(6)a^{*}=\underset{a \in \mathcal{A}}{\operatorname{argmax}} \mathrm{ACC}_{\mathrm{val}}\left(\mathcal{N}\left(a, W_{\mathcal{A}}(a)\right)\right) \tag{6}


 = 
a∈A
argmax
​    
 ACC 
val
​    
 (N(a,W 
A
​    
 (a)))(6)

在搜索過程中,每個採樣的結構aaa從繼承WAW_{\mathcal A}W 
A
​    
 繼承權重,記爲WA(a)W_{\mathcal A}(a)W 
A
​    
 (a)。同式(1)、式(2)相比,式(6)的主要不同是,結構的權重是合理初始化的,估計ACCval(⋅)ACC_{val}(\cdot)ACC 
val
​    
 (⋅)只需推斷,沒有微調或重新訓練。找到最優的結構a∗a^{\ast}a 

 後,通過微調來獲得wa∗w_{a^{\ast}}w 


 
​    
 。這樣的搜索也是靈活的,任何適當的搜索方法都可以,這裏作者採用遺傳算法。結構限制,式(3)的結構限制也被精確地滿足。一旦訓練好超網絡,搜索可以用不同的結構限制(如100ms latency 和 200ms latency)在超網絡上被重複很多次,之前的方法都沒有這樣的特性。但超網絡的權重依然是耦合的。

4、單路徑超網絡和均勻採樣
將式(1)作爲理想的情況,one-shot要求權重WA(a)W_{\mathcal A}(a)W 
A
​    
 (a)接近於最優權值waw_{a}w 
a
​    
 ,近似的程度取決於訓練損失Ltrain(N(a,WA(a)))\mathcal L_{train}(\mathcal N(a, W_{\mathcal A}(a)))L 
train
​    
 (N(a,W 
A
​    
 (a)))被優化的程度。這引出一個原則,超網絡的權重WAW_{\mathcal A}W 
A
​    
 應該與搜索空間中的所有子結構的優化同時進行,如下式:

WA=argminWEa∼Γ(A)[Ltrain (N(a,W(a)))]W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathbb{E}_{a \sim \Gamma(\mathcal{A})}\left[\mathcal{L}_{\text {train }}(\mathcal{N}(a, W(a)))\right]

A
​    
 = 
W
argmin
​    
 E 
a∼Γ(A)
​    
 [L 
train 
​    
 (N(a,W(a)))]

Γ(A)\Gamma(\mathcal A)Γ(A)是a∈Aa \in \mathcal Aa∈A的先驗分佈。注意,式(7)是式(5)的實現,在每步優化中,結構aaa是隨機採樣的,只有權重W(a)W(a)W(a)是被更新的。從這個意義上說,超級網絡本身不再是一個有效的網絡,它表現爲一個隨機超網絡(stochastic supernet)。

爲了較少權重之間的互相適應,作者建議將搜索空間簡化到極限,只包含但路徑結構,這可以看做是path dropout策略的極端情況,每次只保留一條路徑,其他全部drop,如下圖所示:

它包括一系列的choice block,每個包含幾個choices,每次只有一個choice被調用。這裏不包含任何dorpout參數或微調。先驗分佈Γ(A)\Gamma (\mathcal A)Γ(A)可能是重要的,作者發現均勻採樣已經足夠好了。

5、超網絡和choice block
和《Understanding and Simplifying One-Shot Architecture Search》中的一樣,choice block用於構建隨機結構,一個choice block包含多個結構選擇。對這裏的但路徑超網絡,每次只有一個choice被調用,通過採樣所有的choice block來獲得一條路徑。這裏作者設計了兩種choice block:

通道數目搜索。這個choice block搜索一個卷積層的通道數目,它會預先分配一個最大通道數目的權重張量(max_c_out, max_c_in, ksize),在超網絡訓練過程中,系統隨機選擇當前輸出通道數目c_outc\_outc_out,然後從其中切片出張量子集[:c_out,:c_in,:][:c\_out, : c\_in, :][:c_out,:c_in,:],如下圖所示:

混合精度量化搜索。這個choice block用於搜索卷積層的權值和特徵的量化精度。在超網絡訓練過程中,特徵圖的位寬和濾波器權值是隨機選擇的,如下圖所示:

6、進化結構搜索
對於式(6)的結構搜索,前面兩篇論文使用隨機搜索,而作者使用遺傳算法,算法僞代碼如下圖所示:

對於所有的實驗,種羣大小P=50P=50P=50,最大迭代次數T=20\mathcal T=20T=20,k=10k=10k=10,對於交叉,隨機選擇兩個候選結構去交叉生成一個新的結構,對於變異,在每個choice block以0.1的概率從候選變異中隨機選擇一種變異,產生一個新的結構。在對結構進行推斷之前,BN的統計量從訓練集中隨機選擇子集樣本重新計算,因爲超網絡的BN統計量一般來說並不適合於候選結構。

參考文獻
[1] Brock A , Lim T , Ritchie J M , et al. SMASH: One-Shot Model Architecture Search through HyperNetworks[J]. 2017.
[2] Bender, Gabriel, et al. “Understanding and simplifying one-shot architecture search.” International Conference on Machine Learning. 2018.
[3] Guo, Zichao, et al. “Single path one-shot neural architecture search with uniform sampling.” arXiv preprint arXiv:1904.00420 (2019).
[4] https://www.jiqizhixin.com/articles/2019-04-02-8
[5] 《深入理解AutoML和AutoDL》
————————————————
版權聲明:本文爲CSDN博主「SpaceAutomation」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u014157632/article/details/102600575

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