模型压缩学习之路

【12.13】浙江大学罗浩
1.深度学习模型部署困境:
①移动设备:算不好
②穿戴设备:算不了
③数据中心:算不起
2.模型压缩的性质:
①必要性
在许多网络结构中,如VGG-16网络,参数数量1亿3千多万,占用500MB空间,需要进行309亿次浮点运算才能完成一次图像识别任务。
②可行性
论文提出,其实在很多深度的神经网络中存在着显著的冗余。仅仅使用很少一部分(5%)权值就足以预测剩余的权值。该论文还提出这些剩下的权值甚至可以直接不用被学习。也就是说,仅仅训练一小部分原来的权值参数就有可能达到和原来网络相近甚至超过原来网络的性能(可以看作一种正则化)。
③最终目的
最大程度的减小模型复杂度,减少模型存储需要的空间,也致力于加速模型的训练和推测
3.模型压缩的方法分类:
两类方法是互补的,实际应用中可以相互结合
3.1前端压缩:
知识蒸馏(老师传学生)
紧凑模型设计
滤波器级别的剪枝
3.2后端压缩(极大改造网络结构,追求极致的压缩比,改变往往是不可逆的,为了达到理想的压缩效果,需要开发配套的运行库和硬件设备):
低秩近似
不加限制的剪枝
参数量化和二值化

4方法详解
模型压缩学习之路_第1张图片
4.1知识蒸馏
蒸馏模型采用的是迁移学习,通过采用预先训练好的教师模型(比较大,比较强Teacher model)的输出作为监督信号去训练另外一个轻量化的网络(比较小,比较快Student model ) 。
可以蒸馏的信息:
概率分布输出的特征(用KL散度)
中间层feature map(用MMD loss最大均值差异损失评价两个域的相似性)
关注部分Attention map
中间过程(用L2损失)
4.2紧致的网络结构设计
直接设计又小又快又好的网络
SqueezeNet
①使用更小的11卷积核来替换33卷积核
②减少输入33卷积的特征图的数量
③减少pooling
④比起AlexNet,SqueezeNet可以压缩510x的情况下在lmageNet上得到类似精度
Xception
MobileNet
是Xception结构的级联
大量网络消耗集中在1×1的Pointwise卷积上
ShuffleNet
使用通道打乱操作来代替1×1卷积,实现通道信息的融合
Shuffle操作通过Reshape操作实现,不包含参数
4.3低秩近似
将卷积分解成1
n 和n*1的,精度损失小于1%
SVD和PCA差不多
4.4剪枝(Pruing)
网络训练完成后,裁剪掉贡献信息量不大的网络参数。如果权值越少,就认为经过激活之后所产生的影响几乎可以忽略不计。去除权重比较小的连接,使得网络稀疏
模型压缩学习之路_第2张图片
剪枝的基本流程:
①衡量神经元的重要程度
②移除一部分不重要的神经元
③对网络进行微调
④返回第一步,进行下一轮剪枝
剪枝类型主要有:
①细粒度剪枝
②向量级别剪枝
③核级别剪枝
④组级别剪枝
⑥滤波器级别剪枝
4.4.1权重衰减法
通过在网络目标函数中引入表示结构复杂性的正则化项来使训练的网络权重趋向稀疏化。缺点是正则化参数/权重剪枝阈值对剪枝结果影响很大
基本流程:
①在网络损失函数中加入正则化项保证网络稀疏
②设置一个阈值,删除网络权重低于阈值的网络节点
③对网络进行训练
④返回第一步,进行下一轮剪枝
缺点:
①传统方法需要在多个待测试阈值上重复迭代
②权重阈值在所有层共享,难以寻找合适的阈值
③对硬件支持并不友好
4.4.2灵敏度量化法
通过设计一个灵敏度评价指标,从LOSS层面衡量网络节点对于网络误差的贡献(灵敏度),删除那些贡献不大的节点。
4.4.3根据相关性剪枝
根据网络节点间的相关性或者相互作用进行剪枝,然后合并相关性较大的节点。类似于PCA一样,去除网络中信息冗余的网络节点。
4.5量化
一般而言,神经网络模型的参数都是用的32bit长度的浮点型数表示,实际上不需要保留那么高的精度,可以通过量化,比如用O~255表示原来32个bit所表示的精度,通过牺牲精度来降低每一个权值所需要占用的空间。此外,SGD (Stochastic Gradient Descent)所需要的精度仅为6~ 8bit,因此合理的量化网络也可保证精度的情况下减小模型的存储体积。
。二值量化(+1,-1)
。三值量化(+1,-1,O)
。多值量化(8bit,16bit等)o量化的对象有:
。网络权重网络特征。网络梯度

你可能感兴趣的:(学习笔记,深度学习,机器学习,人工智能)