Data-Driven Sparse Structure Selection for Deep Neural Networks 论文翻译

来源:互联网 发布:负卡路里食物 知乎 编辑:程序博客网 时间:2024/05/20 13:16

摘要
深度卷积神经网络在各种任务中已经展现出其非同凡响的效果。然而,由于其很高的计算复杂度,将最先进的模型部署到现实应用中任然是很具有挑战性的。如何在没有大量实验和专家知识的情况下设计一个紧凑而有效的网络?在本文中,我们提出了一种简单有效的框架,以端对端的方式学习和修剪深度模型。

在我们的框架中,首先引入了一种新的参数缩放因子来缩放特定结构的输出,如神经元,组或残差块。然后我们对这些因素加上稀疏正则化,并通过改进的随机加速近似梯度(APG)方法来解决这个优化问题。通过将某些因素强制为零,我们可以安全地删除相应的结构,从而修剪CNN的不重要部分。与可能需要数千次试验或迭代微调的其他结构选择方法相比,在一次没有别的什么华而不实的训练中(这句有点儿纠结,大概意思差不多),我们的方法得到了充分地端到端的训练。我们评估我们的方法,用两种最先进的CNN ResNet和ResNeXt进行稀疏结构选择,用自适应深度和宽度选择展现出了非常满意的效果。

1 Introduction
深度学习方法,特别是卷积神经网络(CNN)在计算机视觉,自然语言处理和语音识别等许多领域取得了显着的效果。然而,这些非凡的表现是以高的计算和存储需求为代价的。虽然现代GPU在过去几年中的实力已经飞涨,但是这些高成本仍然令CNN无法部署在延迟关键应用中,例如自动驾驶汽车和增强现实(AR)等。

近来,已经提出了在推理时加速CNN的大量工作。加速预训练模型的方法主要有直接修剪[1,2],低阶分解[4,5,6]和量化[7,8,9]。另一个研究流派直接训练了小型高效网络,如知识提取[10,11,12],新颖的架构设计[13,14,15]和稀疏学习[16,17,18,19]。其中,基于稀疏的方法引起了更多的关注。先前的工作[16]追求了权重的稀疏。然而,非结构稀疏性仅产生随机连接性,并且几乎不能利用当前现有的诸如GPU的硬件来在系统时间内加速模型推理。 为了解决这个问题,最近的方法[17,18,19]提出应用组稀疏性来保留硬件友好的CNN结构。

在本文中,我们再来看一下CNN的学习和修剪。首先,我们引入一种新型的参数缩放因子,其在CNN中缩放某些特定结构(例如,神经元,组或块)的输出。这些缩放因子使得具有很少参数的CNN具有更大的灵活性。然后,我们在这些缩放因子上增加稀疏正则化,使它们在训练期间为0。最后,我们可以安全地删除相当于零缩放因子的结构,并获得修剪的模型。与直接修剪方法相比,这种方法是数据驱动和完全端到端的。换句话说,网络可以根据每个任务的难度和需求来选择其独特的配置。 此外,模型选择与CNN的正常训练联合完成。 我们不需要额外的微调或多阶段优化,而且只会在训练中引入少量代价。

总而言之,我们的贡献有以下三个方面:
·我们为CNN模型训练和剪枝提出了一个统一的框架。特别地,我们通过在某些CNN结构上引入缩放因子和相应的稀疏正则化,将其定义为联合稀疏正则化优化问题。

·我们在两个最先进的网络ResNet和ResNeXt上测试我们提出的方法,分别修剪残差块和组。我们可以自适应地调整深度和宽度。我们在CIFAR和大型ILSVRC 2012图像分类数据集上展示出非常有前途的加速性能。特别是,我们是第一个使用最新的CNN模型(如ResNet和ResNeXt)来展示大规模ILSVRC数据集的有效加速度结果。

