MIT-TinyML学习笔记【1】Pruning

[!quote]-

Abstract

不同粒度的剪枝
剪枝准则

Introduction to Pruning

What is Pruning?

名词术语解释

  • synapses突触
  • neurons神经元
  • Granularity 粒度

image.png

Make neural network smaller by removing synapses and neurons

Pruning Processing

根据某种criteria进行权重的选择
可以看到初始的权重分布近似高斯,剪枝后的权重在零值出出现了gap,重新训练后的权重弥补了gap并且分布的更加均匀
image.png

进一步,反复剪枝和重训练,能达到压缩模型90%的情况下实现无精度损失
image.png

经典网络模型的剪枝实验
image.png
(**注意Parameter和MACs的计算方法不同[[L02-Efficiency Metrics]])

这里AlexNet和VGG-16中的全连接层FC数量比较多,SqueezeNet原本的参数量就已经很小,但是Dr. Han在Ph.D论文实验中进行测试,还是很进一步压缩的空间的!

How should we formulate pruning?

image.png
在约束条件:非零权重non-zero weight数量小于阈值N(这个阈值N往往是通过设定剪枝比例来计算的)的条件下,使得pruned weights剪枝后的权重计算得到的Loss最小

Determine the Pruning Granularity

In what pattern should we prune the neural network?

结构化剪枝vs非结构化剪枝
image.png

  • 细粒度(非结构化)的剪枝更加灵活,但对于硬件不够友好
  • 粗粒度(结构化)剪枝不够灵活,但是适合硬件加速

**不同粒度的剪枝分类如下
从左向右具有越来越规则的pattern,注意第二个方法的pattern固定后比fine-grained方法更好索引

Fine-grained

  • Fine-grained剪枝具有最灵活的索引,通常可以获得更大的压缩率;适合在custom hardware上进行加速而不适合GPU
    image.png

Pattern-based

  • Pattern-baed (NVIDIA的GPU支持这类剪枝)
    • N:M的意思是每M个连续的元素中有N个被剪枝,例如下图中为2:4的剪枝
    • 将8x8的dense matrix压缩乘8x4的矩阵,然后用额外的2-bit位宽数据保存索引
    • 其中,1bit为location,1bit为该位置上的weight是不是零
      image.png

Channel-level

  • Channel Pruning获得明显加速,但是压缩率不能过高(要不然整没了
    image.png

Determine the Pruning Criterion

What synapses/neurons should we prune?

**less important parameters being removed are, the better performance of pruned neural network is.

image.png
intuition:0.1应该被舍弃

1 Magnitude-based

直接取绝对值(L1-norm)
  • 对于element-wise的剪枝,直接对每个element取绝对值,保留大的,将小的置为0
    image.png

  • 对于row-wise的剪枝,可以取绝对值后每行求和,保留sum大的行
    image.png

L2-norm

也可以计算L2-norm、Lp-norm
image.png

2 Scaling-based

  • A scaling factor is associated with each filter (i.e., output channel) in convolutional layers
  • The scaling factor is multiplied to the output of that channel
  • The scaling factors are trainable parameters(encourage some channel to zero)
    最后得到小的scaling factor的通道会被剪枝
    image.png
  • 如何使用?
    • scaling factors可以在BN层加入,而不需要一个额外的layer
      image.png ^kkcprq

3 Taylor Expansion Analysis on Pruning Error

image.png

  • 参数的重要性可以通过定量化移除它引入的误差来评估
  • 假设:
    • 目标函数L是近似二阶的,最后一项高阶可以忽略
    • 在进行量化压缩时神经网络的训练已经收敛,一阶项可以忽略
    • 消除每个参数引入的误差是独立的,交叉项可以忽略
      可以得到
      image.png

但是这个东西很难计算,所以可以用一阶的来近似

4 First-Order-based

image.png

image.png

Selection of Neurons to Prune

image.png
神经元的剪枝相当于粗粒度剪枝
移除一个FC层的神经元类似移除一个卷积层的通道

1 Percentage-of-Zero-Based Pruning

image.png

  • 经过ReLU激活的输出会存在很多零
  • 与weights的幅值类似,零激活的平均百分比可以是一个神经元重要性的测度
  • 上图中,左边为image1,右边为image2的输出,均为3通道,输出特征为4x4
  • 计算非零输出个数来决定哪个通道被剪枝

2 First-Order-based

image.png

3 Regression-based

  • 基于回归的剪枝最小化每层输出的重建误差
  • 只考虑一层,因此是一种local optimal
    image.png
  • β 长度 = c i \beta 长度 = c_{i} β长度=ci
  • β 1 = 0 \beta_{1}=0 β1=0 则表示 x 1 = 0 x_{1}=0 x1=0 即通道1被剪枝

上述目标函数可以重写为
image.png

ThiNet proposed a greedy solution to optimize
image.png
相当于找到最小的L2正则项的通道
image.png

放宽约束条件可以求解LASSO回归
image.png

用最小二乘求解
image.png

Summary

image.png

References

image.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值