論文鏈接:BN-NAS: Neural Architecture Search with Batch Normalization
1. Motivation
之前的One-shot NAS工作在搜索過程中有兩個特點:
- 訓練所有模塊的參數
- 使用在驗證集上的准確率作為評價指標來評估模型的好壞
很明顯這兩個步驟都非常耗時,所以這篇論文打起了 batch-normalization (BN) 的主義,即
- 只訓練BN的參數
- 使用BN的參數作為評價指標
實驗結果表明,這樣做不僅訓練速度加快,而且最終模型性能也得到了保證

下面詳細介紹一下算法細節
2. Methodology
如下圖示,整個算法包含三個步驟:
- Supernet training
- subnet searching
- subnet retraining

2.1 Supernet Training
第一步是訓練Supernet。不同於以往訓練所有參數,BNNAS采取的策略是
- 隨機初始化Supernet參數
- 只訓練BN的參數,即Conv和Linear等有參數的層都frozen。
這樣一來需要訓練的參數量就極大地減少了。
作者選取了SPOS和FairNAS兩篇論文作為baseline,他們supernet分別訓練了100和150個epoch。作為對比,作者只訓練BN,基於SPOS和FairNAS分別只訓練了10和15個epoch。
題外話:我很好奇只訓練BN的話,模型能收斂嗎,或者模型的train acc能有多高?如果根本學不到東西,那BN參數指標真的有意義嗎?
2.2 Subnet Searching
論文中的搜索空間長這樣,可以看到是類似MobileNet的結構。模型由多個layer組成,每個layer有 \(N\) 個candidate operation,每個operation由多個conv+BN+relu組成,區別就是這些conv的卷積核和通道數(expand ratio)不一樣 。

需要注意的是每個operation最后都是BN,如上圖中的紅框所示,所以作者就用這個BN的參數來作為評價指標,具體的方法如下圖所示

我們以 \(Layer_L\) 的Op2為例,它的指標值 \(S_{o\_{2,L}}\) 是其最后的BN層所有 \(\gamma\) 的平均值。
這個只是某一層的BN-based指標值,那么一個子模型的指標值就是所有層的總和,計算如下:

那么優化目標函數可以表示如下:

2.3 Subnet Retraining
根據優化目標函數公式(5)可以通過不斷優化找到最優的子模型結構 \(a^\*\),之后對這個子模型做retrain。
3. 實驗分析
3.1 相關性比較
前面介紹過了每一層的N個operations都會根據公式(3)計算得到對應的BN-based value,那么整個Supernet可以有一個 \(N\*L\) 的矩陣表示。
下圖中(a)表示訓練所有參數的結果,(b)表示只訓練BN參數的結果。橫縱坐標都表示epoch數,具體的值就是不同epoch之間的相似度,這個相似度就是根據計算上面提到的 \(N\*L\) 的矩陣 \(L\_2\) 距離得到的。
文中對下圖的分析師(a)是在30個epoch的時候,不同epoch之間的相似度變得差不多了,而(b)在第10個epoch就很相似了。只能說有點牽強。。。明明還有那么多白色區域

3.2 Results on ImageNet

