作者提出
基于论文Learning both weights and connections for efficient neural network修剪的方法在保留精度以及实现更高的压缩率方面确实很好。但是,这种改进是以稀疏计算模式的不规则性为代价的。
另一方面结构化的剪枝(例如修剪掉整个过滤器),但是比修剪单个权重会引起更大的精度损失。
因此作者提出了三个问题:规律性和准确性之间的权衡是什么?是否可以在规律性范围内找到一个最佳位置?最佳位置如何提高硬件实施效率?
现存的很多工作尽力去用对卷积核和通道剪枝来代替个别权重的修剪,然而由于它们使用的是不同的方法,我们无法直接对剪枝规律性和准确率之间的关系做出评估。所以在做对比实验作者采用相同的方法和配置。
贡献有
我们探索了一个完整的剪枝规律性范围(从0D到1D到2D到3D),对模型的规律性和准确率之间的平衡做了评估;
我们展示了粗粒度剪枝与细粒度剪枝相比,能够达到相似甚至更好的压缩率,即使它的稀疏度小一点;
我们展示了粗粒度剪枝可以以一种结构化方式跳过计算和减少存储,从而导致了一种更加高效的硬件加速实现。
感觉总结的综述很好,也就贴出来了。
剪枝方法:稀疏性已被证明是节省深度神经网络模型参数的有效方法。大量的工作研究了怎样了选择重要的连接关系和如何高效地恢复准确率。二阶导数(Optimal brain damage)、绝对值(Learning both weights and connections for efficient neural network)、损失近似泰勒展开( Pruning convolutional neural networks for resource efficient transfer learning)和输出灵敏度(A new pruning heuristic based on variance analysis of sensitivity information)是用于修剪的重要度量的示例。还有一些方法试图更好地整合修剪和训练,例如迭代修剪( Learning both weights and connections for efficient
neural network)和动态修剪(Dynamic network surgery for efficient DNNs)。
稀疏粒度:在所有的稀疏类型中,细粒度稀疏和filter-wise稀疏是两种极端情况,细粒度稀疏指的是个别权重被删除,它已经被证明可以在CNN和RNN上工作的很好;还有一种通道和卷积核稀疏,减少卷积核的通道数或者个数,这可以看作是一种非常粗粒度的稀疏化——在卷积层上移除3D的子张量,这样的粗粒度稀疏由于其规则性是十分有利于加速的,然而,这样的稀疏化有可能导致比细粒度的精度要低很多。在vanilla稀疏化到通道(卷积核)稀疏化之间有很宽的粒度范围,一些文献试图探索一些可能性。
加速稀疏模型。对于滤波器稀疏和通道稀疏这种粗粒度的稀疏,在通用处理器上实现加速很容易,因为它等同于获得较小的密集模型。对于细粒度的稀疏,需要开发特定加速器来减少计算。
