【文章学习系列之技巧】Network Slimming

文章概况

这是一篇2017年发表于ICCV的一篇论文。该论文指出深度卷积神经网络的应用受到了高计算成本的阻碍,并提出一种修剪模型结构的方式用于降低这种成本,使得模型大小减小、运行内存减小且不降低精度的情况减少参数量。

论文链接
代码链接

问题来源

对于卷积神经网络,在模型定义的时候我们会设计每一层的特征图数目(64、128……),然而如此大量的特征图是否每一个都对模型起到了关键的作用?如果有,应该用什么方法来分辨?

方法

在该文章中,作者利用BN(Batch Normalization)中的缩放因子γ作为每一个特征图的权重,从而代表特征图的重要性。

首先需要回顾一下BN的作用。为了防止原始数据经由权重和偏置的计算作用后,出现数据盲目扩大而导致的大量参数位于激活函数的饱和部分(下图蓝色椭圆区域)并梯度消失的情况。因此使用BN将数据保持在正态分布下,使得这些参数更多地位于激活函数的中间灵敏区域(下图红色方框区域)。
在这里插入图片描述

然而红色方框的区域虽然灵敏但近似线性,而非线性的网络参数计算方式才具有更好的表达能力,因此BN中对该部分做了优化,如下图所示,由网络自己学习γ和β,强制其进行非线性变化。
在这里插入图片描述
上式中,最能影响y的大小变化的便是γ,同时具备自训练、无额外参数引入的优点,由此,作者便想到了将γ作为通道重要性的衡量指标。

根据γ的对比,假设需要筛选掉γ较小的30%数目的通道(30%处为0.1),对小于0.1的特征图所在的γ和β赋值为0,这样就表明该处特征图置零,不参与后续计算。如下图,屏蔽橙色特征图的数据,模型精简至仅剩蓝色特征图。
在这里插入图片描述

随后,为了确保γ们的数值尽量不趋于一致,需要做稀疏化处理,作者在γ的计算中引入l1正则项,l1相比l2在0处的结果更干脆利落直接为0,而l2一直趋近于0不如l1的稀疏化效果好。

在这里插入图片描述
网络瘦身主要步骤如上图所示:初始化、用通道稀疏正则项的方式训练、用小比例因子修剪通道、修剪后的网络微调,最终形成紧凑型网络。

实验结果

在这里插入图片描述
上图展示了三种任务下的实验对比,作者使用多种百分比的剪枝比例,实验表明,剪枝后效果有所提升,模型参数量和模型计算量有显著减少。

在这里插入图片描述
上图对比了四种训练方式的结果。紫色表示常规训练结果;绿色表示添加了稀疏化的训练结果;红色表示剪枝瘦身结果;蓝色表示剪枝并微调后的结果。可以看出在剪枝比例不超过一半时,四者的效果依次提升,当剪枝过多时,红色和蓝色曲线效果显著降低。

总结

模型瘦身效果和性能都很显著,很大程度上解决了模型过大参数量过多计算复杂的痛点,因此在实际的应用部署中具有很高的价值。需要注意的是,该方法是基于BN实现的,因此需要以BN层的存在为前提。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清流自诩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值