基于MB—K—Means的网络模型参数压缩
2019-05-22陈华裔
陈华裔
摘要:深度学习目前是计算机领域研究热点之一,而神经网络是深度学习不可缺少的一部分,然而深度网络模型参数巨大,导致迁移学习困难,硬件需求条件巨大。该文提出了一种基于MB-K-Means算法对权重进行聚类,并进行量化的压缩方法。首先,对模型的参数权进行剪枝,并进行稀疏训练恢复其精度。第二,基于MB k-means算法进行权重聚类,然后权重量化共享。利用算法能够增加网络的训练速度,在深度卷积神经网络上进行参数压缩,减少网络模型大小。实验表明,在ImageNet-1000数据集上,AlexNet模型缩小了31倍,VGG模型的缩小了45倍。
关键词:网络参数;MB-K-Means算法;卷积网络;参数压缩
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2019)06-0157-02
1引言
近几年来,随着技术的发展,深度神经网络所代表的AI,是被大家所公认的技术。如今,深度神经网络已被广泛的应用与计算机视觉、语音、自然语言等大领域,取得巨大的成功。特別在计算机视觉方面,图像识别以及图像检测等方面,几乎是目前所有的智能图像识别系统都采用深度学习。
自从2012ILSVRC上AlexNet取得优异的成绩以后,越来越多研究员开始对卷积神经网络进行研究,其中最具有代表性的CNN模型,如VGG,GoogLeNet,RetNet等,大大提高了模型的准确率,然而这其中由于模型的层数过多,比如VGG网络的卷积层占据了10%的参数规模;全连接层占据了大约90%的参数规模,这为深度网络模型的压缩提供了依据,由于参数的原因导致无法部署在手机或者更小的设备上。
2 相关工作
为了降低网络复杂度,保证模型的性能没有太大变化,目前有很多不同流派的模型压缩和加速的方法,总体可以分五大类:设计新的网络模块、知识蒸馏、低秩分解、量化、剪枝。
对于设计新的网络模块,目前有比较代表的研究,如:SqueezeNet,MobileNet和ShuffleNet。对技巧和经验要求较高性能更好的模型。Lei等人提出了知识蒸馏(KD)方法,该方法有效降低计算量,使得模型层数变浅;但是由于只能使用Softmax损失函数的分类任务,导致在性能方面有所不足。低秩分解技术也越加成熟,现在越来越多的网络采用1X1的小卷积核来分解实现网络模型的压缩,但是效果有限。
剪枝网络通过微调来实现网络的精度,已经被广泛应用与CNN的模型。Han等人16年提出的“Deep Compreession”方法,是当年的最佳论文,其中包括三种方法,参数剪枝、量化和霍夫曼编码压缩。目前通过剪枝、量化的方法是比较高效且效果较好的办法。但是剪枝如何找到一个有效衡量权重或卷积核的重要性标准是目前所需要关注的的。主流的有通过确定一个阈值剪枝和通过老师-学生的网络模型来剪枝。量化方法多种多样,一般是对权值进行聚类后在进行量化操作。
3 模型参数压缩方法
首先,对深层模型进行剪枝能降低模型参数,解决模型对设备的大量需求,对于权重W进行剪枝,设定一个阈值,去掉低于这个阈值的权重连接,通过微调恢复模型精度,得到一个相对稀疏的网络模型。第二,提出基于MB-K-MEANS方法进行权值聚类,取得聚类中心,然后在将对各层进行权值共享,进一步得到压缩的模型。最后,使用哈夫曼编码压缩技术进一步压缩模型。整体框架图1如下:
3.1 网络模型的剪枝
模型的剪枝过程主要分为三步:
1)首先对原先的网络进行训练,得到最开始训练好后保存的模型。
2)然后设置一个阈值对该网络进行剪枝操作,本文设置的阈值为前20%,将每层权重的绝对值排序,取前20%进行剪枝,达到压缩的目的
3)然后对剪枝后的网络进行恢复训练,通过微调一些参数,恢复到原来的精度。
剪枝完成后,原先连接比较密集的网络,就会变成稀疏的网络,然后经过一轮一轮的迭代,精度随着网络的迭代次数,恢复到原先的精度。
经过网络剪枝后变成稀疏网络。而稀疏网络一般用一种更紧凑的方式CSR(Compressed Sparse Row)或者CSC(Compressed Sparse Cloumn)来存储,根据实验对比,本文选用的是CSC格式的存储模式。
3.2 基于MB-k-means算法的权值共享和量化
传统的K-Means算法对于大数据处理的效率是较高的,且是可伸缩性的,但是且在大批量数据下,其效果往往优于其它聚类算法,但是但是该算法对于初始聚类中心的选择十分敏感,不同的初始点选择方法,可能导致不一样的结果,并且其计算速度也是个问题。
在该算法的基础上,有一种新的变种聚类算法MB-K-means(Mini Batch K-Means)算法,是基于k-means算法的变种,采用小批量的数据子集大大减小计算时间的同时,由于分批对数字子集进行聚类,所以可以一定程度上减小初始聚类中心的敏感度。
其步骤如下:
1)从数据集中随机抽取一些数据形成小批量,把他们分配给最近的质心;
2)更新质心;
对于每一个小批量,通过计算平均值得到更新质心,并把小批量里的数据分配给该质心,随着迭代次数的增加,这些质心的变化是逐渐减小的,直到质心稳定或者达到指定的迭代次数,停止计算。
根据原始的权重W={w1,w2,......,wn} 得到的K个聚类中心,假设量化后是四类,梯度矩阵同样量化为4类,对每类的梯度进行求和得到每类的偏置,和量化中心一起更新得到新的权值。
如图2所示:拿图为例,有16个连接,每一个连接需要用32位的数值进行比较,量化为4类,每类只需要两个bit表示,每类的量化中心值32位。
3.3 基于哈夫曼编码的压缩
哈夫曼编码是一种非常常用的无损编码技术,它按照符号出现的概率大小来进行可变长度的编码。主要用于解决因编码长短不一而带来的冗余问题。网络中的权重参数分布是不均匀的,利用哈夫曼编码来对其进行处理,最终可以使网络的存储得到进一步的压缩。
4 实验
本文选取ImageNet-1000作为数据集,分别在AlexNet网络和vgg-16上进行壓缩实验。本次实验所用的计算机配置是i5-8600K、六核CPU,Windows10操作系统的tensorflow开发平台做实验。GTX1080显卡、24G内存来加速训练。
4.1不同优化方法的分析
当前流行的优化算法有SGD随机梯度下降法、RMSProp梯度下降法、AdaDela梯度下降法等,具体哪种算法最优,并没有一个明确的说法。本文通过实验对比,选择了RMSProp梯度下降法。
4.2 数据集
我们使用的是ImageNet IlSVRC-2012的数据集作为实验,其中其中训练集为128167张图片+标签,验证机为50000张图片+标签,分为1000类,我们采用TOP-1和TOP-5的精度来比较模型的效果。
4.3 实验结果
在AlexNet网络上各个层参数压缩如下表,可以看出修剪过程压缩了10倍,在经过两步压缩,最终压缩到了31被的压缩率。
在VGG上使用同样的办法,修剪压缩了14倍,在经过后面两步压缩了45倍。
将模型的压缩前后进行对比,得出参数大小以及模型TOP-1和TOP-5的精度等具体数值,如下表1所示。
根据以上的结果可以得知,AlexNet和VGG压缩前后的TOP-1、TOP-5的精度可以看作并没有损失,而VGG由于网络更深所以精度比AlexNet高,但参数也多,因此压缩的的倍数也比AlexNet高。可以看到,AlexNet网络模型的大小由 240MB 缩小到了 7.44MB,相对于原模型来说压缩了 31 倍之多;VGG-16 网络的模型大小则由 552MB 降低到了12.42MB,压缩倍数达到了 45 倍之多。
5 结论
随着人工智能时代的到来,很多应用图像识别的领域,都要用到类似的模型。而实现这些效果的途径之一就是深度神经网络。由于目前大多数的模型过大,因此模型的压缩变得很有意义。本文提出的深度神经网络压缩方法,通过一系列实验,得到有效的证明。
【通联编辑:光文玲】