论文笔记_Learning both Weights and Connections for Efficient Neural Networks

这篇论文是韩松大佬的文章,开始膜拜吧!

摘要

  神经网络既是计算密集型的,也是存储密集型的,这两个特点导致其无法在嵌入式设备上部署使用。另外,卷积神经网络在训练过程之前就确定了其网络架构,训练并不会改变神经网络的架构。本文提出一种基于数量级的方法,找到网络中重要的连接,在不影响神经网络性能的基础上,减少网络所需的算力和存储空间。首先,训练一个神经网络得到其最重要的连接;然后,剪掉不重要的权重连接;最后,重训练网络中剩余的连接进行微调,保证网络的性能不受影响。本文的方法在保证AlexNet(ImageNet 数据集)性能的情况下,将网络的参数数量从6.1千万降低到6.7百万,降低了9倍左右;同样,VGG-16网络性能不变的情况下,将其参数数量从1.38亿降低到1.03千万,降低了13倍。

1.介绍

  神经网络在计算机视觉、语音识别、自然语言处理等领域应用广泛。卷积神经网络用于计算机视觉任务的应用随着时间的推移而增长。1998年,LeCun等人设计了一个卷积神经网络模型LeNet-5用于手写数字识别,其参数数量少于1M,2012年时,Krizhevskyet等人使用AlexNet得到了当年的ImageNet图像识别的冠军,参数数量为60M,文献[5]的Deepface使用1.2亿个参数对人脸进行分类,Coateset等人更是将参数数量扩展到10Billion。
  虽然这些大型神经网络功能非常强大,但它们会消耗大量的存储、内存带宽和计算资源。对于嵌入式移动应用程序来说,这些资源需求令其望而却步。图1显示了在45nm CMOS工艺中基本运算和内存操作的能量消耗,从这些数据中我们可以看到,每个连接的能量由内存访问决定,每个连接的能量小号范围从片内SRAM中取得一个32位数的5pJ能量消耗,到从片外DRAM中取得一个32位数640pJ的能量消耗。大型网络不适合片上存储,因此需要更昂贵的DRAM访问。例如,在20Hz的处理器上运行一个10亿个连接的神经网络,仅仅是DRAM访问就需要(20Hz)(1G)(640pJ) = 12.8 W的能量,——远远超出了典型移动设备的功率范围。我们修剪网络的目标是减少运行如此大的网络所需的能量,以便它们能够在移动设备上实时运行。剪枝后的模型尺寸减小还有助于包含DNN的移动应用程序的存储和传输。在这里插入图片描述
  为了实现这一目标,我们提出了一种以保持原始精度的方式修剪网络连接的方法。在初始训练阶段之后,我们删除所有权重低于阈值的连接。这种修剪将密集的、完全连接的层转换为稀疏层。第一个阶段学习网络的拓扑结构,学习哪些连接是重要的,并删除不重要的连接。然后,我们对稀疏网络进行重训练,以便剩余的连接可以补偿已删除的连接。剪枝和重训练的过程可能迭代进行,以进一步降低网络复杂性。实际上,这个训练过程除了学习权重参数之外,还学习网络连接——就像哺乳动物大脑一样,在儿童发育的最初几个月里,大脑会产生神经突触,然后逐渐修剪掉一些用处小的连接,使其降至典型的成人值。

2.相关工作

  神经网络是典型的过参数化模型,且深度神经网络中存在大量的冗余参数,这对于计算或存储都是一种浪费。现存的有很多种消除冗余参数的方法:[1]提出了一个定点化方法,将32位激活函数浮点数量化为8位定点整数,[12]使用低秩分解的方法,在网络性能基本不变的情况下,将模型大小缩小至原来的1%,[13]使用向量量化方式对深度卷积神经网络进行压缩。这些近似和量化方法与剪枝方法是正交的,可以与剪枝方法混合使用,从而获得刚好的压缩性能。
  还有一种通过使用全局平均池化代替全连接层的压缩方法。[15]和[16]中的网络使用这种方式,在多个benchmark上达到了顶尖的水平。但是,例如在迁移学习中使用这种方法就比较困难,[16]最先注意到了这个问题,并在网络的最后添加一个线性层来使能迁移学习。
  一直以来,网络剪枝都被用在减小模型复杂度或者减少过拟合。最早的剪枝方式是使用偏置权重衰减[17],OBD[18]和OBS[19]都是通过损失函数的海森矩阵对网络连接进行裁剪,并且生成其方法比基于大小的剪枝(例如权重衰减)效果要好。
  HashNet[20]使用一个哈希函数将所有的参数连接分组,同一个组内的参数使用同一个数代表,从而大大减少模型参数数量。[21]和[22]则进一步解决了哈希碰撞的问题,加速了哈希过程。HashNet也许可以和剪枝一起使用。

3.Learning Connections in Addition to Weights

  本文的剪枝方法主要分为3个步骤,如图2所示。首先,通过一般的神经网络训练学习网络的连接,不像是传统的网络训练,本文训练学习的不是最终的权重值,而是学习连接的重要程度。然后,将数值低于某一阈值的权重对应的连接全部删除,从而将一个连接稠密的网络转换为一个稀疏的网络,如图3所示;最后,重训练网络中剩余的连接从而学习到连接对应的最终权重值,这一步很关键,如果剪枝之后的网络没有重训练,那么网络的性能会受到很大的影响。

3.1正则化

  选择正确的正则化对剪枝和重训练的性能都有影响。L1正则化对非零参数进行惩罚,使得更多的参数接近于零,这可以在剪枝之后取得更好的准确性,但在重训练之后,L1正则化的准确性不如L2正则化好。总的来说,L2正则化给出了最佳修剪结果。这将在实验部分进一步讨论。

3.2 调整Dropout ratio

  在神经网络训练中,dropout被广泛应用来防止过拟合,在本文的重训练中,也需要使用dropout。然而,在重训练期间,dropout率必须调整,以适应模型容量的变化。在训练过程中使用dropout时,每个参数都有一定的可能性(即概率)被丢弃,但是在推理过程中,被dropout掉的参数还是会参与运算。但是,在剪枝过程中删除掉的参数,不管是训练还是推理阶段,都不会再参与运算。当参数变得稀疏时,分类器将选择信息量最大的预测器,从而使预测方差大大减小,从而减少了过拟合。由于在剪枝阶段已经降低了模型容量,所以在重训练过程中的dropout率应该更小。
  定量的说,令 C i C_i Ci表示第 i i i层的连接数量, C i o C_{io} Cio表示剪枝之前的第 i i i层的连接数量, C i r C_{ir} Ci

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值