Lossless CNN Channel Pruning via Gradient Resetting and Convolutional Re-parameterization

论文地址:https://arxiv.org/abs/2007.03260
代码地址:https://github.com/DingXiaoH/ResRep.

因为CNN的表征能力取决于宽度,所以通道剪枝往往会降低性能。传统的通道剪枝通过对参数进行惩罚来提高剪枝的鲁棒性,这样会在剪枝之前就降低性能。作者受神经生物学关于记忆和遗忘的独立性启发,将CNN再参数化为记忆部分(目标函数)和遗忘部分(惩罚损失),记忆部分学习保持性能,遗忘部分学习提高效率。对前者使用SGD训练再参数化模型,对后者使用带惩罚梯度的新的更新规则,实现了结构的稀疏性,将再参数化模型转换成更窄的原始结构。在ImageNet上将具有76.15%的top1精度的ResNet50无损地剪枝成43.9%的FLOPs,在CIFAR10上将93.71%的ResNet56无损地剪枝成47.09%的FLOPs。

对于基于训练的剪枝方法,可以从两方面进行评估:

  1. Resistance。训练的目的是向模型中引入一些必需的属性,如结构的稀疏性,然后进行剪枝,但是这些性质可能会引起模型性能下降。对于能抵制这种退化,保持高精度的模型具有高抵抗力。
  2. Prunability。经过训练的模型如果保持较高的剪枝率且性能下降较低,则具有高剪枝能力。
    作者提出了ResRep方法可以实现这种完美剪枝。

ResRep

具体来说,就是用conv-BN-compactor将原始模型的conv-BN重新参数化,其中,压缩器(compactor)是 1 × 1 1 \times 1 1×1的卷积层。在训练过程中,只对compactor施加惩罚梯度,并让一些通道的梯度归零。经过训练可以得到更窄的compactor,在经过等效变换成原始结构,得到最终的剪枝后的模型。
ResRep和传统的基于惩罚的通道剪枝方法对比如下图。
在这里插入图片描述
对于卷积层,有:
在这里插入图片描述
其中,输入 I ∈ R N × C × H × W I \in R^{N\times C\times H\times W} IRN×C×H×W,卷积核 K ∈ R D × C × K × K K \in R^{D\times C\times K\times K} KRD×C×K×K,输出 O ∈ R N × D × H ′ × W ′ O \in R^{N\times D\times H'\times W'} ORN×D×H×W,偏置 b ∈ R D b \in R^{D} bRD,映射 B ( ⋅ ) B(\cdot) B()将偏置 b b b转换成 N × D × H ′ × W ′ N\times D\times H'\times W' N×D×H×W
对于conv-BN层,均值 μ \mu μ,标准差 σ \sigma σ,放缩因子 γ \gamma γ,偏置 β \beta β,则有
在这里插入图片描述
剪枝后,剪枝通道 P ( i ) ⊂ { 1 , 2 , . . . , D } P^{(i)} \subset \{1,2, ...,D\} P(i){1,2,...,D},幸存的通道 S ( i ) = { 1 , 2 , . . . , D } \ P ( i ) S^{(i)}=\{1,2, ...,D\} \backslash P^{(i)} S(i)={1,2,...,D}\P(i)。剪枝保留了conv(i)的 S ( i ) S^{(i)} S(i)个的输出通道及对应的conv(i+1)的输入通道。得到卷积核:
在这里插入图片描述

Convolutional Re-parameterization

记忆部分——卷积的再参数化,即利用 1 × 1 1 \times 1 1×1的compactor Q对conv-BN层再参数化。在开始训练时,令Q初始化为单位矩阵,conv-BN层初始化为base模型的权值,这样能够得到与base模型相同的输出;在梯度重置训练时,利用阈值 ϵ \epsilon ϵ ( ϵ \epsilon ϵ 取值为 1 × 1 0 − 5 1 \times 10^{-5} 1×105)对compactor进行剪枝(剪掉L2范数小于 ϵ \epsilon ϵ 的通道),则剪枝通道 P = { j ∣ ∣ ∣ Q j < ϵ ∣ ∣ } P=\{j| ||Q_j< \epsilon||\} P={jQj<ϵ} ,幸存通道 S = { j ∣ ∣ ∣ Q j ≥ ϵ ∣ ∣ } S=\{j| ||Q_j \geq \epsilon||\} S={jQjϵ} 。剪枝后的compactor为 Q ′ = Q S , : Q' = Q_{S,:} Q=QS,:
经过剪枝的compactor的行数明显少于列数,即 Q ′ ∈ R D ′ × D , D ′ = ∣ S ∣ Q' \in R^{D' \times D}, D'=|S| QRD×D,D=S .。因此只需要找到能将conv-BN-compactor转化成卷积层的 K ′ ∈ R D ′ × C × K × K K' \in R^{D' \times C\times K\times K} KRD×C×K×K b ′ ∈ R D ′ b' \in R^{D'} bRD
首先,构造一个新的conv层:在这里插入图片描述
易证得:
在这里插入图片描述
只需令:
在这里插入图片描述
展开:
在这里插入图片描述
T ( ⋅ ) T(\cdot) T()为一个转置函数,即将 D × C × K × K D\times C\times K\times K D×C×K×K转置成 C × D × K × K C\times D\times K\times K C×D×K×K,则有:
在这里插入图片描述

Gradient Resetting

整体目标函数为:
在这里插入图片描述
其中第一项为性能相关的目标函数,第二项为惩罚损失(如L1,L2,group Lasso),选择group Lasso,则:
在这里插入图片描述
对于某个特定的通道 F = K j F=K_j F=Kj,梯度为:
在这里插入图片描述
作者引入了一个mask m ∈ { 0 , 1 } m \in \{0,1\} m{0,1}来选择是否对通道 F F F进行重置。即:
在这里插入图片描述
其中, λ \lambda λ 1 × 1 0 − 4 1 \times 10^{-4} 1×104

Experiments

在这里插入图片描述
在这里插入图片描述
在cifar10上复现实验结果:
在这里插入图片描述
以上结果是做了5次实验取平均。实验结果和论文结果比较接近,可以算是完美剪枝(降低不到0.01%),并且剪枝率比论文的结果高了0.31%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值