机器学习——神经网络压缩

神经网络压缩

需要部署,设备内存和计算能力有限,需要进行模型压缩,在设备上运行的好处是低延迟,隐私性。

在这里插入图片描述

目录

在这里插入图片描述
不考虑硬件问题,只考虑通过软件算法优化。

修剪网络

参数过多或者没有用的参数,可以将其剪掉。
在这里插入图片描述
先训练一个最大的网络模型,衡量评估每个参数的重要性,

  • 看权重的绝对值
  • 评估神经元的重要性,可以将其修剪掉

修剪后能力会降低一点,并想办法将性能变好一点,对小模型进行微调
在这里插入图片描述

  • 不要一次性剪掉大量参数
  • 动了元气性能不太行

在这里插入图片描述
如果剪掉后,进行空缺的话导致无法进行GPU加速,一般将其值设置为0
在这里插入图片描述
速度大于1是加速,小于1是降速。
从上述看到对权重进行修剪,加速的效果不理想。
在这里插入图片描述

  • 对网络进行修剪,只是改输入输出的dim,在torch里面好实现,gpu也好加速。

在这里插入图片描述

  • 先训练大模型,再训练小模型达到相同性能,那为什么不直接训小模型呢?
  • 原因是大模型更好训练,小模型难训练
  • 大乐透假说

在这里插入图片描述

一个大的模型可以看作是很多个小模型的集合,只要里面有一个成功,大的模型也就成功了,跟买大乐透一样,买的彩票越多,越有可能中奖。

在这里插入图片描述

  • 基于大模型得到的参数,更有可能得到好的初始化参数,在这个基础上继续微调,有很大概率得到好的结果。

在这里插入图片描述

  • 权重的正负号很重要。
  • 跟雕像一样,只是把多余的东西拿掉。

在这里插入图片描述

  • 这篇文章打脸大乐透文章
  • 将epoch设置多一点,小模型也能得到好的结果。

知识蒸馏

在这里插入图片描述
让学生的输出与老师的输出尽可能相近,哪怕老师的模型输出是错误的。

在这里插入图片描述
teacher不仅是一个模型,可以是多个模型的集成。模型集成在打比赛的时候用的多,但是实际中考虑性能问题不太行,因此可以使用知识蒸馏使得学生模型也能得到相近的性能。

在这里插入图片描述

对softmax进行修改,增加一个温度参数T,把比较集中的分布变得更加平滑一点,对分类结果不会有影响,但是每个类别得到的分数会比较平滑平均

参数量化

在这里插入图片描述
在这里插入图片描述

  • 使用更小的bit来表示值,以降低存储占用
  • 权重聚类,使用一类来表示该类的所有值
  • 常见的用少量的bit,少见的用多一点的bit

在这里插入图片描述
使用二元值代替
在这里插入图片描述

  • 可以防止overfit
  • bit减少是不是引入了噪声,进而效果好呢?

结构设计

depthwise separable convolution

在这里插入图片描述
传统的cnn 每个通道都要进行卷积,参数量大。

在这里插入图片描述

  • depthwise的滤波器格式等于输入的channel数量
  • 每个滤波器只负责自己那个channel
  • 问题是通道之间没有交互

在这里插入图片描述
可以先加一个pointwise convolution,然后再进行depthwise convolution;
在这里插入图片描述

  • 参数约变为原先的 1 / k 2 1/{k^2} 1/k2

在这里插入图片描述

  • 把一层变成两层,类似于矩阵连续相乘,中间可操作空间大,以减少维度计算。
    *在这里插入图片描述
    在这里插入图片描述

动态计算

在这里插入图片描述
在这里插入图片描述
期望网络能自己调整计算量,因为模型会跑到不同设备上。电量的多少也会对性能有影响。

自己调整深度
在这里插入图片描述

让每层的输出,与最终的输出之间的差距加起来作为最终的loss,优化该loss来动态调整深度。

自己调整宽度
在这里插入图片描述

  • 不同宽度的输出与最宽的输出之间的差距越小越好
  • 同一个模型,只是不同的宽度
    在这里插入图片描述
    根据环境困难度自己决定深度和宽度
    在这里插入图片描述
  • 对于简单的样本,就使用浅层的输出即可
  • 对于困难的样本,可以使用最终的输出

总结

在这里插入图片描述

  • 上述技术不是互斥的,可以一起使用
  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值