李宏毅机器学习笔记第18周_神经网络压缩(Network Compression)


一、Network Pruning

1.Network can be pruned

1) 神经网络的参数是非常多的,但并非所有的参数都是非常重要的,因此我们可以把这些多余的、不那么重要参数给删除掉,这样可以减小模型大小,加快运算速度。
在这里插入图片描述
2) 现在的问题是我们如何去评估参数是否重要?有两个方向,第一个是评估权重的重要性,可以计算它的绝对值去判断,第二个是评估神经元的重要性,我们可以去记录在数据集中神经元出现的次数去判断。在进行Network Pruning操作后,我们可以进行微调,并且也可以反复进行上述过程,就会得到比较小的Network。
在这里插入图片描述

2.Weight pruning

在实际操作中,我们进行Weight pruning后,会把我们的Network变得不规则,这样的Network是难以进行implement和GPU加速,于是我们会把删掉的weight补0,但是这样没有真正地减小Network。
在这里插入图片描述

3.Neuron pruning

在实际操作中,我们进行Neuron pruning后,我们的Network还会保持一定的规则,它会比较容易implement和进行GPU加速。
在这里插入图片描述

4.Why Pruning?

1) 现在有一个问题是我们先要训练一个大的Network,然后再去把它变小,为什么不直接训练一个小的Network呢?因为一个大的Network比较容易训练。
2) 为什么大的Network比较容易训练呢?有一个假说是Lottery Ticket Hypothesis,我们在训练一个大的Network的同时,相当于训练许多小的Network,只要其中一个小的Network训练成功,就相当于大的Network训练成功。

二、Knowledge Distillation

1. 如下图所示,Knowledge Distillation需要两个Network,一个是大的模型Teacher Net,另一个是小的模型Student Net。过程是先让Teacher Net学习,学习结束后让Student Net把Teacher Net当作一个标准,让Student Net的输出与Teacher Net的输出越接近越好。
在这里插入图片描述
2. 在Knowledge Distillation的计算过程中,会对softmax进行改写,这样的好处是把比较集中的分布变得更加平滑。
在这里插入图片描述

三、Parameter Quantization

1. Parameter Quantization的方法:用更少的bit去储存数据;用Weight clustering的方法可以节省空间,但这样的结果是会导致误差变大;Huffman encoding,具体做法是对于常出现的clusters用少量的bit表示,不常出现的clusters用较多一点的bit表示。
在这里插入图片描述
2. Binary Weight的做法是可以只用一个bit去储存数据。
在这里插入图片描述

四、Architecture Design

1.Depthwise Separable Convolution

1) Depthwise Convolution
如下图所示,一个filter对应一个channel,然后做卷积得到feature map。
在这里插入图片描述
2) Pointwise Convolution
在Depthwise Convolution中,channel与channel之间是没有联系的,于是就要加上Pointwise Convolution,这里filter的大小限制是必须是1 * 1。
在这里插入图片描述

2.Low rank approximation

如下图所示,在中间添加一层大小为k的linear,可以减少训练需要的参数。
在这里插入图片描述

五、Dynamic Computation

Network可以自由地调整需要的运算资源。
在这里插入图片描述

1.Dynamic Depth

Network可以自由地调整自己的深度。
在这里插入图片描述

2.Dynamic Width

Network可以自由地调整自己的宽度。
在这里插入图片描述

3.Computation based on Sample Difficulty

如下图所示,遇到一个简单的问题,一层Layer就会结束;遇到一个复杂的问题,需要很多层Layer才会结束;因此需要机器视情况自由地调整。
在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值