论文品读:Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures

http://cn.arxiv.org/abs/1607.03250

文章介绍了一种新的评价参数是否需要被裁剪的标准:AP0Z

 

公式1给出了AP0Z的定义。O_{c}^{i}代表第i层的第c个通道的输出,M是O_{c}^{i}的维度数。算了,解释起来太麻烦,直接看下图。输入一张图,经过一层卷积,得到右边的feature map,我们计算APOZ_{1},也就是输出的第一个通道的APOZ,也就是右边红色。假设红色的部分一半是0,那么这张图计算APOZ_{1}就等于50%。我们需要输入多张图,假如输入了1W张图,最后计算红色部分都是50%,那么APOZ_{1}就等于50%。下面那张table1,计算每一层的mean APOZ的时候,就是把所有通道的都计算出来取平均值

表1给出了VGG16各层的AP0Z。数值越高代表更大的冗余和更多的裁剪空间,可以看出,卷积层中随着层数的增加,数值越大。代表层数越大,冗余越大

图1和2是两个层的APOZ的具体分布,很明显APOZ大的比例大

图3、4、5就是常见的操作循环,训练、裁剪、微调。需要注意的是,与之前的一些裁剪“连接”不同的是,这里裁剪的是整个神经元,也就是某个神经元的所有连接。2点注意事项,不要对好几层同时裁剪,也不要一下子对一层进行裁剪很多

表2很简单易懂,不作说明

表3对比了裁剪后剩下的变量是否初始化成裁剪前的。如果使用裁剪前的变量初始化的话,准确率会高一点。更重要的是,使用的话,APOZ会逐渐变少,证明冗余的节点变少了,而右边则不然。所以,使用裁剪前的变量作为初始化值微调网络很重要。

图6显示,在VGG16的FC6上,裁剪后的分布整体左移了,代表APOZ变小了,冗余的被正确的裁剪了

表4在VGG16上对CON5-3和FC6上裁剪实验,有2个发现。1.在不微调的情况下,即使裁剪了很多,模型也效果也没有明显下降,这证明了模型确实存在冗余现象。同时,微调的时间不会很长,几千次迭代就可以达到之前的效果甚至更高。2.裁剪后的模型可以达到更好的效果,因为更少的参数可以避免一些过拟合的效果

表5显示作者尝试了同时裁剪多个网络,有几个发现。1.裁剪后效果下降的很多 2.需要更多迭代来恢复到原本的效果 3.裁剪之后模型可能可以获得更好的效果 4.裁剪模型的后面几层包括conv45,fc67效果比较好

相比于裁剪“连接”的方法,有个比较重要的事情,在GPU进行卷积的时候,首先是先矢量化,然后再矩阵相乘,所以如果只裁剪“连接”而不是整个神经元节点,不会降低计算量,全连接层也一样。所以相比于别的裁剪“连接”的裁剪方式(Han, S., Pool, J., Tran, J., Dally, W.J.: Learning both weights and connections for efficient neural networks. CoRR abs/1506.02626 (2015)),他们在计算量上没有改善。而本论文在FC6上可以有降低2倍的FLOPs。

本文在VGG16上只裁剪了最后一个卷积层和全连接层,所以基本只有模型大小2到3倍的压缩效果,没有提到速度。但是由于APOZ可以用来裁剪卷积滤波器的个数,所以应该是可以提升速度的。

 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值