网络模型剪枝-论文阅读《Learning both Weights and Connections for Efficient Neural Networks》

这是2015年NIPS的一篇经典的剪枝文章,由韩松大神所作,由于年代比较久远,所以就大概说一下它的重点内容,以便给模型剪枝有个初始印象。

Introduction

文章首先讲了LeNet、AlexNet和VGG这些当时经典的网络的参数量的非常大,同时需要的存储空间也越来越大;然后以能量消耗的角度谈了这些模型运行具体能消耗多少能量。这就引出了本文的目标,就是对较大的网络模型进行剪枝以降低能量消耗从而能在移动端实时运行。

文章提出的剪枝策略是:①在初始模型训练完成后,②移除权重低于特定阈值的所有连接,即从稠密连接的网络剪枝得到一个稀疏连接的网络,③然后重新训练得到的网络用来减小精度损失。其中,②③两步可以多次迭代进行以得到最优模型。如图所示:

网络模型剪枝-论文阅读《Learning both Weights and Connections for Efficient Neural Networks》_第1张图片

该策略能在剪枝后还能保持原有的精度几乎不损失。

Learning Connections in Addition to Weights

这里文章分析了一些(重)训练中使用的方法对重训练的影响。

正则化(Regularization)

我们知道,L1正则化使得网络模型变得稀疏,作者通过实验证明,如果不进行重训练的话,L1正则化比L2正则化使得网络精度损失少(如下图中随着剪枝比例增加,蓝色比紫色精度损失更少),但是经过重训练后L2正则化比L1正则化更好(如下图绿色对黄色)。而经过多次迭代重训练后,L2正则化能达到更少的精度损失。

作者尝试使用L1进行初始训练,然后剪枝后用L2进行重训练,但是实际效果并不如全用L2正则化。

值得注意的是,在使用L2剪枝比例60%-80%的时候(绿线),网络精度是有所增加的,作者相信这是因为剪枝使得网络的冗余降低从而降低了过拟合。

网络模型剪枝-论文阅读《Learning both Weights and Connections for Efficient Neural Networks》_第2张图片

Dropout比例调整

在重训练过程中,dropout比例必须要调整才能适应新模型容量。这是由于网络连接C是与神经元数N成二次关系,如下图公式1,所以新的dropout比例Dr与原比例D0之间的关系如下图公式2:

在这里插入图片描述

剪枝与参数的协作

重训练中,新模型最好是使用旧模型训练好的参数进行训练,而不是重新初始化参数;同时,为了避免梯度消失的问题,在剪枝卷积层的时候,固定FC层进行冲训练,在剪枝FC层的时候,固定卷积层进行重训练。

神经元剪枝

在进行连接剪枝后,如果有些神经元会没有任何输入连接或者输出连接,那么这些神经元是可以被剪枝掉的。

实验

接下来是实验部分,这里就放几张表格。

网络模型剪枝-论文阅读《Learning both Weights and Connections for Efficient Neural Networks》_第3张图片

可以看出,该方法在几乎不损失精度的前提下,能对一些通用简单模型进行9-13X的压缩,如VGG能压缩13倍。与其他方法的对比中也能看出其优越性:

网络模型剪枝-论文阅读《Learning both Weights and Connections for Efficient Neural Networks》_第4张图片

以上就是本文的主要内容。

你可能感兴趣的:(网络模型加速和压缩,剪枝,论文笔记,神经网络,深度学习,网络模型压缩,网络模型加速,剪枝)