神经网络剪枝

对神经网络(主要是CNN)进行剪枝,使模型运行速度变快,大小变小,且准确率与原来相近。

如何剪枝

移除滤波器

参考论文 1,对所有滤波器(filters)计算L1范数,移除值较小的滤波器。

  • 优点

    模型变小,运行速度变快。

  • 缺点

    依然保留部分冗余的连接。

    1. 普通卷积

    输入的特征图: xiRni×hi×wi x i ∈ R n i × h i × w i

    输出的特征图: xi+1Rni+1×hi+1×wi+1 x i + 1 ∈ R n i + 1 × h i + 1 × w i + 1

    不考虑 bias,参数维度: ni×ni+1×kh×kw n i × n i + 1 × k h × k w ,即有 ni+1 n i + 1 个 3D 滤波器 Fi,jRni×kh×kw F i , j ∈ R n i × k h × k w

    计算每个滤波器的 L1 值,取最小的若干个移除: ni+1 n i + 1 -> ni+1 n i + 1 ′

    这会影响后续层(卷积 / 全连接 / Batch Normalization 等)的输入:

    如后续卷积层的参数维度为 ni+1×ni+2×kh×kw n i + 1 ′ × n i + 2 × k h × k w

    1. Depthwise 卷积

    Depthwise 卷积参数维度为 1×ni×kh×kw 1 × n i × k h × k w

    后续的 Pointwise 卷积参数维度为 ni×ni+1×1×1 n i × n i + 1 × 1 × 1

    应与后续的 Pointwise 卷积一起计算 L1:即使用 dw[0,:,:,:]pw[:,i,:,:] d w [ 0 , : , : , : ] ⋅ p w [ : , i , : , : ]

移除连接

参考论文 23,移除权值小于一定阈值的连接。

  • 优点

    模型变小,运行速度变快。

    能尽可能去掉冗余的连接。

  • 缺点

    需要设计更稀疏的格式保存模型,否则模型不变小也不加速。

合并 Batch Normalization

Batch Normalization 的参数可以合并到上一个卷积/全连接的参数中

如设卷积的参数为 W W , b,则卷积可表示为 y=Wx+b y = W x + b

Batch Normalization 的参数为 scale, bias, mean, variance

Batch Normalization 可表示为 y=scalevariance+εx+(biasscalemeanvariance+ε) y = s c a l e v a r i a n c e + ε ⋅ x + ( b i a s − s c a l e ⋅ m e a n v a r i a n c e + ε )

Batch Normalization 的参数合并后卷积的参数为

W=Wscalevariance+ε W ′ = W ⋅ s c a l e v a r i a n c e + ε

b=(bmean)scalevariance+ε+bias b ′ = ( b − m e a n ) ⋅ s c a l e v a r i a n c e + ε + b i a s

剪枝策略

  1. 逐层剪枝比一次性剪枝效果好

  2. 每层剪枝比例应根据敏感度分析去删减

  3. 移除滤波器时,计算L1移除值较小的比随机移除、其它计算方法效果好

  4. 剪枝后进行 finetune 比 train from scratch 效果好

  5. 剪枝后固定较为敏感的层的权值再训练的效果比较好

参考


  1. (ICLR 2017) Pruning Filters for Efficient Convnets https://arxiv.org/abs/1608.08710
  2. (ICLR 2016) Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding https://arxiv.org/abs/1510.00149 https://github.com/songhan/Deep-Compression-AlexNet
  3. (NIPS 2015) Learning both Weights and Connections for Efficient Neural Networks https://arxiv.org/abs/1506.02626
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值