learning both weights and connections 非结构化剪枝 翻译加自己的理解


Learning both Weights and Connections for Efficient Neural Networks

摘要

神经网络是计算密集型和记忆密集型的。使得它们难以部署在嵌入式系统上。此外,传统的网络在培训开始前构建好了架构;因此,训练中不能改善体系结构。为了解决这些限制,我们描述了一种方法,以减少存储和计算所需的神经网络数量级,而不影响其准确性,只学习重要的连接。我们的方法使用三步方法删除冗余连接。**首先,我们训练网络了解哪些连接是重要的。接下来,我们删除不重要的连接。最后。我们对网络进行重新训练,以微调剩余连接的权重。**在ImageNet数据集上,我们的方法将AlexNet的参数数量减少了9倍,从6100万个减少到670万个,并且没有损失准确性。用VGG-16进行的类似实验发现,总参数数可以减少13x。从1.38亿增加到1030万同样准确无误。

介绍

1神经网络已经广泛应用于从计算机视觉到语音识别[2]和自然语言处理[3]的各种应用中。我们考虑卷积神经网络用于随着时间的推移而增长的计算机视觉任务。1998年Lecun等设计了参数小于1M的CNN模型LeNet-5用于对手写数字4I进行分类。Krizhevsky et al。D以60M参数赢得ImageNet比赛。Deepface用120M个参数对人脸进行分类[5],Coates等人[6]将网络扩展到10B个参数。虽然这些大型神经网络非常强大,但它们的大小消耗了相当大的存储内存带宽和计算资源。对于嵌入式移动应用程序,这些资源需求变得令人望而却步。图中包含了45nm CMOS工艺中基本运算和存储操作的能量消耗。从这些数据中我们看到,每次连接的能量主要是内存访问,范围从片上SRAM中的32位系数的5pJ到片外DRAM 7l中的32位系数的640pJ。大型网络不适合芯片存储,因此需要更昂贵的DRAM访问。例如,在20Hz下运行一个10亿连接的神经网络需要(20Hz)(1G)(640p.J) = 12.8W,这远远超出了一个典型移动设备的功率范围。我们精简网络的目标是减少运行大型网络所需的能量,以便它们能在移动设备上实时运行。模型尺寸的削减也有利于存储和传输的移动应用合并了DNNs
2为了实现这一目标,我们提出了一种以保持原始精度的方式裁剪网络连接的方法。在初始训练阶段之后(an initial training phase ),我们删除所有权值低于阈值的连接。这种修剪将稠密的、完全连接层转换为稀疏层。阶段(first phase)学习网络的拓扑结构——了解哪些连接是重要的,并删除不重要的连接。然后我们对稀疏网络进行重新训练,这样剩余的连接就可以弥补被删除的连接。修剪和再训练阶段可以重复进行,以进一步降低网络的复杂性。实际上,这个训练过程不仅学习了权重,还学习了网络连通性——非常像哺乳动物的大脑89。突触是在儿童发育的最初几个月产生的,随后逐渐减少很少使用的连接,下降到典型的成人价值。

相关工作

