NASH:基於豐富網路態射和爬山演算法的神經網路架構搜尋 | ICLR 2018

曉飛的演算法工程筆記發表於2020-06-15

論文提出NASH方法來進行神經網路結構搜尋,核心思想與之前的EAS方法類似,使用網路態射來生成一系列效果一致且繼承權重的複雜子網,本文的網路態射更豐富,而且僅需要簡單的爬山演算法輔助就可以完成搜尋,耗時0.5GPU day

來源:曉飛的演算法工程筆記 公眾號

論文: Simple And Efficient Architecture Search for Convolutional Neural Networks

Introduction


  論文目標在於大量減少網路搜尋的計算量並保持結果的高效能,核心思想與EAS演算法類似,主要貢獻如下:

  • 提供baseline方法,隨機構造網路並配合SGDR進行訓練,在CIFAR-10上能達到6%-7%的錯誤率,高於大部分NAS方法。
  • 擴充了EAS在網路態射(network morphisms)上的研究,能夠提供流行的網路構造block,比如skip connection和BN。
  • 提出基於爬山演算法的神經網路結構搜尋NASH,該方法迭代地進行網路搜尋,在每次迭代中,對當前網路使用一系列網路態射得到多個新網路,然後使用餘弦退火進行快速優化,最終得到效能更好的新網路。在CIFAR-10上,NASH僅需要單卡12小時就可以達到baseline的準確率。

Network Morphism


  $\mathcal{N}(\mathcal{X})$為$\mathcal{X}\in \mathbb{R}^n$上的一系列網路,網路態射(network morphism)為對映$M: \mathcal{N}(\mathcal{X}) \times \mathbb{R}^k \to \mathcal{N}(\mathcal{X}) \times \mathbb{R}^j$,從引數為$w\in \mathbb{R}k$的網路$fw \in \mathcal{N}(\mathcal{X})$轉換為引數為$\tilde{w} \in \mathbb{R}j$的網路$g\tilde{w} \in \mathcal{N}(\mathcal{X})$,並且滿足公式1,即對於相同的輸入,網路的輸出不變。

  下面給出幾種標準網路結構的網路態射例子:

Network morphism Type I

  將$f^w$進行公式2的替換,$\tilde{w}=(w_i, C, d)$,為了滿足公式1,設定$A=1$和$b=0$,可用於新增全連線層。

  另外一種複雜點的策略如公式3,$\tilde{w}=(w_i, C, d)$,設定$C=A^{-1}$和$d=-Cb$,可用於表達BN層,其中$A$和$b$表示統計結構,$C$和$d$為可學習的$\gamma$和$\beta$。

Network morphism Type II

  假設$f_i{w_i}$可由任何函式$h$表示,即$f_i{w_i}=Ah^{w_h}(x)+b$

  則可以將$f^w$,$w_i = (w_h, A, b)$配合任意函式$\tilde{h}{w_{\tilde{h}}}(x)$根據公式4替換為$\tilde{f}{\tilde{w}i}$,$\tilde{w}=(w_i, w{\tilde{h}}, \tilde{A})$,設定$\tilde{A}=0$。這個態射可以表示為兩種結構:

  • 增加層寬度,將$h(x)$想象為待拓寬的層,設定$\tilde{h}=h$則可以增加兩倍的層寬度。
  • concatenation型的skip connection,假設$h(x)$本身就是一系列層操作$h(x)=h_n(x) \circ \cdots \circ h_0(x)$,設定$\tilde{h}(x)=x$來實現短路連線。

Network morphism Type III

  任何冪等的函式$f_i^{w_i}$都可以通過公式5進行替換,初始化$\tilde{w}_i=w_i$,公式5在無權重的冪等函式上也成立,比如ReLU。

Network morphism Type IV

  任何層$f_i^{w_i}$都可以配合任意函式$h$進行公式6的替換,初始化$\lambda=1$,可用於結合任意函式,特別是非線性函式,也可以用於加入additive型的skip connection。
  此外,不同的網路態射組合也可以產生新的態射,比如可以通過公式2、3和5在ReLU層後面插入"Conv-BatchNorm-Relu"的網路結構。

Architecture Search by Network Morphisms


  NASH方法基於爬山演算法,先從小網路開始,對其進行網路態射生成更大的子網路,由於公式1的約束,子網的效能與原網路是一樣的,後續子網進行簡單的訓練看是否有更好的效能,最後選擇效能優異的子網進行重複的操作。

  圖1視覺化了NASH方法的一個step,演算法1的ApplyNetMorph(model, n)包含n個網路態射操作,每個為以下方法的隨機一種:

  • 加深網路,例如新增Conv-BatchNorm-Relu模組,插入位置和卷積核大小都是隨機的,channel數量跟最近的卷積操作一致。
  • 加寬網路,例如使用network morphism type II來加寬輸出的channel,加寬比例隨機。
  • 新增從層$i$到層$j$的skup connection,使用network morphism type II或IV,插入位置均隨機選擇。

  由於使用了網路態射,子網繼承了原網路的權重且效能一致,NASH方法優勢在於能夠很快的評估子網的效能,論文使用了簡單的爬山演算法,當然也可以選擇其它的優化策略。

Experiments


Baslines

Retraining from Scratch

CIFAR-10

CIFAR-100

CONCLUSION


  論文提出NASH方法來進行神經網路結構搜尋,核心思想與之前的EAS方法類似,使用網路態射來生成一系列效果一致且繼承權重的複雜子網,本文的網路態射更豐富,而且僅需要簡單的爬山演算法輔助就可以完成搜尋,耗時0.5GPU day



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

work-life balance.

相關文章