EagleEye
2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning
來源:ChenBong 博客園
- Institute:Dark Matter AI Inc.、Sun Yat-sen University
- Author:Bailin Li、Bowen Wu etc.
- GitHub:https://github.com/anonymous47823493/EagleEye 【153】
- Citation:/
Introduction
預備介紹
目前filter剪枝方法主要有以下3類:
- 端到端【End to End】(包含稀疏訓練【Sparse Training】)
- autopruner
- 卷積核重要性分數【Importance Score】(包含【Class Discrimination】)
- 【Prune-Iimportant Score】
- L1-norm
- taylor
- HRank
- 【Prune-Iimportant Score-Class Discrimination】
- Discrimination-aware Channel Pruning for Deep Neural Networks
- Channel Pruning Guided by Classification Loss and Feature Importance
- Rethinking Class-Discrimination Based CNN Channel Pruning
- 【Prune-Iimportant Score】
- 結構搜索與評估【Structure Search and Evaluation】
- ABCPruner
- MetaPruning
其中卷積核重要性分數側重確定剪枝結構,而結構搜索與評估側重剪枝結構的快速評估。
本文屬於結構評估類的filter剪枝,模型剪枝可以看做一個在搜索空間中搜索最佳子結構的問題:
- 確定搜索空間(所有的剪枝結構;在原始網絡上剪枝得到的所有網絡可以稱為候選網絡)
- 搜索階段:從中生成一個剪枝結構以及權重(選擇一個候選網絡)
- 評估階段:評估剪枝結構(該候選網絡)性能的好壞
這個想法和NAS中評估搜索空間中候選網絡的性能的問題幾乎一樣:
- 確搜索空間(根據搜索空間中的所有候選網絡)
- 搜索階段:從中生成一個候選網絡結構以及權重
- 評估階段:評估該候選網絡的好壞
因此本文其實是借鑒了NAS中候選網絡評估的想法,將剪枝問題看成一種NAS問題,要解決的關鍵是不訓練子網,而通過評估器快速評估候選網絡的性能。
兩個問題的區別在於:
- 搜索空間的不同:剪枝問題的搜索空間是超網的(滿足約束的)子網,NAS問題的搜索空間是事先定義的
- 搜索階段,候選網絡權重的生成方式不同:只有候選網絡的結構是無法直接評估性能的,有2種獲得候選網絡權重的方法:
- 繼承法,從超網繼承權重(本文的EagleEye,nas中one-shot的超網訓練)
- 生成法,為候選網絡生成權重(MetaPruning中的PruningNet)
評估器的衡量指標:fine-tune前后的網絡性能相關性
本文介紹
剪枝后未fine-tune的網絡的acc 與 fine-tune到收斂的acc 存在相關性,如果一個評估算法能夠根據剪枝后未fine-tune的網絡直接估計出結構最終的acc那么就可以節省大量的fine-tune 時間開銷。
作者發現剪枝后未fine-tune的網絡性能下降嚴重,主要原因是網絡的BN層的統計信息是根據原始網絡計算出來的,不適用於剪枝后的網絡結構;因此作者提出一種 adaptive BN,即不更新網絡權重,只重更新網絡的BN層的方法,來評估不同候選剪枝網絡的性能。
Motivation
找到最佳剪枝子結構的方法:
- 訓練法:訓練不同的子結構,找到收斂后性能最佳的子結構。
- 優點:准確
- 缺點:過於耗時
- 評估法:不訓練子結構,使用評估器快速評估。
- 優點:快速
- 缺點:
- inaccurate,評估性能和收斂性能相關性不強
- complicated,使用強化學習,輔助網絡,知識蒸餾等;超參多,難復現
因此我們希望找到一種 accurate(相關性高),simple(方法簡單)的評估方法
從 圖3左 我們發現fine-tune前后的網絡性能差距巨大,且性能相關性不強:
- 為什么移除不重要的filter會導致性能的嚴重下降?
- 為什么fine-tune前后的性能相關性不強?
圖3右 我們發現fine-tune前后網絡權重的分布變化並不大,因此可能不是權重的變化導致性能的下降。
有趣的是,我們發現BN層會對評估產生巨大的影響(這里的發現和前面的實驗沒有邏輯上的聯系,像是憑空發現的)。每一層的feature map數據受到model dimensions的影響,但vanilla evaluation 依然使用 full-size model 的BN層,因此會嚴重影響評估時的性能,更重要的是會破壞 評估acc 與 收斂acc 的相關性。
Contribution
- 首次在剪枝問題中引入相關性分析
- 提出 Adaptive BN 方法,快速:可以快速評估剪枝網絡的性能,強相關性:該評估方法的搜索/評估兩階段性能有較強的相關性,通用性:本方法是評估階段的算法,可以和任意搜索階段的算法結合
- 達到SOTA性能
Method
Vanilla Pruning
結構化剪枝的問題可以描述為:
\(\begin{aligned}\left(r_{1}, r_{2}, \ldots, r_{L}\right)^{*} &=\underset{r_{1}, r_{2}, \ldots, r_{L}}{\arg \min } \mathcal{L}\left(\mathcal{A}\left(r_{1}, r_{2}, \ldots, r_{L} ; w\right)\right) \\ & \text { s.t. } \mathcal{C}<\text { constraints } \end{aligned} \qquad(1)\)
其中 \((r_{1}, r_{2}, \ldots, r_{L})\) 是各層的Layer-wise剪枝率,A表示網絡結構,C表示(FLOPs/latency等)約束
找到的最佳的 Layer-wise 剪枝率表示為 \((r_{1}, r_{2}, \ldots, r_{L})^*\)
EagleEye
BN層的工作原理
BN層是對每一個batch的數據作歸一化: \(y=\gamma \frac{x-\mu}{\sqrt{\sigma^{2}+\epsilon}}+\beta \qquad (2)\)
其中,\(\frac{x-\mu}{\sqrt{\sigma^{2}+\epsilon}}\) 將一個batch的 feature map 均值歸一化到0,方差歸一化到1; \(γ, β\) 分別是縮放系數和偏移系數,是可學習的參數
每個batch的均值和方差 \(\mu_{\mathcal{B}}, \sigma_{\mathcal{B}}^{2}\) 的計算方式如下:
\(\mu_{\mathcal{B}}=E\left[x_{\mathcal{B}}\right]=\frac{1}{N} \sum_{i=1}^{N} x_{i}, \quad \sigma_{\mathcal{B}}^{2}=\operatorname{Var}\left[x_{\mathcal{B}}\right]=\frac{1}{N-1} \sum_{i=1}^{N}\left(x_{i}-\mu_{\mathcal{B}}\right)^{2} \qquad (3)\)
訓練過程中不同 iteration t 之間BN層使用的均值和方差使用以下 momentum 的方式更新:
\(\mu_{t}=m \mu_{t-1}+(1-m) \mu_{\mathcal{B}}, \quad \sigma_{t}^{2}=m \sigma_{t-1}^{2}+(1-m) \sigma_{\mathcal{B}}^{2} \qquad (4)\)
測試階段的輸入一般是單張圖片,沒有batch的單位,因此訓練結束后的 \(μ_t,σ_t^2\) 即作為網絡BN層的值,稱為"global BN statistics"
Adaptive Batch Normalization
vanilla evaluation 使用"global BN statistics" 作為剪枝模型的BN層參數,會導致剪枝模型性能嚴重下降以及兩階段acc的低相關性。
我們提出Adaptive BN的方法來重新計算剪枝后模型BN層的值 \(μ_T,σ_T^2\) ,具體來說即凍結網絡參數使用公式(4)進行幾次前向(不進行反向),來更新BN層的值 \(μ_T,σ_T^2\) 。我們將Adaptive BN statistics記為 \(\hat {μ_T},\hat {σ_T^2}\) 。
vanilla evaluation 與 使用adaptive BN 的相關性如下圖:
另一方面,我們比較了 global BN statistics ( \(μ_t,σ_t^2\) ),adaptive BN statistics ( \(\hat {μ_T},\hat {σ_T^2}\) ) 與 true statistics ( \(μ_{val},σ_{val}^2\) )之間的距離,如下圖所示:
Correlation Measurement
使用 adaptive BN 與 global BN 的不同剪枝模型acc分別表示為 \(X_1, X_2\) ,收斂后剪枝模型的acc 表示為 \(Y\)
三種相關系數:
\(\rho_{X, Y}=\frac{\sum_{i}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sqrt{\sum_{i}\left(x_{i}-\bar{x}\right)^{2}\left(y_{i}-\bar{y}\right)^{2}}} \qquad (5)\)
\(\phi x, y=1-\frac{6 \sum_{i} d_{i}^{2}}{n\left(n^{2}-1\right)} \qquad (6)\)
\(\tau_{X, Y}=\frac{2}{n(n-1)} \sum_{i<j} \operatorname{sgn}\left(x_{i}-x_{j}\right) \operatorname{sgn}\left(y_{i}-y_{j}\right) \qquad (7)\)
EagleEye pruning algorithm
Strategy generation
生成一個剪枝結構,即一個Layer-wise 剪枝率的vector: \((r_{1}, r_{2}, \ldots, r_{L})\) ,這里使用隨機采樣
Filter pruning process
根據第一步得到的Layer-wise剪枝率,對full-size模型進行剪枝,這里使用L1-norm重要性分數,剪掉重要性低的filters
The adaptive-BN-based candidate evaluation module
對每個剪枝模型重新計算BN statistics,即使用adaptive BN更新BN層,在ImageNet上用來更新BN的dataSet為1/55的training set,更新50個iteration。每個剪枝模型在單張2080Ti上完成adaptive BN的更新只需要10+秒。
根據 adaptive BN更新后的剪枝模型性能選出最有潛力的剪枝模型進行fine-tune
Experiments
Quantitative analysis of correlation
線性相關可視化
上-adaptive BN based evaluation
下-vanilla evaluation
三種相關系數
Generality 通用性
與AMC結合,將 MobileNet V1 在 ImageNet 上的性能由 70.5% 提升到 70.7%
Efficiency 高效性
Effectiveness 有效性
Conclusion
Summary
將NAS中的模型性能評估應用到剪枝中
文中報的性能很高,只更新BN層會將fine-tune前后的acc相關性提高這么多嗎?