1神经网络通常是过参数化的,深度学习模型存在显著的冗余10。这会导致计算和内存的浪费。有各种各样的建议来消除冗余:Vanhoucke等人。Il探索了一个8位整数(vs 32位浮点)激活的定点实现者。Denton等人[12]利用神经网络的线性结构,找到参数的合适低近似,并将精度保持在原始模型的1%以内。有相似的精度损失。龚et al。[3]使用矢量量化压缩深度卷积。这些近似和量化技术与网络剪枝是正交的,它们可以共同使用以获得更大的增益我
2还有其他一些尝试,通过用全局平均池代替全连接层来减少神经网络的参数数量。网络体系结构[15]和GoogLenet 16]采用了这一思想,在几个基准测试中获得了最先进的结果。然而,使用这种方法,迁移学习(即重用在ImageNet数据集上学习到的特征,并仅通过微调完全连接的lavers将它们应用到新任务中)更加困难。Szegedy等人注意到了这个问题[16],并促使他们在其网络顶部添加一个线性层,以实现迁移学习。
3网络剪枝被用于降低网络复杂度和减少过拟合。修剪的早期方法是偏重衰减[I7l]。最优脑损伤[18]和最优脑外科医生[19个基于损失函数的Hessian对网络进行修剪以减少连接的数量,这表明这种修剪比基于数量的修剪(如重量衰减)更准确。但是二阶导数需要额外的计算。
4HashedNets[20]是一种通过使用哈希函数将连接权重随机分组到哈希桶来减少模型大小的最新技术。这样,同一个散列桶中的所有连接都共享一个参数值。这种技术可以从修剪中受益。Shi等人[21,Weinberger等人[221]指出,稀疏性将使哈希冲突最小化,从而使特征哈希更加有效。HashedNets可以与修剪一起使用,以提供更好的参数节省。

除了重量之外,还要学习连接

我们的修剪方法采用了三个步骤,如图所示,首先通过常规的网络训练来学习连通性,这与传统的训练不同。然而,我们并不了解权重的最终值。而是我们在学习哪些联系是重要的第二步是修剪低重量的连接。所有权值低于阈值的连接都从网络中移除——将密集网络转换为稀疏网络,如图所示。最后一步对网络进行重新训练,以了解剩余稀疏连接的最终权值。这一步至关重要。如果不进行再训练而使用修剪后的网络,准确率会受到很大影响。
正则化
选择正确的正则化方法会影响剪枝和再训练的性能。LI正则化惩罚非零参数,导致更多的参数接近零。这在修剪之后,但在重新训练之前,提供了更好的准确性。然而,其余的连接不如L2正规化的好,导致再训练后精度较低。总的来说。L2正则化给出了最好的剪枝结果。这将在实验部分进一步讨论
dropout率
Dropout[23]被广泛用于防止过拟合,这也适用于再训练。然而,在再训练期间,dropout率必须进行调整,以考虑dropout中模型容量的变化,每个参数在训练期间都有概率下降,但在推理时又会回来。在剪枝过程中,参数在剪枝后被永久删除,并且在训练和推理中都没有机会返回。随着参数的稀疏化,分类器选择的预测因子最多,预测方差更小,减少了过拟合。由于裁减已经降低了模型容量,再培训的退出率应该更小。定量,让C;为第i层的连接数,Cio为原网络,Cir为再训练后的网络,N;为第i层神经元的数量。由于dropout作用于神经元,且C’与Ni呈二次变化,因此根据式i故对参数进行修剪后的drop - out ratio应符合式(D为原始drop - out rate, D为再训练时的drop - out rate)。
在这里插入图片描述
局部剪枝和参数协同适应
1在再训练期间,保留修剪后存活的连接在初始训练阶段的权重要比重新初始化修剪后的lavers更好。cnn包含脆弱的协同适应特征[24l:梯度下降能够在网络初始训练时找到一个很好的解决方案。但在重新初始化并重新训练一些lavers之后就不会了。因此,当我们重新训练修剪后的lavers时,应该保留幸存的参数,而不是重新初始化它们。

2从保留权重开始重新训练修剪过的层需要较少的计算量,因为我们不需要在整个网络中反向传播。此外,随着网络的深度增加,神经网络容易出现[25]梯度消失问题,这使得深度网络的剪枝错误更难恢复。为了防止这一点。我们修复了CONV lavers的参数,只在修剪了FC层之后再训练FC层,反之亦然。

迭代剪枝
学习正确的连接是一个反复的过程。修剪后再训练是一次迭代,多次这样的迭代后,可以找到最小连接数。在不损失准确率的情况下,该方法可以将AlexNet上的剪枝率从5倍提高到9倍。每次迭代都是一次贪婪的搜索,因为我们要找到最好的连接。我们也实验了基于绝对值的概率剪枝参数,但这给出了更糟糕的结果

剪枝神经元
在修剪连接之后,输入连接为零或输出连接为零的神经元可以被安全地修剪。再训练阶段会自动达到这样的结果,即死神经元的输入连接为零,输出连接为零。这是由于梯度下降和正则化。一个输入连接为零(或输出连接为零)的神经元对最终的损失没有任何贡献,导致其输出连接(或输入连接)的梯度分别为零。只有正则化项会将权重推到零。因此,在再训练时,死亡的神经元会被自动移除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值