论文Pruning Filters for efficient convnets解读

本文探讨了针对卷积层的过滤器剪枝方法,以减少计算量而不显著影响模型精度。通过计算过滤器权重的l1范数来决定剪枝,对每个卷积层去除不重要的过滤器及其对应的特征图,同时移除下一层的相关卷积核。提出两种策略:独立剪枝和贪婪剪枝,分别考虑每一层独立的剪枝决策和考虑前一层剪枝影响的全局策略。这种方法旨在提高深度学习模型的效率,特别是在资源受限的环境中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于常规基于大小对权重的剪枝可以对全连接层的参数显著较少,但可能对卷积层的计算量降低不够,因为剪枝后的网络的不规则稀疏。本论文对输出精度影响较小的卷积核以及与之相连的特征映射移除,达到计算量显著降低的效果。与权重剪枝不同的是,本文的方法不会导致稀疏连接模式

过滤器Filters和特征图Feature maps的剪枝

nin_ini为第iii层卷积层的输入通道数,hi/wih_i/w_ihi/wi为输入特征图的高/宽。卷积层将输入特征图Xi∈Rni×hi×wiX_i \in \mathbb{R}^{n_i \times h_i \times w_i}XiRni×hi×wi转换为Xi+1∈Rni+1×hi+1×wi+1X_{i+1} \in \mathbb{R}^{n_{i+1} \times h_{i+1} \times w_{i+1}}Xi+1Rni+1×hi+1×wi+1。这是通过ni+1n_{i+1}ni+13D过滤器Fi,j∈Rni×k×k\mathcal{F}_{i,j} \in \mathbb{R}^{n_i \times k \times k}Fi,jRni×k×k作用在nin_ini个输入通道上,即,一个过滤器产生一个特征图。每个过滤器由nin_ini2D卷积核K∈Rni×ni+1×k×k\mathcal{K} \in \mathbb{R}^{n_i \times n_{i+1} \times k \times k}KRni×ni+1×k×k。原论文中给出的卷积层的运算数为
ni+1nik2hi+1wi+1 n_{i+1}n_ik^2h_{i+1}w_{i+1} ni+1nik2hi+1wi+1
这里应该只是给出了卷积操作时与权重相关的乘法运算,输出的单个特征图上的每个元素对应于nin_ini次卷积运算,每个卷积核的运算数为k2k^2k2,这样,输出特征图上的单个元素的运算数为nik2n_ik^2nik2,单个特征图的运算为nik2hi+1wi+1n_i k^2 h_{i+1} w_{i+1}nik2hi+1wi+1,共生成ni+1n_{i+1}ni+1个特征图。如果第jjj个3D过滤器Fi,j\mathcal{F}_{i,j}Fi,j被剪枝,则相应的第i+1i+1i+1层中的第jjj个特征图Xi+1,jX_{i+1,j}Xi+1,j也将被移除,这样减少运算数为nik2hi+1wi+1n_i k^2 h_{i+1} w_{i+1}nik2hi+1wi+1。与之对应的第i+2i+2i+2层的运算数减少ni+2k2hi+2wi+2n_{i+2}k^2h_{i+2}w_{i+2}ni+2k2hi+2wi+2。对第iii层剪去mmm个过滤器,第iiii+1i+1i+1层所减少的计算开销的比例均为m/ni+1m/n_{i+1}m/ni+1(第iii层减少的运算数和总运算数分别为mnik2hi+1wi+1m n_i k^2 h_{i+1} w_{i+1}mnik2hi+1wi+1ni+1nik2hi+1wi+1n_{i+1} n_i k^2 h_{i+1} w_{i+1}ni+1nik2hi+1wi+1,第i+1i+1i+1层减少的运算数和总运算数分别为mni+2k2hi+1wi+1m n_{i+2} k^2 h_{i+1} w_{i+1}mni+2k2hi+1wi+1ni+1ni+2k2hi+1wi+1n_{i+1} n_{i+2} k^2 h_{i+1} w_{i+1}ni+1ni+2k2hi+1wi+1。过滤器剪枝所对应的特征图移除以及下一层卷积核移除,如下图所示。

在这里插入图片描述

单层中的过滤器剪枝

出于对计算效率的考虑,在尽可能减小精度下降的前提下,对已经受到良好训练的网络中的不重要的过滤器进行剪枝。

通过对每一层中的过滤器的权重绝对值之和∑∣Fi,j∣\sum |\mathcal{F}_{i,j}|Fi,j的计算,即,li−norml_i-normlinorm

iii层卷积层进行m个过滤器剪枝的过程:

  1. 对于每个过滤器Fi,j\mathcal{F}_{i,j}Fi,j,计算其核权重的绝对值之和sj=∑l=1ni∑∣Kl∣s_j=\sum_{l=1}^{n_i}\sum|\mathcal{K}_l|sj=l=1niKl
  2. sjs_jsj进行排序
  3. 对m个最小值的过滤器以及相应的特征图进行剪枝。对应于该特征图的下一层的卷积层的核也移除
  4. 对第iii层和第i+1i+1i+1层创建新的核矩阵,并将剩下的核权重拷贝到新模型中。

多层过滤器的剪枝

一次性进行多层过滤器剪枝的优势:

  1. 对于深度网络,逐层剪枝和再训练是非常耗时的
  2. 对整个网络层进行剪枝,给出了得到较小网络的鲁棒性的整体视角,
  3. 对于复杂网络,整体视角可能是必要的。例如,对于ResNet,对恒等特征图的剪枝活每个残差块的第二层的剪枝会导致其他层的剪枝

为了对多层过滤器剪枝,本文提出了层级过滤器选择的两种策略:

  1. 独立剪枝,对每一层的过滤器决定是否剪枝与其他层无关
    择的两种策略:

  2. 独立剪枝,对每一层的过滤器决定是否剪枝与其他层无关

  3. 贪婪剪枝,考虑到先前层中所移除的过滤器。这种策略在计算权重绝对值之和时,不需要考虑先前已剪枝的特征图所对应的核。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值