深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

本系列是在阅读深度神经网络模型小型化方面论文时的笔记!内容大部分从论文中摘取,也会有部分自己理解,有错误的地方还望大家批评指出!

论文链接:Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

1.摘要和介绍

1.1摘要部分

原文摘要:
Existing methods usually utilize pre-defined criterions, such as ‘ p-norm, to prune unimportant filters. There are
two major limitations in these methods. First, the relations of the filters are largely ignored. The filters usually work
jointly to make an accurate prediction in a collaborative way. Similar filters will have equivalent effects on the network prediction, and the redundant filters can be further pruned. Second, the pruning criterion remains unchanged during training. As the network updated at each iteration, the filter distribution also changes continuously. The pruning criterions should also be adaptively switched.
传统的通道裁剪方法都是需要预先定义通道的裁剪准则,然后使用该一成不变的准则对网络进行裁剪,而其中使用的是裁剪准则是不考虑通道之间的相关性,如:lp_norm。该方法存在下面两个问题:1)没有考虑网络中不同通道之间的相关性。一般而言,相关性大的两个通道就可以裁剪掉其中的一个。2)没有考虑网络更新过程中状态的改变。应该使用自适应的通道裁剪准则。
In this paper, we propose Meta Filter Pruning (MFP) to solve the above problems. First, as a complement to the existing ‘p-norm criterion, we introduce a new pruning criterion considering the filter relation via filter distance.
Additionally, we build a meta pruning framework for filter pruning, so that our method could adaptively select the most appropriate pruning criterion as the filter distribution changes. Experiments validate our approach on two image classification benchmarks. Notably, on ILSVRC-2012, our MFP reduces more than 50% FLOPs on ResNet-50 withonly 0.44% top-5 accuracy loss.
文章提出了一种基于元学习的通道删除方法。主要是改进了上面提出的另个问题。其中为了解决第一个问题,提出了两种用于度量两个不同通道之间的相关性的方法,并将其作为新的通道裁剪准则,与常用lp_norm准则一起构成裁剪准则候选集合;为了解决第二个问题,提出了一种基于元学习的自动选择合适的通道裁剪准则框架,其在每一个epoch中会根据当前网络的状态,自动从通道裁剪集合中选择合适的裁剪准则。最终,本文实现了在ILSVRC-2012数据集上,对模型resnet50裁剪50%的flops,得到0.44%的top_5的精度。

2.背景和方法

2.1 背景

  • 为了在计算资源有限的平台上(手机等终端设备)上使用深度神经网络模型,对模型的裁剪是必须的。其中对模型的裁剪分为:权重的裁剪(weight pruning)和卷积通道( filter pruning)的裁剪。其中前者是对神经元进行裁剪,而后者是将整个通道都删除了。前者因为得到的是非结构化稀疏(unstructured sparsity)无发很好的利用基本线性代数子程序库(BLAS)进行加速,所以意义不是很大,所以大家基本上都是研究通道级别的裁剪,因为其得到的是结构化的稀疏( structured sparsity)。
    在这里插入图片描述
  • 在过去的工作中,裁剪的准则主要分为两种:1)系数值越小则越不重要(smaller-norm-less-important),即:如果某个通道的卷积系数或者BN层的稀疏比较小,那么该通道对于结果贡献就不大,可以删除。所以,该类方法大多采用正则化的方法使得模型的系数稀疏化,从而达到裁剪通道的目的。但是该方法没有考虑到通道之间的相关性。2)基于通道之间的相关性(Relational Criterion),相关性越大的两个通道,则必定有一个是冗余的。采用的方法是使用几何均值筛选中模型中最不重要的通道,因为越是接近集合均值的通道这说明和剩下的通道相关性越大,则可以被删除。
  • 传统的通道裁剪存在以下两个问题:1)通道之间的相关性度量方法尝试太少;2)由于通道的裁剪,模型中卷积核的参数分布是动态变换的,所以固定不变的通道裁剪准则是不是不太合适。

