模型压缩(0) - background
模型压缩出了一系列文章,包括 MobileNet,Xception,ShuffleNet,SqueezeNet等,对相关论文进行阅读与总结。
CNN模型设计研究点
-
模型压缩:
对pre-trained的模型进行压缩,使其变成小模型,如采用网络剪枝和量化等
-
layer优化:
采用1x1的小卷积核,可分解卷积(factorized convolution)结构,模块化结构(blocks, modules)
-
网络架构设计与优化:
网络深度、Resnet残差连接(bypass connection, shortcut)
-
组合优化:
不同超参数、网络结构、优化其等的组合优化
模型压缩Background
增加网络的深度有利于提高Accuracy
在Accuracy接近的情况下,参数量少的模型更有优势:
-
高效的分布式训练:
服务器间通信影响分布式CNN训练的computation performance, 小模型对通信需求低
-
减少通信开销:
自动驾驶等应用中经常要更新模型,小的model需要的额外通信开销小,更容易更新
-
减小内存消耗:
利于在小内存的硬件上部署,如FPGA
常见模型压缩技术
- 奇异值分解 (Singular Value Decomposition, SVD)
-
网络剪枝(Network Pruning):
网络剪枝和稀疏矩阵(调整卷积方式)
通过dropout,L1/L2-regularization等能产生权重稀疏性的方法训练体积和密度都很大的网络,
把网络中贡献小(也就是被稀疏过)的权重裁剪掉,相当于去除一些冗余连接,
最后对模型做一下fine-tune,得到30%的压缩率。但是效率提高上不适合大多数通用CPU,
因为存储不连续,索引权重时容易发生Cache miss,得不偿失。
-
深度压缩(Deep Compression):
网络剪枝、数字化(quantization)、Huffman编码
- 硬件加速器 (Hardware Accelerator)
Reference