paper reading之卷积神经网络压缩(一)

一、介绍两篇论文

1.《PRUNING FILTERS FOR EFFICIENT CONVNETS》

   本片论文是介绍剪枝filter的,内容比较简单,主要是根据filter的L1范数的值排序,然后剪枝最小的一部分。

2.《Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures》

   本论文提出了一个APoZ 的概念,根据激活函数输出为零所占百分比的大小决定剪枝,后文会详细解释

二、具体讨论

1.《PRUNING FILTERS FOR EFFICIENT CONVNETS》

(1)先说一下他们的论文的improvements

  对比剪枝整个网络的weights,filter剪枝是一种比较自然的结构剪枝,不会引入稀疏性,因此不需要稀疏库以及特别的硬件。滤波器剪枝直接加速网络通过减少矩阵相乘的次数,而且很容易调试以达到目标加速。除此之外,本论文替代分层迭代微调的剪枝方式,而是通过一次性剪枝然后重新训练的方式完成来节省重新训练的时间,对于深层架构来说这非常关键。对于ResNet,此方法也减少了大约30%的浮点运算而不牺牲太多的精度。本文还对ResNet进行了sensitivity analysis,能够有助于我们对ResNet的理解

(2)原理描述

paper reading之卷积神经网络压缩(一)_第1张图片


先说这张图:ni代表第i层的输入通道数两,hi/wi代表输入特征图的高/宽,i层的第j个滤波器,所以第i层的滤波器可以写成。此层的运算操作数为:。当一个滤波器F(i,j)被剪枝后,他的相应的特征图被移除,这减少了这么多的运算操作(分别是ni个面,每个面上有hi*wi个像素点,而每个像素点需要k*k次操作),然后对应下一层的滤波器的一个面也被移除,这样下一层减少计算量为。因此对于i层,剪枝m个滤波器对与第i和第i+1层都会减少m/n(i+1)次运算。

    本文的方法是根据filter相对重要性通过计算,以下是剪枝的过程:

paper reading之卷积神经网络压缩(一)_第2张图片


这里还给了几张图用于表示剪枝网络中某一层对网络的accuracy的影响如下图:

paper reading之卷积神经网络压缩(一)_第3张图片

说明:图(a)表示的是对于VGG-16在cifar-10数据集上的每一层权值和的分布情况。图(b)表示剪枝某一层对accuracy的影响。图(c)表示剪枝然后重新训练后的结果


  

为了剪枝所有层,本文提供了两种策略为了每层的滤波器的选择,如下:

paper reading之卷积神经网络压缩(一)_第4张图片


第一种就是表示每一层独立剪枝,不考虑上一层的剪枝。第二种是考虑到上一层的剪枝对本层的影响,扣除掉影响后再计算weights sum 如下图:

paper reading之卷积神经网络压缩(一)_第5张图片

第一种方法计算黄色的部分,而第二种则不会考虑黄色部分。


接下来是对ResNet剪枝,也是先上图:

paper reading之卷积神经网络压缩(一)_第6张图片

这里剪枝第一层和shortcut,然后让第二层取匹配shortcut的剪枝结果来进行剪枝,以达到最终结果可以相加。你也许会问为什么步剪枝第二层让shortcut取匹配呢?这是因为论文有说 Since the identical feature maps are more important than the added residual maps, the feature maps to be pruned should be determined by the pruning results of the shortcut layer。也就是shortcut相较而言更加重要罢了。


后面实验部分就先不说了


2.《Network Trimming: A Data-Driven Neuron Pruning Approach towards Efficient Deep Architectures》

(1)论文improvements

  本文是以找到每一层的最优数量神经元为动力,提出了一个迭代优化模型,逐渐消除weak neurons  通过pruning-retraining 循环。本文的算法是分析冗余weak  neurons的在验证集上的激活函数的结果。这些weak neirons被剪枝,而其他的的被保存用于初始化一个新的模型。


(2)原理

定义 APoZ(Average Percentage of Zeros)去表示在验证集上激活函数输出为0所占百分比,令表示第i层的第c个通道输出,可以得到定义公式如下:


  其中f(.)=1 如果True,f(.)=0i 如果False  。M表示输出特征图的维度,N表示验证机例子的总数。我们使用APoZ来预测每一个神经元在网络中的重要性。以下是观察在VGG16中一些神经元的部分的输出是零。

paper reading之卷积神经网络压缩(一)_第7张图片


因为VGG16类似金字塔结构大部分冗余神经元发生在更高的卷积层,再下面一张图给出了COBNV5-3中,APoZ详细的分布。

paper reading之卷积神经网络压缩(一)_第8张图片

横轴表示APoZ的值,纵轴表示有多少百分比的神经元。


(3)网络瘦身和重训练

paper reading之卷积神经网络压缩(一)_第9张图片


这段话大概的意思是说,如果一个剪枝后的网络我们让weights从头初训练后会出现更多的激活函数结果为0的神经元。而以训练结果后的权值来做初始化会更有效率。(这里初始化的意思是使用之前trimming后的权值来初始化)。


(4)实验部分暂且不说,就上一张图对比初始化权重与不初始化权重的效果

paper reading之卷积神经网络压缩(一)_第10张图片


这里明显可以看出初始化权重后,大APoZ的比例比较少有更少的冗余,会更有效率。














你可能感兴趣的:(机器学习)