2 Related Works
网络修剪是神经网络早期发展的先驱。在最佳脑损伤[20]和最优脑外科医生[21]中,基于从损失函数导出的Hessian矩阵,去除不重要的连接。最近,Han et al[1]通过修剪绝对值小于给定阈值的权重来带回这个想法。这种方法需要迭代修剪和微调,这是非常耗时的。为了解决这个问题,Guo等[22]提出了动态网络手术来修剪训练中的参数。然而,它们都只能产生有效的压缩,但不能更快地推断。最近,几项工作通过评估神经元对特定标准的重要性直接修剪了神经元[23,2,3]。 这些方法着重于去除神经元,它们的去除影响最终的预测。另一方面,在[24]中也考虑到要保存的神经元的多样性。他们使用决定点过程[25]来选择不同神经元的子集,并随后合并了相似的神经元。神经元水平修剪可以实现实际加速,中等精度损失,但以端到端的方式无需迭代修剪和再训练,这依然很难实现。

深度学习模型的模型结构学习近来受到越来越多的关注。已经探索了几种方法来学习没有手工设计的CNN架构[26,27,28]。一个流派是通过强化学习[26,27]或遗传算法[28,29]来探索设计空间。另一个流派是利用稀疏学习。[17,18]在神经元的权重上增加了组稀疏正则化,并在训练阶段将其稀疏。最近,Wen等 [19]提出了一种更通用的方法,其将组稀疏性应用于多个网络结构,包括跳过连接中的滤波器形状,通道和层。然而,所有这些方法都面临两个问题:首先,额外的组稀疏正则化可能会相反地恶化效果。其次,这些方法的优化是启发式或不成熟的。它们不能从随机优化的最新发展中受益。
具有跨链连接的CNN已经成为现代网络设计的主流,因为它可以通过跨链连接来减轻超深度网络中的梯度消失/爆炸问题[30,31]。在这些工作中,ResNet及其变体[32,33,34,35]吸引了更多的人注意因为他们简单的设计原理和最先进的表现。最近,Veit等[36]将ResNet解释为许多浅网络的指数集合。他们的解释也在后续的网络设计工作中得到证实[37,38]。他们发现,在删除单个残差块时对性能影响很小。但是,删除越来越多残差块将显著损失精度。因此,加速这种最先进的网络架构仍然是一个具有挑战性的问题。在本文中,我们提出了一种数据驱动的方法来学习网络的架构。通过在训练期间缩放和修剪残差块,我们的方法可以产生更紧凑的ResNet,具有更快的推理速度和更好的性能。

3 Proposed Method
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
4 Experiments
在本节中,我们评估了我们的方法对三个标准数据集的有效性,包括CIFAR-10,CIFAR-100 [46]和ImageNet LSVRC 2012 [47]。两个最先进的网络ResNet [32]和ResNeXt [35]分别用于修剪块和组。

为了优化,我们采用NAG [40,41]和我们修改的APG分别更新权重W和缩放因子λ。我们将W的权重衰减设置为0.0001,并将W和λ的动量定为0.9。权重如[48]所示初始化,所有比例因子都被初始化为1。所有的实验在MXNet [43]中进行。代码将公开发布。

4.1 CIFAR
我们从CIFAR数据集开始评估我们的方法。CIFAR-10数据集包括50K训练和10K测试RGB图像与10类。CIFAR-100类似于CIFAR-10,除了它有100个类。如[31]所述,输入图像是从零填充的40×40图像或其翻转中随机裁剪的32×32图像。我们的实验中的模型在单个GPU上以64的批量训练。我们从学习率0.1开始,训练模型240个epochs。学习率在第120,第160和第200个epochs被除以10。

ResNet:要学习残差块的数量,我们使用ResNet-20和ResNet-164 [32]作为基准网络。 ResNet-20由9个残差块组成。每个块具有2个卷积层,而ResNet-164在每个块中具有54个具有瓶颈结构(bottleneck structure)的块。图2总结了我们的结果。参数和FLOP(乘法加法)都报告出来了。很容易看出,我们的SSS比具有相似参数和FLOP的基准模型实现更好的性能。对于ResNet-164,我们的SSS在CIFAR-10和CIFAR-100中都能产生2.5倍加速,大约2%的loss。CIFAR-100的三个修剪ResNets的架构如表1所示。
我们发现,早期阶段的块首先被修剪。这一发现与通常的设计相吻合,因为随着感受野的增加,越来越多样化和复杂的模式可能出现,网络应该在后期花费更多的预算。

