ICCV 2021 | BN-NAS: 只訓練BN層來自動搜索模型


論文鏈接:BN-NAS: Neural Architecture Search with Batch Normalization

1. Motivation

之前的One-shot NAS工作在搜索過程中有兩個特點:

  • 訓練所有模塊的參數
  • 使用在驗證集上的准確率作為評價指標來評估模型的好壞

很明顯這兩個步驟都非常耗時,所以這篇論文打起了 batch-normalization (BN) 的主義,即

  • 只訓練BN的參數
  • 使用BN的參數作為評價指標

實驗結果表明,這樣做不僅訓練速度加快,而且最終模型性能也得到了保證

下面詳細介紹一下算法細節

2. Methodology

如下圖示,整個算法包含三個步驟:

  1. Supernet training
  2. subnet searching
  3. subnet retraining

2.1 Supernet Training

第一步是訓練Supernet。不同於以往訓練所有參數,BNNAS采取的策略是

  1. 隨機初始化Supernet參數
  2. 只訓練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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM