模型压缩(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

CNN网络优化学习总结——从MobileNet到ShuffleNet

posted @ 2018-04-21 21:00  Fighting-Lady  阅读(186)  评论(0编辑  收藏  举报