此外,我们尝试通过在残差块中的所有权重上添加组稀疏来评估[19]中提出的SSL的性能。但是,我们发现网络的优化不收敛。我们猜想原因是我们定义的组中的参数数(一个残差块)远大于原始文章(单层),在[19]中采用启发式阈值的正常SGD无法解决这个优化问题。

ResNeXt:我们还在ResNeXt [35]上测试我们的方法。我们选择ResNeXt-20和ResNeXt-164作为我们的基础网络。这两个网络都有残差块中的32个组的瓶颈结构。对于ResNeXt-20,我们集中于组修剪,因为它只有6个残差块。对于ResNeXt-164,我们在组和块上都添加稀疏性。图3显示了我们的实验结果。组修剪和块修剪都显示出参数和性能之间的良好折衷,特别是在ResNeXt-164中。 组和块修剪的组合在CIFAR-10中非常有效。我们的SSS节省了大约60%的FLOP,同时实现了比原先高1%的精度。在ResNext-20中,第一个和第二个块中的组首先被修剪。类似地,在ResNext-164中,浅层残差块中的组主要被修剪。修剪模型的结构与倒角金字塔相似,层越深宽度越大。

4.2 ImageNet LSVRC 2012
为了进一步证明我们的方法在大规模CNN中的有效性,我们对ResNet-50 和ResNeXt-50(32×4d)对ImageNet ILSVRC 2012分类任务进行了更多的实验。 我们根据ResNet的公开可用的MXNet实现进行数据扩充。ResNet-50的4个GPU中的批量尺寸为128个,ResNeXt-50的8个GPU为256个。优化和初始化与CIFAR实验相似。我们将模型训练120个epochs。学习率初始值设定为0.1,然后在第30,第60和第90epochs除以10。ImageNet数据集的所有结果总结在表3中。

对于ResNet-50,我们尝试了三种不同的γ设置来探索我们在块修剪中的方法的性能。为了简单起见,我们训练的模型表示为ResNet-20,ResNet-35和ResNet-41,具体取决于它们的深度。其结构如表2所示。所有修剪的模型都具有精度损失。在非常大的数据集(如ImageNet)中,很难在不损失性能的情况下删除参数。与ResNet-50相比,ResNet-41提供16.3%的FLOPs减少同时具有1%的精度损失,而ResNet-35可以节省25%8%的FLOP,损失约2%。然而,我们的数据驱动方法选择更好的网络结构。如图4所示,与ResNet-34相比,我们的ResNet-41和ResNet-34都能以较少的FLOP产生更好的性能。对于ResNeXt-50,我们在残差块和组中增加了稀疏约束,这就产生了ResNeXt-41模型。“conv5”阶段的三个残差块完全被修剪。保留组的数量是[13;26;15;24;23;31;27;26;30;32;32;32;32]。这种修剪结果与CNN的一般设计有些矛盾,今后值得深入研究。学习的ResNeXt-41在ILSVRC验证集中产生25%的top-1 error。它与原始的ResNet50具有相似的结果,但具有一半参数和30%以上的更少的FLOP。

5 Conclusions
在本文中,我们提出了一种数据驱动方法,稀疏结构选择(SSS)来自适应地学习CNN的结构。在我们的框架下,CNN的训练和修剪被形成为联合稀疏正则化优化问题。引入缩放因子来缩小特定结构的输出,通过将缩放因子变为0,我们的方法可以去除与零缩放因子相对应的结构。为了解决这个具有挑战性的优化问题,将其适应深度学习模型,我们修改了加速近似梯度法。在我们的实验中,我们在两个最新的CNN结构ResNet和ResNeXt上展示出了非常有希望的修剪结果。我们可以根据手头的预算和每个任务的困难程度自适应调整这些CNN的深度和宽度。我们相信这些修剪结果可以进一步激发更紧凑的CNN的设计。

在未来的工作中,我们计划探索用我们方法的更多的应用程序,如对象检测和语义分割。调查使用更先进的稀疏正则化器(如非凸松弛)也是有趣的,并且根据不同结构的复杂性来调整惩罚项。

阅读全文
0 0