zoukankan      html  css  js  c++  java
  • 【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

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

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

    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)

    三种相关系数:

    ( 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


    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的联系与区别,各自的优缺点和适用的场景?

  • 相关阅读:
    深入理解javascript原型和闭包(5)——instanceof
    深入理解javascript原型和闭包(4)——隐式原型
    启动mongodb的方式
    继承的几种方式
    npm install express 安装失败
    npm insta --savell和npm install --save-dev的区别
    express笔记之一安装
    mongoVUE安装配置
    nodejs笔记之一简介
    nodejs配置之二NPM配置之gulp使用时出现的错误
  • 原文地址:https://www.cnblogs.com/chenbong/p/13679818.html
Copyright © 2011-2022 走看看