模型压缩与加速概述
必要性、可行性
最终目的:最大程度的减小模型复杂度,减少模型存储需要的空间,也致力于加速模型的训练和推测。
方法概述:前端压缩、后端压缩(极大改造网络结构)
前端压缩
知识蒸馏
采用的是迁移学习,通过预先训练好的教师模型的输出作为监督信号去训练另外一个轻量化网络。
监督的信息可分为:概率分布、输出的特征、中间层feature map、Attention map|、中间过程
概率分布——KL散度
KL散度,是描述两个概率分布P和Q差异的一种方法,它是非对称的。
Feature Map——MMD Loss
用最大均值差异损失(MMD Loss)来评估两个域的相似性
中间过程——L2损失
利用Gram矩阵来拟合层与层之间的关系,然后用l2损失函数来比较教师与学生的gram矩阵。
紧致的网络结构设计
直接设计又小又快又好的网络,这就是紧致网络设计
常见的紧致网络:ShuffleNet、MobileNet v1、MobileNet v1、SqueezeNet
后端压缩
低秩压缩
卷积分解:将dd卷积核分解为d1和1*d卷积核,损失精度小于1%
SVD分解:对矩阵进行SVD分解,仅保留特征值大的几项
剪枝
网络训练完成后,裁剪掉贡献信息量不大的网络参数。
剪枝方法分类:权重衰减法、灵敏度量化法、根据相关性剪枝
量化
神经网络模型的参数不需要保留很高的精度,通过牺牲精度来降低所占的空间。
量化的对象有:网络权值、网络特征、网络梯度