模型压缩:识别感知的深度神经网络信道裁剪 | 论文分享

信道裁剪是深度模型压缩的主要领域之一。现存的裁剪方法有的用信道的稀疏约束来训练模型,有的用最小化预训练模型和压缩模型间的特征图重建误差。两种策略都有一些限制:前者计算代价高而且难以收敛,后者优化重建误差但忽视了信道的识别能力。 本文提出了一个简单而有效的方法,称作识别感知信道裁剪,用于选择真正对识别能力有贡献的信道。

 

本文介绍的方法是开源模型压缩框架PocketFlow的裁剪方法之一。

 

 

相关研究

 

网络量化

 

Rastegari等人提出将网络中的参数量化为+1/-1。所提出的BWN和XNOR-Net可以在大规模数据集上达到能和对应全精度相媲美的准确度。在Dorefa-net中,CNN的高精度权重,激活和梯度被量化为低比特位版本,带来了资源和硬件能力需求的大量减少。通过引入0作为第三个量化值,三元权重网络TWNs能达到比二元神经网络更高的精度。

 

稀疏或低等级连接

 

为了减少神经网络存储需求。Han等人提出零输入或输出连接的神经元能从神经网络中安全的移除。通过L1/L2正则化的帮助,权重在训练中被推向0。随后AlexNet的压缩率通过剪枝、量化、哈夫曼编码能达到1/35。考虑到参数重要性在剪枝过程中被改变,Guo等人提出动态网络手术。通过之后提出的使用稀疏约束训练能达到更高的压缩率。

 

信道裁剪

 

对比网络量化和稀疏连接,信道裁剪同时从网络中移除信道和相关过滤器。因此只需要一点工作就能很好地被现存深度学习库支持。 信道裁剪的关键问题是评估信道重要性。 Li等人提出通过计算权重绝对值之和来测量信道重要性。Hu等人定义APoZ测量神经元的激活。通过目标函数的稀疏正则化,基于训练的方法能在训练阶段学习到压缩模型。考虑到效率,重建方法将信道选择问题转换为重建损失的优化问题,并通过贪婪策略或LASSO回归来解决。

 

方法

 

使 为训练样本,N代表样本数量。给定一个L层CNN模型M,使 为模型第l卷积层的参数。 为过滤器的高和宽;c和n代表输入和输出的信道数。 代表输入的特征图和相应输出特征图。 为第i个样本第k个信道的特征图。 记为第k个输入信道和第j个输出信道对应的参数。第i个样本第j个信道对应的特征图 为: 给定预训练模型M,信道裁剪的任务是裁剪W的冗余信道,从而减少模型大小,加速运算。

 

为了选择信道,本文介绍 的变体:

 

 

如果 。||·||F代表Frobenius正则化。

 

动机

 

给定一个预训练模型M,现存方法最小化M和裁剪模型的重建误差:

 

 

为了增加中间层的识别能力,介绍对于深度网络中间层的额外损失。在本文中,我们均匀地插入P个识别感知损失 。使 为插入损失的层。

 

LP+1为最后一层L。对于第p个损失,我们在 层中做信道裁剪,当p=1时

 

构建识别感知损失

 

 

如图1所示,每一个损失使用 的输出作为输入特征。为了使损失的计算更容易,本文在特征图上使用平均池化,为了加速收敛,在平均池化前使用batchnorm和ReLU,最终计算对于在 层输入特征图的损失

 

代表 层的输出特征图, 为第i个样本的特征图。关于第p个loss的识别感知损失为:

 

 

I{·}是指示器函数。通过同时考虑交叉熵损失和重建损失,我们得到联合损失函数:

 

 

最后对于识别感知的信道裁剪优化问题描述为:

 

 

识别感知的信道裁剪

 

通过在中间层加入P个损失 ,被提出的识别感知信道裁剪算法如算法1所示。从预训练模型M开始,执行P+1个阶段的信道裁剪。

 

 

用于信道选择的贪婪算法:

 

 

直接优化问题(7)是非常困难的,本文提出贪婪算法解决。具体而言,首先移除所有信道,然后选择真正对深度网络识别能力有贡献的信道。使 为被选择信道的索引,期初未空集。如算法2所示,一旦A被决定,根据被选择的信道优化W,通过最小化如下问题:

 

 

通过 优化

 

停止条件

 

由于L是凸函数,L(Wt)将随着算法2中的迭代索引t单调下降。因此可以采取如下停止条件:

 

实验

 

这一部分,本文经验性的评价识别感知的信道裁剪。使用几个state-of-the-art方法来作为基准,包括ThiNet、Channel pruning和Slimming。此外,对于提出的方法其他几个变体也做了比较,包括DCP(使用裁剪率n的识别感知信道裁减),DCP-Adapt(使用停止条件的DCP),Random DCP(随机选择信道代替基于梯度测策略)。

 

本文在Pytorch上实现提出的方法。基于预训练模型,应用本文方法选择信道。在实践中,通过网络深度选择额外损失的数量P。具体的,在ResNet-50中插入3个损失,在VGG和ResNet-18中插入2个损失。

 

使用添加nesterov的SGD作为优化器,momentum和权重衰减设置为0.9和0.0001。设置为1.0。在CIFAR-10,使用大小为128的mini-batch微调400个epochs。学习率初始化为0.1,在epoch160和240处除以10。在ILSVRC-12我们微调60个epochs,mini-batch为256,学习率从0.01开始,在epoch36,48,54处除以10。

 

在CIFAR-10上的比较:

 

 

本文提出的方法在相同加速率上有最好的表现,DCP-Adapt裁剪的VGG网络比原与训练模型降低了0.58%的测试误差,并获得了15.58倍的尺寸减少。

 

 

在ILSVRC-12上的比较:

 

 

为了验证再大型数据集的有效性,本文使用该方法在ILSVRC-12数据集ResNet-50网络中实现2倍加速。本文方法比ThiNet在top-1中低0.81%误差,在top-5中低0.51%误差。对比channel pruning,降低了0.79%的top-5误差。

 

本文地址: https://arxiv.org/pdf/1810.11809.pdf

发表评论

电子邮件地址不会被公开。 必填项已用*标注