2.2 贡献

  • 提出了两种新的通道相关性度量的方法
  • 提出了基于元学习的通道裁剪准则自适应变换框架,从而尽可能的降低裁剪前后模型之前的loss差异
  • 在常用的数据集:cifar10和ImageNet上对常用的模型(resnet , vggnet等)进行试验,得到的实验记过非常好。

2.3 方法

在这里插入图片描述

  • 在每一个epoch过程中,分别会根据lp_norm准则和distace_norm准则,对网络中所有的通道进行排序,然后通过元学习的方法筛选出适合当前状态的通道裁剪准则,并按照该准则的分数对模型进行裁剪。
  • 其中距离准则下使用了Minkowski Distance和Cosine Distance,并通过计算当前通道与剩下所有通道之间距离之和然后再求平均得到的值表示该通道的相关性分数,分数越大则表示通道越重要。
  • lp_norm准则下,使用的是l1和l2正则化来产生稀疏性,然后计算当前通道参数的1范数或者2范数作为通道重要性的分数,分数越大,则通道越重要。
  • 文章的优化目标是降低模型裁剪前后元属性,其中元属性可以为:sparsity level κ, the mean value of weights,
    top-5 loss, top-1 loss等。

3.实验和结果

3.1 实验

  • 数据集:CIFAR-10 , ILSVRC-2012
  • 模型: ResNet , VGGNet
  • 每个实验重复三次,并对结果取均值和方差
  • Minkowski distance with p = 1; 2 cosine distance

3.2 结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 通过上面的实验结果可以看出,无论是在resnet模型还是vggnet模型,在数据集cifar10和imgnet上的结果都比其他方法要好,即:更大的裁剪量可以得到更好的模型
  • 在裁剪量小于40%的时候,在resnet-100,数据集cifar10上,得到的裁剪后的模型精度比未裁剪的要好。
  • This means the performance of our framework is not sensitive to the pruning interval
  • we find that during the early training process, the distance-based criteria are adopted less than norm-based criteria

4.总结和展望

4.1 总结

  • 本文的方法不仅使用基于系数大小的裁剪准则,还使用了基于相关性的裁剪准则,使得结果更好
  • 本文提出了一种基于元学习的自适应选取裁剪准则的框架,可以在每个epoch下,更根据模型的状态选择合适的裁剪专责。
  • MFP achieves comparable performance with state-of-theart methods in several benchmarks.

4.2 展望

  • 目前裁剪准则的查找是在epoch级别上,未来可以考虑将其做在层上。
  • 可以尝试更多的元属性。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
代码修剪卷积神经网络用于资源高效推理,是一种优化模型的方法,旨在减小模型的尺寸和计算量,从而实现在资源受限的设备上进行高效推理。 修剪是指通过删除模型中的一些参数或神经元来减小模型的复杂性。在卷积神经网络中,修剪通常包括删除一些卷积核或通道,以及减少连接权重的数量。这可以通过一些算法和技术来实现,例如剪枝算法、稀疏矩阵和低秩近似等。 修剪卷积神经网络可以带来多个好处。首先,它可以大大减小模型的尺寸,从而降低了存储模型所需的内存空间。其次,修剪可以减少模型的计算量,使得模型可以更快地进行推理。这对移动设备和嵌入式系统等资源受限的设备非常重要。此外,修剪还可以提高模型的泛化能力,减少过拟合的风险。 对于修剪卷积神经网络的代码实现,一般分为两个步骤。首先,需要训练一个初始的卷积神经网络模型。然后,通过一些修剪算法选择要修剪的参数或神经元,并将其从模型中移除。修剪的目标可以是按照权重大小或梯度大小进行选择。 在实际编程中,代码可以使用一些深度学习框架(如PyTorch或TensorFlow)来实现。这些框架通常提供了一些修剪工具和函数,以便进行参数和神经元的修剪。开发者需要根据具体的应用场景和需求来选择合适的修剪策略,并根据框架的API来实现修剪过程。 总之,代码修剪卷积神经网络是一种资源高效推理的方法,通过减小模型的尺寸和计算量,提高模型的效率和性能。这对于在资源受限的设备上进行深度学习推理任务非常有意义。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值