Dynamic Network Surgery实验

本文收录在无痛的机器学习第二季目录

感谢@我爱机器学习对本文的审阅。

这一次我们来看看网络压缩的一个方案——来自英特尔实验室的一篇做模型压缩的论文以及相关的实验:Dynamic Network Surgery for Efficient DNNs

算法原理

论文中对网络压缩算法的介绍还是很高大上的,但是这些高大上的内容和最终的实现相比还是有一些距离。本着减少痛苦的原则,让我们用大白话来介绍这个算法的具体过程。

模型压缩是希望用最少的参数做同样的事,这对于在一些特殊的设备上运行深度学习模型来说是很有帮助的。比方说在手机上跑一个VGG模型,恐怕存放这个模型的所需的空间就能让人吓一跳。从另外一方面讲,深度学习的模型中不是每一个参数都那么有用,我们可以适当地关闭一些影响力不大的参数,同时又能保持精度不会有大的变动,那么这就是一个令人满意的结果。

具体来说怎么做呢?我们给每一个参数添加一个配对参数——Mask。这个Mask可以和参数进行点乘,从而得到被Mask过滤后的参数。如果Mask上的值为1,那么对应位置的参数将被保留,如果Mask上的值为0,那么对应位置的参数将被清除。

有了Mask,我们问题又来了,每一个参数应该设置成什么值呢?一个直观的方案是根据参数数值的大小来判断,一般来说数值越大,它所起到的作用也越大。所以柿子要捡软的捏,我们可以设定一个阈值,把比阈值小的参数关闭掉,只保留大数值的参数。

但是这又带来了一个新的问题。虽然这些被关闭的参数数值都很小,但是累积起来也是一个很可观的数字,我们这样把它们关闭掉,还是有可能造成精度损失的。于是乎,当我们把一些参数关闭后,我们还需要重新训练,让参数在新的环境适应——也许会有新的参数变得很小,从而被关闭,当然也有可能有些被关闭的参数死灰复燃,变得重要起来。所以设置Mask的值和重新训练两个步骤需要交替进行。

说到这里我们就不由地想起Online Learning来。虽然最终的目的不太相同,但是大家都有个共同的心愿,就是给目标函数加一个参数的L0范数。曾经的截断梯度方法也利用了和上面有点类似的思想:

每隔一段时间(窗口),我们对所有的参数进行一遍考察,如果参数的数值太小,我们就将其设为0,关闭掉这个特征对应的参数。

所不同的是,由于截断梯度法所面临的是Online Learning,这个参数说截断就截断了;而我们这里的方法只是加上一个Mask,并不真正删除权重值。不过看上去这两个领域的思想也许能擦出更多的火花。

MNIST实验

我们来看看文章对应的代码效果如何。代码的位置为yiwenguo/Dynamic-Network-Surgery

代码中存在一点小问题,根据编译的提示进行修改就可以了,这里就埋个雷不详细介绍了,供大家随意踩。


(基于模板原创的哟……)

压缩的Layer有一些参数,其中我们接下来比较关注的是cRate。当我们把一个已经训练过的模型拿过来以后,我们会计算每个Layer参数的均值mean和标准差std。如果一个参数的绝对值小于:

threshold1=0.9*(mean+cRate*std)时,

这个参数将被关闭,当这个参数的绝对值大于:

threshold2=1.1*(mean+cRate*std)时,

这个参数将会被重新打开。如果cRate越大,我们的压缩效果会越好。

其实关于这个问题我很想换一个复杂的数据集做实验的,但是由于给出的代码没有CUDNN版的实现,而Caffe的非CUDNN版实在慢不少,所以我们就用一个简单的数据集——MNIST举例好了。

首先我们用LeNet训练一个处理MNIST的模型,这个用一个普通版本的caffe就可以训练完成,最终在测试集的精确率是99.16%。

接下来我们要做网络压缩和重训练。我们可以列出一些实验的结果:

当cRate=1时,在测试集的精度几乎不受任何损失,但参数的比例已经降低到:

conv1:28.8%
conv2:18.08%
ip1:7.83%
ip2:23.26%

当cRate=2时,在测试集的精度几乎不受任何损失,但参数的比例已经降低到:

conv1:15.8%
conv2:8.46%
ip1:2.97%
ip2:11.96%

当cRate=3时,精度降到98.71%,但参数的比例已经降低到:

conv1:4.8%
conv2:2.1%
ip1:1.2%
ip2:4.8%

当cRate=4时,直接导致训练失败。基本上这就是模型压缩的极限了,由于参数最多的地方在全连接层,所以最终的模型体积和两个ip层相关。

因为没有CUDNN版的实现,所以想把这个压缩功能用在你的模型上,还需要点时间。这个坑留给各位,让我们自己动手实现一个CUDNN版本的Layer吧!

广告时间

更多精彩尽在《深度学习轻松学:核心算法与视觉实践》

编辑于 2017-11-22

文章被以下专栏收录