论文链接:https://arxiv.org/pdf/1608.03665.pdf
代码链接:https://github.com/wenwei202/caffe/tree/scnn
摘要
计算资源的高需求严重阻碍了大规模深度神经网络在资源受限设备上的部署。在这篇工作中,我们提出了一种结构稀疏化学习方法(SSL method)来规范DNNs的结构(filters,channels,filter shapes,layer depth等)。SSL可以:
- 从一个大的卷积神经网络中学习出一个紧凑的结构来减少计算成本;
- 获得硬件友好的结构稀疏化DNN来高效加速DNN的评估,实验结果展示了在CPU和GPU现有库上,使用SSL可以使得AlexNet的卷积层计算速度加速 5.1 和 3.1 倍,这几乎达到了非结构稀疏化速度的二倍;
- 规范化DNN的结构可以提高分类准确率,结果显示了对于CIFAR-10,在层深度上的规范化可以将ResNet的深度减少20层到18层,同时准确率从91.25%到92.60%,这相对于32层的原始ResNet还高了一点。
1. 介绍
DNN,尤其是CNN,已经通过从大量数据中的大规模学习在计算机视觉领域取得了巨大的成功,但是这样的大模型部署是有问题的。为了减少计算成本,许多研究方法被用来压缩DNN的大小,包括稀疏正则化、连接剪枝和低秩近似,稀疏正则化和连接剪枝通常会得到一个非结构化的随机连接关系,因此不规则的内存访问不利于硬件加速,Figure 1展示了通过L1正则化对AlexNet每一层的非结构稀疏化。与原始模型相比,稀疏化模型的准确率损失被控制在2%以内,由于稀疏权重分布的不规则,获得的加速效果是十分有限的,即使实际的稀疏程度很高(达到95%)。在最近提出的低秩近似方法中,DNN先被训练,然后将训练得到的权重张量分解为一系列小因子的乘积,最后再通过微调来恢复准确率。低秩近似能够获得加速,是因为它减少了参数量和计算量的同时效果和大的密集张量一样,有效避免了非结构稀疏化的局限性问题,然而低秩近似方法仅在层内获得紧凑的结构,在微调期间层间的结构是固定的,这使得需要多次反复分解和微调来获得最佳的权重近似。
受到以下事实启发:
- 在卷积核和通道上存在冗余;
- 卷积核的形状通常被固定为长方形,但是任意形状可能会消除这种固定带来的不必要的计算;
- 网络的深度对分类准确率至关重要,但是不总是越深的模型准确率就一定越高,这里面牵扯到了梯度爆炸和退化问题;
我们提出了SSL方法在训练期间通过group Lasso 正则化直接学习一个紧凑的结构,SSL是一个通用的正则化方法自适应多种DNN结构,包括filters、channels、filter shape的结构和网络的深度。SSL将结构正则化和本地优化(内存访问、高效计算)集合,不仅提供了提高准确率的规范化大模型,而且加速了计算。
2. 相关工作
连接剪枝和权重稀疏:韩松通过使用连接剪枝将AlexNet的参数量减少了9倍、VGG-16的参数量减少了13倍,因为参数量的减少主要是在全连接层,作者获得了 3-4倍的加速。然而,由于Figure 1中存在的问题,卷积层几乎没有大的加速,然而卷积才是CNN网络的计算瓶颈,所以在卷积层的压缩和加速变得至关重要,Liu等人在AlexNet卷积层实现了 >90%的稀疏度,同时准确率损失控制在2%以内,并且通过对稀疏权重硬件编码到程序中在CPU上获得了4.59倍的加速。这本文的工作中,我们也是聚焦于卷积层,与上面的方法相比,我们的SSL方法协调在相邻内存空间中的稀疏权重,在同样的准确率下获得了更高的加速。当然了硬件和程序优化可以进一步提高系统性能,但这并不在我们的讨论范围内。
低秩近似:低秩近似(Low rank approximation)的优点和问题上面已经做过描述,同时低秩近似还存在另一个问题,就是LRA的超参数量伴随深度线性增加,搜索空间线性增加甚至多项式式增加。与LRA相比,我们的贡献在于:
- SSL可以动态优化DNN的紧凑结构,只需要一个超参数,没有反复;
- 除了层内冗余,SSL可以减少层的深度;
- 通过SSL正则化后的DNN卷积核也可以使用低秩近似,所以它可以同LRA一起来获得更加高效的压缩模型;
模型结构学习:group Lasso对于学习稀疏结构是一种高效的正则化技术,Kim等人将group Lasso用到多任务回归中规范关联树的结构,较少了预测的错误;Liu等人使用group Lasso来约束LRA结构的尺度;为了使DNN适应不同的数据库,Feng等人在DNN中学习卷积核的数量。不同于之前的工作,我们将group Lasso应用于规范DNN的多种结构(filters、channels、filter shapes、layer depth)。
3. 结构稀疏化学习方法
我们主要关注卷积层上的结构化稀疏学习(SSL)来规范化DNN的结构。 我们首先在3.1节中提出了一种通用方法来规范DNN的结构;然后在3.2节中指定对卷积核、通道、卷积核形状、和深度的方法;在3.3节从计算效率的观点讨论了公式的变体。
3.1 对通用结构提出了结构稀疏化学习
假定在DNN中卷积层的权重形成了一个四维张量 W l ∈ R N l × C l × M l × K l W^{^{l}}\in R^{N_{l}\times C_{l}\times M_{l}\times K_{l}} Wl∈RNl×Cl×Ml×K