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
结构化剪枝的问题可以描述为:
(egin{aligned}left(r_{1}, r_{2}, ldots, r_{L} ight)^{*} &=underset{r_{1}, r_{2}, ldots, r_{L}}{arg min } mathcal{L}left(mathcal{A}left(r_{1}, r_{2}, ldots, r_{L} ; w ight) ight) \ & ext { s.t. } mathcal{C}< ext { 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}}+eta 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}}=Eleft[x_{mathcal{B}} ight]=frac{1}{N} sum_{i=1}^{N} x_{i}, quad sigma_{mathcal{B}}^{2}=operatorname{Var}left[x_{mathcal{B}} ight]=frac{1}{N-1} sum_{i=1}^{N}left(x_{i}-mu_{mathcal{B}} ight)^{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)
三种相关系数:
( ho_{X, Y}=frac{sum_{i}left(x_{i}-ar{x} ight)left(y_{i}-ar{y} ight)}{sqrt{sum_{i}left(x_{i}-ar{x} ight)^{2}left(y_{i}-ar{y} ight)^{2}}} qquad (5))
(phi x, y=1-frac{6 sum_{i} d_{i}^{2}}{nleft(n^{2}-1 ight)} qquad (6))
( au_{X, Y}=frac{2}{n(n-1)} sum_{i<j} operatorname{sgn}left(x_{i}-x_{j} ight) operatorname{sgn}left(y_{i}-y_{j} ight) 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相关性提高这么多吗?