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