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

論文提出 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的網絡f^w \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=1b=0,可用於添加全連接層。

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

Network morphism Type II

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

  則可以將f^ww_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.