【EagleEye】2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning-论文阅读


EagleEye

2020-ECCV-EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning

来源:ChenBong 博客园


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
  • 结构搜索与评估【Structure Search and Evaluation】
    • ABCPruner
    • MetaPruning

其中卷积核重要性分数侧重确定剪枝结构,而结构搜索与评估侧重剪枝结构的快速评估。


本文属于结构评估类的filter剪枝,模型剪枝可以看做一个在搜索空间中搜索最佳子结构的问题:

  1. 确定搜索空间(所有的剪枝结构;在原始网络上剪枝得到的所有网络可以称为候选网络)
  2. 搜索阶段:从中生成一个剪枝结构以及权重(选择一个候选网络)
  3. 评估阶段:评估剪枝结构(该候选网络)性能的好坏

这个想法和NAS中评估搜索空间中候选网络的性能的问题几乎一样:

  1. 确搜索空间(根据搜索空间中的所有候选网络)
  2. 搜索阶段:从中生成一个候选网络结构以及权重
  3. 评估阶段:评估该候选网络的好坏

因此本文其实是借鉴了NAS中候选网络评估的想法,将剪枝问题看成一种NAS问题,要解决的关键是不训练子网,而通过评估器快速评估候选网络的性能。

两个问题的区别在于:

  1. 搜索空间的不同:剪枝问题的搜索空间是超网的(满足约束的)子网,NAS问题的搜索空间是事先定义的
  2. 搜索阶段,候选网络权重的生成方式不同:只有候选网络的结构是无法直接评估性能的,有2种获得候选网络权重的方法:
    1. 继承法,从超网继承权重(本文的EagleEye,nas中one-shot的超网训练)
    2. 生成法,为候选网络生成权重(MetaPruning中的PruningNet)

评估器的衡量指标:fine-tune前后的网络性能相关性


本文介绍

image-20200916114331363


剪枝后未fine-tune的网络的acc 与 fine-tune到收敛的acc 存在相关性,如果一个评估算法能够根据剪枝后未fine-tune的网络直接估计出结构最终的acc那么就可以节省大量的fine-tune 时间开销。

作者发现剪枝后未fine-tune的网络性能下降严重,主要原因是网络的BN层的统计信息是根据原始网络计算出来的,不适用于剪枝后的网络结构;因此作者提出一种 adaptive BN,即不更新网络权重,只重更新网络的BN层的方法,来评估不同候选剪枝网络的性能。


Motivation

找到最佳剪枝子结构的方法:

  • 训练法:训练不同的子结构,找到收敛后性能最佳的子结构。
    • 优点:准确
    • 缺点:过于耗时
  • 评估法:不训练子结构,使用评估器快速评估。
    • 优点:快速
    • 缺点:
      • inaccurate,评估性能和收敛性能相关性不强
      • complicated,使用强化学习,辅助网络,知识蒸馏等;超参多,难复现

因此我们希望找到一种 accurate(相关性高),simple(方法简单)的评估方法

image-20200916114518395

从 图3左 我们发现fine-tune前后的网络性能差距巨大,且性能相关性不强:

  1. 为什么移除不重要的filter会导致性能的严重下降?
  2. 为什么fine-tune前后的性能相关性不强?

图3右 我们发现fine-tune前后网络权重的分布变化并不大,因此可能不是权重的变化导致性能的下降。

有趣的是,我们发现BN层会对评估产生巨大的影响(这里的发现和前面的实验没有逻辑上的联系,像是凭空发现的)。每一层的feature map数据受到model dimensions的影响,但vanilla evaluation 依然使用 full-size model 的BN层,因此会严重影响评估时的性能,更重要的是会破坏 评估acc 与 收敛acc 的相关性。


Contribution

  1. 首次在剪枝问题中引入相关性分析
  2. 提出 Adaptive BN 方法,快速:可以快速评估剪枝网络的性能,强相关性:该评估方法的搜索/评估两阶段性能有较强的相关性,通用性:本方法是评估阶段的算法,可以和任意搜索阶段的算法结合
  3. 达到SOTA性能

Method

Vanilla Pruning

image-20200916114415667

结构化剪枝的问题可以描述为:

\(\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 的相关性如下图:

image-20200916155215786

另一方面,我们比较了 global BN statistics ( \(μ_t,σ_t^2\) ),adaptive BN statistics ( \(\hat {μ_T},\hat {σ_T^2}\) ) 与 true statistics ( \(μ_{val},σ_{val}^2\) )之间的距离,如下图所示:

image-20200916155558096


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


image-20200916115737361


Experiments

Quantitative analysis of correlation

线性相关可视化

上-adaptive BN based evaluation

下-vanilla evaluation

image-20200916115607023


三种相关系数

image-20200916115617961


Generality 通用性

与AMC结合,将 MobileNet V1 在 ImageNet 上的性能由 70.5% 提升到 70.7%


Efficiency 高效性

image-20200916115633960


Effectiveness 有效性

image-20200916115646016


image-20200916115659084


image-20200916115709073


Conclusion


Summary

将NAS中的模型性能评估应用到剪枝中

文中报的性能很高,只更新BN层会将fine-tune前后的acc相关性提高这么多吗?


ToRead

Reference

Batch Normalization原理与实战

深度学习加速策略BN、WN和LN的联系与区别,各自的优缺点和适用的场景?


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM