模型压缩与加速

模型压缩与加速

  • 必要性:参数量太大,太多冗余
  • 最大程度的减小模型复杂度,减少模型存储需要的空间,也致力于加速模型的训练和推理

模型压缩与加速概述

前端压缩

  • 几乎不改变网络结构

知识蒸馏

  • 采用的是迁移学习,通过采用预先训练好的教师模型(teacher model)的输出作为监督信号去训练另外一个轻量化的网络(student model)
  • 教师模型:大&强
  • 学生模型:小&快
  • 监督信息可以为:
    • 概率分布
      • KL散度:描述两个概率分布差异的方法,是非对称的,有相应包torch.nn.KLDivLoss()
    • 输出的特征
    • 中间层feature map
      • MMD Loss:最大均值差异损失,可以评价两个域的相似性
    • attention map
    • 中间过程
      • L2损失,torch.nn.MSELoss()

紧凑模型设计

常见的紧致网络
  • ShuffleNet

    • 使用通道打乱操作来代替1*1卷积,实现通道信息的融合
    • 通过reshape操作实现,不包含参数
  • MobileNet v1

    • 大量使用33的depthwise卷积和11卷积组合的Xception结构
  • MobileNet v2

    • 使用率高
    • 在DW卷积前新加了一个1*1卷积,增加网络通道数
    • 去掉了第二个PW的激活函数,防止特征丢失
    • 增加了resnet的shortcut结构
    • 通过改变网络参数设置,v2比v1进一步压缩了约50%,并且泛化能力提升
  • SqueezeNet

    • 利用1*1卷积
    • 减少3*3卷积的特征图数量
    • 减少pooling

各紧致网络对比

滤波器级别的剪枝

后端压缩

  • 极大的改变网络结构
  • 追求极致的压缩比,改变往往是不可逆的,为了达到理想的压缩效果需要开发配套的运行库和硬件设备

低秩近似

  • 分解矩阵
卷积分解
  • 将d✖️d的卷积核分解为d✖️1和1✖️d卷积核,损失精度小于1%
SVD分解
  • 对矩阵进行SVD分解,保留特征值最大的几项

不加限制的剪枝

  • 网络训练完成后,裁剪掉贡献信息量不大的网络参数
基本流程
  • 1、衡量神经元的重要程度
  • 2、移除一部分不重要的神经元
  • 3、对网络进行微调
  • 4、返回第一步,进行下一轮剪枝
剪枝类型

剪枝类型

剪枝方法分类
  • 权重衰减法

    • 基本流程

      • 在网络损失函数中加入正则化保证网络稀疏
      • 设置一个阈值,删除网络权重低于阈值的网络节点
      • 对网络进行训练
      • 返回第一步,进行下一轮剪枝
    • 缺点

      • 阈值的选择
      • 硬件支持不好
  • 灵敏度量化法

    • 网络节点对于网络误差的贡献
  • 根据相关性剪枝

    • 类似PCA

参数量化和二值化

  • 二值量化
  • 三值量化
  • 多值量化
  • 量化对象
    • 网络权重
    • 网络特征
    • 网络梯度
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值