机器学习11-NETWORK COMPRESSION

东阳的学习记录,坚持就是胜利!

为什么需要做网络压缩

我们平时通过训练的网络结构过于庞大,而在实际的工业应用上,可供使用的硬件资源十分有限。这时候我们就需要对网络结构进行压缩。以在各种(微型)工业电子设备上使用。

常用的网络压缩方法

  • Network Pruning
  • Knowledge Distillation
  • Parameter Quantization
  • Architecture Design
  • Dynamic Computation

Network Pruning

网络结构通常存在着过多的参数(存在大量冗余权重或神经元)

  • 把他们剪掉!!!
    在这里插入图片描述
Network Pruning的步骤

在这里插入图片描述

  1. 计算某个权重的重要性:L1, L2
  2. 计算神经元的重要性:计算它在给定的数据集上,输出不为0的次数
  3. 在经过裁减之后, 准确率会有一定程度的降低。
  4. 在训练数据上对裁减好的网络经行重新修复(重新训练参数的值,恢复准确率)
  5. 不要一次性裁减过多,否则可能导致无法修复
为什么选择裁减而不是直接训练一个小的网络
  • 因为小网络不太容易train的起来(好像现在有新理论,可以训练起小的network)

Knowledge Distillation

Knowledge Distillation
Do Deep Nets Really Need to be Deep

Knowledge Distillation的思想是:我们可以先train一个大的网络,然后用一个小的网络去train这个大的网络的output(不是跟预测结果去学习,而是学习output的所有结果和相应概率)。
在这里插入图片描述

为什么跟着Teacher训练会比单独训练好

见上图红字

Parameter Quantization

  1. 用更少的参数来代表一个参数
  2. Weight clustering(会损失一些精度)
    在这里插入图片描述
  3. 比较常出现的cluster用比较少的bit表示,比较少出现的cluster用比较多的bit表示

Binary Weights(不太懂)

Binary Connect
Binary Network
XNOR-net
在这里插入图片描述

结构设计(在运用中最有效的)

Low rank approximation

可以减少参数量
在这里插入图片描述

Depthwise Separable Convolution(通道分离卷积)

在这里插入图片描述

  • filter num等于输入图片的通道数
  • 一个filter只考虑一个通道
  • 一个filter有 K * K 个参数
  • 通道之间没有互动

这种方法能够减少参数量
在这里插入图片描述

一些值的读的论文

  • SqueezeNet
    • https://arxiv.org/abs/1602.07360
  • MobileNet
    • https://arxiv.org/abs/1704.04861
  • ShuffleNet
    • https://arxiv.org/abs/1707.01083
  • Xception
    • https://arxiv.org/abs/1610.02357
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东阳z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值