作者:Edison_G
前段时间,”计算机视觉研究院“推出一期专门说部署模型的专题,今天我来和大家说说部署模型前的一件重要事情,那就是训练,如何加速训练也是一件不可忽略的流程,今天技术应用到了剪枝,有兴趣的请继续阅览!
1
前言
最先进的深度神经网络 (DNN) 剪枝技术在训练开始前一次性应用,借助剪枝分数的单一标准评估稀疏架构。基于单独分数的剪枝权重对于某些架构和修剪率很有效,但对于其他架构和剪枝率也可能失败。作为剪枝分数的通用基线,有研究者引入了广义synaptic score(GSS)的概念。
在这项工作中,研究者不专注于单一的剪枝标准,而是提供一个框架来组合任意GSS以创建更强大的剪枝策略。这些组合剪枝分数 (COPS) 是通过解决约束优化问题获得的。优化一个以上的分数可以防止稀疏网络过度专注于单个任务,从而在训练开始之前控制剪枝。 COPS给出的组合优化问题在线性规划 (LP) 上是松弛的。该LP被解析求解并确定COPS的解。此外,还提出并评估了一种以数值方式计算两个分数的算法。以这种方式求解COPS的复杂度低于最好的通用LP求解器。
在实验中,将剪枝与COPS与针对不同网络架构和图像分类任务的最新方法进行了比较,并获得了改进的结果。
2
背景
上图,《PRUNING FILTERS FOR EFFICIENT CONVNETS》。在裁剪的时候同样会考虑每一层对裁剪的敏感程度,作者会单独裁剪每一层来看裁剪后的准确率。对于裁剪较敏感的层,作者使用更小的裁剪力度,或者跳过这些层不进行裁剪。目前这种方法是实现起来较为简单的,并且也是非常有效的,它的思路非常简单,就是认为参数越小则越不重要。
《An Entropy-based Pruning Method for CNN Compression》
作者认为通过weight值的大小很难判定filter的重要性,通过这个来裁剪的话有可能裁掉一些有用的filter。因此作者提出了一种基于熵值的裁剪方式,利用熵值来判定filter的重要性。作者将每一层的输出通过一个Global average Pooling将feature map转换为一个长度为c(filter数量)的向量,对于n张图像可以得到一个n*c的矩阵,对于每一个filter,将它分为m个bin,统计每个bin的概率,然后计算它的熵值 利用熵值来判定filter的重要性,再对不重要的filter进行裁剪。
CIFAR-10上VGG16的dense baseline、随机剪枝、SNIP、GraSP和GCOPS的比较。左:网络剩余权重的平均梯度范数,在训练前评估并归一化 w.r.t. dense网络的梯度。右:相应的测试精度。
3
新思路
定理 1:
算法1给出了一种通过区间二分法逼近 λ∗ 的简单方法。根据定理 1,λ∗ 产生相应的 COPS掩码m∗。为了应用算法1,必须找到一个合适的值λ+,其中g0(λ+) ≤ 0。一种可能性是从λ+ = 1 开始。如果g0(λ+) ≥ 0,则λ+可以迭代加倍。下图给出了算法 1 的图形说明。
左图:g和λ∗的图形示例,稀疏度为σ = 2,πi(λ) = s(0)i +λ·s(1)i。为清晰起见,使用κ = 0,Active πi(λ)为红色。给定λ的πi(λ)的灰色着色突出显示πi(λ) ≥ 0。右图:显示算法1的前三个步骤以获得解 λ∗。
G-COPS导出的掩码与基础目标分数SNIP(sim(M0, mακ))和控制分数GraSP(sim(M1, mακ)) 之间的相似性。SNIP和GraSP通过sim(M0, M1) 进行比较。
4
实验
VGG-16在CIFAR-10上的实验结果
© THE END
计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!