深度学习使得很多计算机视觉任务的性能达到了一个前所未有的高度。不过,大部分高性能的网络模型都需要高额的储存空间或硬件计算资源,这也是阻碍其部署在各硬件平台的重要原因。
本文介绍的两种方法均来自韩松博士,Deep Compression是韩松博士在斯坦福读PhD时的工作,它是基于人工规则进行模型压缩的“开山之作”,为后续的模型压缩工作提供了很有价值的参考,而韩松博士在MIT任职期间提出的AMC则使用智能优化算法中风头正旺的强化学习来指导网络完成自动剪枝,获得了更好的效果。
目前模型压缩的方法大致可分为两个方向:
1、基于单元结构的轻量化网络设计,例如Xception、MobileNet系列以及ShuffleNet系列,他们在网络设计之初就将模型的效率问题考虑在内,其中就包括大家熟知的卷积操作的分解,由于神经网络的计算量大部分分布在卷积操作上,使用深度可分离卷积代替普通卷积,通过控制宽度因子,可以有效地减少网络计算量,同时也能保持网络精度。
2、在post-train阶段进行的模型压缩方法,包括低秩分解、模型剪枝、模型蒸馏及模型量化等过程。其中由于低秩分解所需的成本(实现成本)过大,目前已很少采用。现阶段的模型压缩框架大部分都采用:a、通过分析网络权重重要性对模型进行剪枝;b、蒸馏方法retrain恢复模型精度;c、针对部署的硬件平台进行模型量化。这也是本文主要讲解的方向,包括基于人工规则和智能优化算法的模型压缩方法。
Deep Compression—模型压缩的经典之作
论文地址:https://arxiv.org/pdf/1510.00149.pdf
代码地址:https://github.com/songhan/Deep-Compression-AlexNet
参考文献:[1]. https://arxiv.org/abs/1306.0543
文中的模型压缩过程分为三步:剪枝、量化、编码,如图1所示,可以在不损失模型精度的情况下,减小模型大小,加快模型推理速度。
图1 模型压缩流程
论文中提出的观点:
1.权重大小可以衡量神经元的重要程度;
2.使用full train->model pruning->retr