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.