zoukankan      html  css  js  c++  java
  • 【DMC】2020-CVPR-Discrete Model Compression with Resource Constraint for Deep Neural Networks-论文阅读

    DMC

    2020-CVPR-Discrete Model Compression with Resource Constraint for Deep Neural Networks

    来源:ChenBong 博客园

    • Institute:University of Pittsburgh、Simon Fraser University、JD Finance
    • Author:Shangqian Gao、Heng Huang*
    • GitHub:/
    • Citation:/

    Introduction

    给每个 channels 附加上一个 (gate( heta), θ∈[0,1]) ,梯度下降优化 (θ) 得到紧凑的子网络。


    Motivation

    结构化剪枝的难点在于如何分配各层的剪枝率

    • 一些方法提出重要性衡量指标,将不重要的channels剪掉。作者认为重要性相对的,即与所选择的子网络有关,一个channels可能对子网络A不重要,但对子网络B很重要
    • 还有一些方法将剪枝松弛为连续优化的方法(如给每个channels附加上一个结构参数,使用梯度下降更新该参数,最终将结构参数小的channels删除)。作者认为连续松弛的方法过程中的结构( (θ∈[0,1]) 和 最终的离散网络结构 (θ∈{0,1}) 存在一定的 gap。

    Contribution

    因此我们提出直接使用离散的gate,来决定是否保留某个channels,有以下优点:

    • 由于离散的gate直接作用在每个channel上,控制该channel是否打开,网络的输出即为最终紧凑子网络的输出,因此可以准确地得到子网络的性能。
    • 直接优化离散变量是一个 non-smooth,non-convex 和 NP-hard 问题,因此我们使用STE方法使得这些离散变量可以使用梯度下降的反向传播。
    • 提出了一种新的正则化函数来满足计算(FLOPs)约束
    • 没有使用 权重/feature map的 幅值(magnitude)信息,仅将子网络的性能(判别力)作为唯一评价指标(即 discrimination-aware pruning)(比如 taylor 也是discrimination-aware pruning)。

    Method

    符号

    • (mathcal{F}_{l} in R^{C_{l} imes W_{l} imes H_{l}}) 表示第 (l) 层的 output feature map ,其中 (C_l) 是第 (l) 层的通道数
    • (mathcal{F}_{l,c}) 表示第 (l) 层的 feature map 的第 (c) 个通道
    • (w.p.) = with probability
    • (oldsymbol 1=[1,...,1]^T)

    前向:

    gate function: (g( heta)=left{egin{array}{ll}1 & ext { if } heta in[0.5,1] \ 0 & ext { if } heta in[0,0.5)end{array} ight. quad ext{where θ∈[0,1]} qquad (1))

    Feature map: (widehat{mathcal{F}}_{l, c}=gleft( heta_{l, c} ight) cdot mathcal{F}_{l, c} qquad (2))


    反向:

    STE: (frac{partial mathcal{L}}{partial heta}=frac{partial mathcal{L}}{partial g( heta)} qquad (3))

    && Here, the backward propagation of g(θ) can be understood as an identity function within certain range.

    g(θ) 的反向传播在一定范围内可以认为是恒等函数?

    如果 (θ∉[0,1]) ,那么 clipped to range [0, 1]


    基于概率的gate function

    确定的gate function存在一些问题,例如当一个 channel 的 θ<0.5,即g(θ) = 0 时,那么该g(θ)可能会一直都为0,即该 channels 再也不会被启用。

    因此我们采用另一种随机的gate function,使得 θ<0.5 的 channels 有机会再被启用:

    gate function: (g( heta)=left{egin{array}{ll}1 & ext { w.p. } heta \ 0 & ext { w.p. } 1- hetaend{array} ight. quad ext{where θ∈[0,1]} qquad (4))

    所以前向的过程可以看作以 θ 的概率,采样每个channels (以 (Theta) 的概率采样子网)


    优化目标

    (l) 层的gate function 的值表示为 (old g_l=[g(θ_{l,1}),...,g(θ_{l,C_l})])

    整个网络的gate function值表示为 (old g=(g_1, g_2, ...g_L))

    (old g) 为取值为0/1的一维向量,长度为n(即网络中gate的个数): (old{g} in{0,1}^{n})

    (l) 层的通道数表示为 (C_l)

    整个网络的通道数向量表示为 (old C=(C_1,...,C_L))

    因此:

    • (old 1^T old g) 乘积为一个数,表示网络中所有取值为1的gate的数量(即激活的channels的数量=子网络的channels数)
    • (old 1^T old C) 乘积为一个数,表示网络中所有channels的数量

    (p) 为压缩率

    优化目标:

    (min _{Theta} mathcal{L}(f(x ; mathcal{W}, Theta), y) quad s.t. mathbf{1}^{T} mathbf{g}-p mathbf{1}^{T} mathbf{C}=0 qquad (5))

    其中 (old{g} in{0,1}^{n})


    FLOPs约束正则项

    用一个正则项 (R(cdot,cdot)) 来替换(5)右边的等式约束,得到新的优化目标:

    (min _{Theta} mathcal{F}(Theta):=mathcal{L}(f(x ; mathcal{W}, Theta), y)+lambda mathcal{R}left(mathbf{1}^{T} mathbf{g}, p mathbf{1}^{T} mathbf{C} ight) qquad (6))


    将channels约束转变为FLOPs约束:

    ((mathrm{FLOPs})_{l}=k_{l} cdot k_{l} cdot frac{c_{l-1}}{mathcal{G}_{l}} cdot c_{l} cdot w_{l} cdot h_{l} qquad (7))

    ((widehat{mathrm{FLOPs}})_{l}=k_{l} cdot k_{l} cdot frac{mathbf{1}^{T} mathbf{g}_{l-1}}{mathcal{G}_{l}} cdot mathbf{1}^{T} mathbf{g}_{l} cdot w_{l} cdot h_{l} qquad (8))


    约束正则项替换为: (mathcal{R}(hat{T}, p T) qquad (9))

    其中, (hat{T}=sum_{l=1}^{L}(widehat{mathrm{FLOPs}})_{l})(T=sum_{l=1}^{L}(mathrm{FLOPs})_{l})


    约束正则项函数可以采用常用的MSE(均方误差),MAE(平均绝对误差)

    MSE:(frac{1}{m} sum_{i=1}^{m}left(y_{i}-hat{y}_{i} ight)^{2})

    img

    MAE:(frac{1}{m} sum_{i=1}^{m}left|left(y_{i}-hat{y}_{i} ight) ight|)

    img

    由于训练结构参数 θ 时,网络的权重是冻结的,我们希望该约束项的值在训练的早期阶段就尽快下降到0,并长时间保持在0(在0附近梯度很大),这样可以有较长的时间可以来训练结构参数 θ,但MAE/MSE不满足这个要求,因为在0附近MSE的梯度为0,MAE的梯度恒定。

    因此实际采用的正则项的形式为: (mathcal{R}_{log }(x, y)=log (|x-y|+1) qquad (10))

    (R_{log}) 在x=y处不可导,可以使用次梯度(sub-gradient)来替代

    如图2,取y=0,x越靠近0,(R_{log}) 的梯度越大:

    image-20200907194058137


    结构参数θ 对称的权重衰减(Symmetric Weight Decay)

    && To further expand search space, we propose a symmetric weight decay on the weights of gates, which is inspired by the subgradient of the regularization loss:

    为了进一步扩大搜索空间,我们提出了对门的权重进行对称的权重衰减,其灵感来自于正则化损失的次梯度:

    (frac{partial mathcal{R}_{mathrm{log}}}{partial heta_{l, c}}=left{egin{array}{ll}eta_{l} cdot frac{1}{|hat{T}-p T|+1} cdot frac{hat{T}-p T}{|hat{T}-p T|}, & ext { if } hat{T} eq p T \ 0, & ext { if } hat{T}=p Tend{array} ight. qquad (11))

    其中 (eta_{l}=k_{l}^{2} cdot frac{mathbf{1}^{T} mathbf{g}_{l-1}}{mathcal{G}_{l}} cdot w_{l} cdot h_{l})

    ((widehat{mathrm{FLOPs}})_{l}=k_{l} cdot k_{l} cdot frac{mathbf{1}^{T} mathbf{g}_{l-1}}{mathcal{G}_{l}} cdot mathbf{1}^{T} mathbf{g}_{l} cdot w_{l} cdot h_{l} qquad (8))

    (R_{log}) 就像对 θ 进行权重衰减一样

    && Based on above arguments, we can explore larger search spaces by applying symmetric weight decay on each (θ_{l,c}) .

    The goal of doing this is to slow down the pace of gate parameters to become deterministic (approach 0 or 1).

    As a result, the search space is enlarged:

    ( heta_{l, c}= heta_{l, c}-eta operatorname{sign}left( heta_{l, c}-0.5 ight) qquad (12))


    DMC Algorithm

    image-20200907201224982

    && 左边是前向,右边是反向

    前向:以 (Theta) 的概率采样一个子网,做前向

    反向:计算loss,用STE更新 (Theta)

    image-20200907165943611


    Experiments

    CIFAR-10

    image-20200907201349726


    ImageNet

    image-20200907201400872


    Impact of Gate Placement

    image-20200907201458557


    image-20200907201512558


    Understanding the Training of Discrete Gates

    test-acc VS Regularization Loss

    Regularization Loss先急剧下降,然后保持在0附近

    同时test-acc也是先急剧下降,再缓慢上升

    image-20200907201619093


    不同层的剪枝率变化情况

    有些层的剪枝率一开始逐渐下降,后面会逐渐恢复,说明这些层有的通道被逐渐恢复了(recall)

    image-20200907201627925


    S值的变化

    (mathcal{S}=frac{sum_{l=1}^{L} sum_{c=1}^{C_{l}}left| heta_{l, c}-0.5 ight|}{n})

    s越小,说明θ趋于随机分布

    s越接近0,说明θ趋于0,1两极分布

    image-20200907201637688


    Conclusion

    Summary

    ToRead

    Reference

  • 相关阅读:
    【源码学习之spark core 1.6.1 standalone模式下的作业提交】
    【源码学习之spark streaming 1.6.1 】
    spark udf 初识初用
    spark 累加历史 + 统计全部 + 行转列
    spark 都用了哪些开源东东
    kafka 官方示例代码--消费者
    104. 二叉树的最大深度
    237. 删除链表中的节点
    Leetcode-167. Two Sum II
    Leetcode-215. Kth Largest Element in an Array
  • 原文地址:https://www.cnblogs.com/chenbong/p/13630111.html
Copyright © 2011-2022 走看看