深度神经网络的压缩和正则化剖析

深度神经网络的压缩和正则化剖析,第1张

利用深度压缩和DSD训练来提高预测精度。

深度神经网络已经成为解决计算机视觉、语音识别和自然语言处理等机器学习任务的最先进的技术。尽管如此,深度学习算法是计算密集型和存储密集型的,这使得它难以被部署到只有有限硬件资源的嵌入式系统上。

为了解决这个限制,可以使用深度压缩来显著地减少神经网络所需要的计算和存储需求。例如对于具有全连接层的卷积神经网络(如Alexnet和VGGnet),深度压缩可以将模型大小减少35到49倍。即使对于全卷积神经网络(如GoogleNet和SqueezeNet),深度压缩也可以将模型大小减少10倍。而且上述两种压缩情况都不会降低模型预测的精度。

当前的训练方法有不足之处

压缩模型而不丢失其精确度意味着在训练好的模型中有严重的冗余,这说明当前的训练方法有不足之处。为了解决这个问题,我和来自NVIDIA的JeffPool、百度的Sharan Narang和Facebook的Peter Vajda合作开发了“密集-稀疏-密集”(DSD)的训练方法。这是一种新的方法,它首先通过稀疏约束的优化方法将模型正则化,然后通过恢复和重新训练被剪枝的连接的权重来提高预测精度。

测试时,由DSD训练得到的最终模型仍然跟原始密集型模型具有相同的架构和维度,并且DSD训练不会增加任何推理开销。我们对主流的神经网络(如CNN / RNN / LSTM)架构用DSD训练方法进行了图像分类、图像描述和语音识别的实验,发现模型有显著的性能改进。

在本文中,我们会首先介绍深度压缩,然后介绍“密集-稀疏-密集”(DSD)训练方法。

深度压缩

深度压缩的第一步是“突触剪枝”。 人类大脑是有这一剪枝过程的。从婴儿时期到成年,人脑会有5成的突触会被修剪掉。

类似的规则是否适用于人工神经网络呢?答案是肯定的。在早期的工作中,网络剪枝已经被证明是一种减少网络复杂度和过度拟合的有效方法。这种方法也适用于现代神经网络。首先我们通过常规神经网络训练来学习网络连接权重。然后我们会剪枝权重值较小的连接:即删除网络中权重值低于某一阈值的所有连接。最后,我们重新训练网络,得到剩余稀疏连接的权重值。剪枝方法使AlexNet和VGG-16模型的参数数量分别减少了9倍和13倍。

深度神经网络的压缩和正则化剖析,深度神经网络的压缩和正则化剖析,第2张

 

图1. 剪枝一个神经网络。所有图片由Song Han 友情提供

深度压缩的下一步是权重共享。我们发现神经网络对低精度权重值具有非常高的容忍度:极度粗略的权重值并不会降低预测精度。如图2所示,蓝色权重值最初为2.09、2.12、1.92和1.87,然后让它们共享相同的权重值2,网络的预测精确度仍然不受影响。因此我们可以只存储非常少量的权重值,称之为“编码本”。并让许多其他权重共享这些相同的权重值,且只在码本中存储其索引即可。

索引可以用非常少的比特数来表示。例如在下图中存在四种颜色,因此仅需要两位来表示一个权重而不用原来的32位。另一方面,编码本占用的存储空间几乎可以忽略不计。我们的实验发现,就权衡压缩比和精度而言,这种权重共享技术是优于线性量化的方法的。

深度神经网络的压缩和正则化剖析,深度神经网络的压缩和正则化剖析,第3张

 

图2. 训练权重共享的神经网络

图3显示了使用深度压缩的总体结果。Lenet-300-100和Lenet-5是在MNIST数据集上评估的,而AlexNet、VGGNet、GoogleNet和SqueezeNet是在ImageNet数据集上评估的。压缩比从10倍到49倍不等。即使对于那些全卷积神经网络(如GoogleNet和SqueezeNet),深度压缩仍然可以将它们压缩一个数量级。我们重点看一下SqueezeNet,它比有相同预测精度的AlexNet少50倍的参数,但仍然还可以再压缩10倍使其模型大小只有470KB,这使它可以很容易地在片上SRAM里使用。而访问SRAM比DRAM更快更节能。

我们还尝试了其他压缩方法,例如基于低秩近似的方法,但是压缩比没有那么高。你可以在Deep Compression的论文中找到完整的讨论。

深度神经网络的压缩和正则化剖析,深度神经网络的压缩和正则化剖析,第4张

 

图3 深度压缩的实验结果

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2601147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存