模型压缩(compression)
理论基础
必要性:
在许多网络结构中,如VGG-16网络,参数数量1亿3千多万,占用500MB空间,需要进行309亿次浮点运算才能完成一次图像识别任务。
可行性:
论文提出,其实在很多深度的神经网络中存在着显著的冗余。仅仅使用很少一部分(5%)权值就足以预测剩余的权值。该论文还提出这些剩下的权值甚至可以直接不用被学习。也就是说,仅仅训练一小部分原来的权值参数就有可能达到和原来网络相近甚至超过原来网络的性能(可以看作一种正则化)。
最终目的:
最大程度的减小模型复杂度,减少模型存储需要的空间,也致力于加速模型的训练和推测
模型压缩分类
压缩方面的综述文章:
2017-A Survey of Model Compression and Acceleration for Deep Neural Networks
2018-Recent Advances in Efficient Computation of Deep Convolutional Neural Networks
模型可分为:
对于模型压缩这一块的方法大致可以分为:
1: 低秩近似(low-rank Approximation),
2: 网络剪枝(network pruning),
3: 网络量化(network quantization),
4: 知识蒸馏(knowledge distillation)
5: 紧凑网络设计(compact Network design)。
模型的另一个分类:
1. 低秩近似/分解(low-rank Approximation/factorization)
解决方式:把原先网络的权值矩阵当作满秩矩阵来看,用多个低秩的矩阵来逼近原来的矩阵,以达到简化的目。
经典论文:A: 2014-Speeding up Convolutional Neural Networks with Low Rank Expansions
B:2014-NPIS-Exploiting Linear StructureWithin Convolutional Networks for Efficient Evaluation
该文章:提出rank-k的重构,他对卷积使用一个中间层来进行降秩,通过单谱段处理(monochromatic convolution approximation)(和双聚类处理(bicluster)加上SVD对矩阵进行降k维估计。
除了以上经典文章,还有以下属于矩阵分解压缩文章
1:
2015-NPIS-Structured transforms for small footprint deep learning
使用结构化的矩阵:
2015-Accelerating Very Deep Convolutional Networks for Classification and Detection
2014-Speeding-up Convolutional Neural Networks Using Fine-tuned CP-Decomposition
2015-Compression of Deep Convolutional Neural Networks for Fast and Low Power Mobile Applications|
2017-High performance ultra-low-precision convolutions on mobile devices
**
存在的问题:
**
超参数的数量随着网络层数的增加呈线性变化趋势,例如中间层的特征通道数等等。参考2016年的NIPSConvolutional neural networks with low-rank regularization
随着模型复杂度的提升,搜索空间急剧增大——Learning structured sparsity in deep neural networks
以上文章为学习用,参考https://www.jianshu.com/p/e73851f32c9f
以上为基于矩阵分解方式的压缩!