当前位置: 代码迷 >> 综合 >> 【神经网络压缩加速之剪枝二】Pruning Filters for Efficient ConvNets
  详细解决方案

【神经网络压缩加速之剪枝二】Pruning Filters for Efficient ConvNets

热度:14   发布时间:2023-11-21 01:12:22.0

Abstract

神经网络的广泛应用伴随着计算量的增加和参数存储成本. 最近的研究工作在不损害原来准确度的基础上,通过剪枝和压缩不同层间的权重进行网络压缩. 然而,基于幅值的剪枝(magnitude-based pruning)仅能够减少全连接层的参数,而由于修剪网络中的不规则稀疏性,可能无法充分降低卷积层中的计算成本. 

我们提出了一个加速的剪枝方法,即修剪那些被认为对输出准确度有很小影响的卷积核.该方法通过删除网络中的整个卷积核及其连接特征图,可显着降低计算成本. 与修剪权重相反,此方法不会导致稀疏连接模式. 因此,它不需要稀疏卷积库的支持,并且可以与现有的高效BLAS库一起用于密集矩阵乘法.

即使是简单的卷积核修剪技术, 在CIFAR-10上VGG-16的推理成本最多可降低34%; ResNet-110的推理成本最多可降低38%,同时通过重新训练网络来恢复接近原始精度.


3. PRUNING FILTERS AND FEATURE MAPS

如下图Figure 1所示, 输入特征图为x[i], 输出特征图为x[i+1], 3D卷积核F[i,j], 2D卷积核K. 

在进行卷积核剪枝时,即卷积核F[i,j]被修剪掉(F[i,j]=n[i]*k*k, 代表n[i]个通道的k*k卷积核被裁减), 这样导致输出特征图x[i+1]少一个通道, 这也同时导致下一个3D卷积核少一个通道.

在这一节中一共分为四个部分进行了讨论:

  1. 确定在单个层中修剪的卷积核
  2. 确定单层修剪时的敏感性
  3. 修剪多层卷积核
  4. 重新训练修剪的网络以保持准确性

3.1 确定在单个层中修剪的卷积核

文章使用 l1-norm决定卷积核的重要性,简单说就是将3D卷积核F[i,j] (n[i]个k*k卷积核, 其中n[i]为输入特征图的通道数)中的参数取绝对值并相加求和, 然后修剪掉和值最小的或者最小的m个3D卷积核.

下图是修剪流程:

3.2 确定单层修剪时的敏感性

这一节对VGG16在CIFAR10上的仿真结果进行分析.

如下图Figure 2(a)显示的是VGG16不同卷积层中每个3D卷积核的参数绝对值之和. 可以看到,浅层网络的值偏大且分布区间小,深层网络的值分布范围大.

如下图Figure 2(b)显示的是裁剪VGG16不同卷积层的比率增加时,分类准确度的变化情况. 可以看到,浅层网络只能裁剪小比率,深层网络可以裁剪较大比率(60%)而准确度保持不变.(Table 2也证实实际裁剪了深层的卷积核)

如下图Figure 2(c)显示的是将裁剪的VGG16网络re-train,裁剪深层网络较大比率时同样可以恢复到原来准确度!!

我的疑问: 其他神经网络在不同数据集上的统计结果是否和下图一致???


4. 实验

下图是总的实验结果:

在这一节中一共分为五个部分进行了实验分析:

  1. VGG-16 ON CIFAR-10
  2. RESNET-56/110 ON CIFAR-10
  3. RESNET-34 ON ILSVRC2012
  4. 与修剪随机卷积核和最大卷积核的比较

4.4 与修剪随机卷积核和最大卷积核的比较

将本文的方法与修剪随机卷积核和最大卷积核进行比较. 如上图8所示,在不同的修剪率下,对大多数网络层的修剪效果要优于修剪随机卷积核.  例如,对于所有层,当修剪率为90%时, 最小的卷积核修剪比随机过滤器修剪具有更好的精度.

l1范数最大的卷积核修剪的精度随修剪率的增加而迅速下降,这表明使用“ l1”范数较大卷积核的重要性.


Reference Paper: Pruning Filters for Efficient ConvNets

  相关解决方案