模型压缩和知识蒸馏剪枝量化

模型压缩和知识蒸馏技术

  • 引言
  • 2 模型压缩方法
    • 2.1 distiller
    • 2.2 prunning
    • 2.3 quantization
  • 3 框架分析
    • 3.1 框架分析
    • 3.2 compression 案例分析
      • 3.1 distiller
  • 参考

引言

模型压缩是工程部署一个重要的环节,这里对一些基础的模型压缩方法进行回顾,并附带代码传送门案例分析(欢迎大佬指点,谢谢)

不可逆的需要开发配套的运行库和硬件部署
参数优化
模型压缩
前端压缩
知识蒸馏
概率\特征分布\训练过程
经凑性模型设计
SqueezeNet\MobileNet\ShuffleNet
滤波器级别的模型设计
后端压缩
低秩分解
不加限制的剪枝
量化
auto_ML RL

目前的框架有:
Deep Compression、XNorNet、Distilling、PocketFlow腾讯、transform_graph(tensorflow)、Netural distiller、Kaddle slim等

2 模型压缩方法

2.1 distiller

拜师学艺,老师博学多才,收了很多徒弟,徒弟总能学习到知识,但是徒弟自身水平层次不齐最终出师的时候能力不相同,选择好的模型作为最终模型。非常绝妙的思想,但是大多数时候学生的提高是有限的,而且与老师的差距还是很大。所以,已经有优秀的老师了,直接在老师身上直接进行改造(神经网络的稀疏性决定的),然后在这个基础上再蒸馏。
模型压缩和知识蒸馏剪枝量化_第1张图片

主要涉及到两个方面:

知识蒸馏
对象
概率分布 KL散度
特征分布
结构设计

2.2 prunning

2.3 quantization

3 框架分析

3.1 框架分析

各种框架基本涵盖了常用的一些压缩方法,还有一些特殊网络压缩,近几年也有一些特殊网络GAN、RNN等的工作

框架 架构
PocketFlow 模型压缩和知识蒸馏剪枝量化_第2张图片 在参数优化中有强化学习和AML,当然还在扩充
Netural network distiller 模型压缩和知识蒸馏剪枝量化_第3张图片 使用灵活,可扩展性比较强

这里主要使用distiller的网络架构distiller,官方文档非常详细了。

3.2 compression 案例分析

以cifar数据集为例

3.1 distiller

根据模型的结构可以选择在不同的位置进行蒸馏,然后对loss fucntion 建立不同的权值相加进行监督训练

Teacher Net
Student Net
backward
输入
encoder
decoder
feature
head
encoder
softmax KL_散度
head
MMD_loss
feature
gram过程蒸馏
decoder
loss
loss

1)首先是对于概率分布进行蒸馏,对于分类网络对于最后一层设置一个softmax层,对于Teacher net 和Student net 的概率分布的误差建立KL散度进行对比分析,作为监督误差进行分析

2)其提取的feature进行监督,采用mmd loss衡量两个特征之间的差异

参考

[1] 李宏毅的课程
[2] 模型压缩综述
[3] 知识蒸馏
[4] 量化
[5] 模型压缩整理

你可能感兴趣的:(机器学习,机器学习,深度学习,人工智能,信息压缩)