利用L1范数的CNN模型剪枝

本文介绍了利用L1范数对CNN模型进行剪枝的原理和方法,通过引入缩放因子并进行稀疏正则化,联合训练网络权重和缩放因子,然后对小因子通道进行修剪,最后进行微调。实验表明,这种方法可以有效减少网络参数,提高运行效率,甚至在微调后保持或提高模型精度。
摘要由CSDN通过智能技术生成

1.原理

缩放因子和稀疏性引起的惩罚。我们的想法是为每个通道引入一个缩放因子 γ,它与该通道的输出相乘。然后我们联合训练网络权重和这些缩放因子,并对后者进行稀疏正则化。最后,我们用小因子修剪那些通道,并对修剪后的网络进行微调。具体来说,我们方法的训练目标由下式给出
L = ∑ ( x , y ) l ( f ( x , W ) , y ) + λ ∑ γ ∈ Γ g ( γ ) ———— ( 1 ) L=\sum_{(x,y)}l(f(x,W),y)+λ\sum_{\gamma\in\Gamma}g(\gamma)————(1) L=(x,y)l(f(x,W),y)+λγΓg(γ)————(1)
其中(x,y)表示训练输入和目标,W 表示可训练权重,第一个求和项对应于 CNN 的正常训练损失,g(·)是稀疏性引起的尺度因子惩罚,λ 平衡这两个项。在我们的实验中,我们选择 g(s)=| s |,这被称为 L1 范数,广泛用于实现稀疏性。

​ 由于修剪通道本质上对应于删除该通道的所有传入和传出连接,因此我们可以直接获得一个狭窄的网络(见图 1),而无需借助任何特殊的稀疏计算包。缩放因子充当通道选择的代表。由于它们与网络权重联合优化,网络可以自动识别无关紧要的通道,从而安全地删除这些通道,而不会很大地影响泛化性能。
在这里插入图片描述

图 1:我们将缩放因子(从批量归一化层复用)与卷积层中的每个通道相关联。在训练期间对这些缩放因子施加稀疏正则化以自动识别不重要的通道。具有小比例因子值(橙色)的通道将被修剪(左侧)。修剪后,我们获得紧凑模型(右侧),然后对其进行微调以达到与正常训练的完整网络相当(甚至更高)的精度。

利用 BN 层中的缩放因子。批量归一化已被大多数现代 CNN 用作实现快速收敛和更好泛化性能的标准方法。 BN 对激活进行归一化的方式促使我们设计一种简单有效的方法来合并通道缩放因子。特别是,BN 层使用小批量统计对内部激活进行归一化。设 zinzout 为一个 BN 层的输入和输出,B 表示当前的 minibatchBN 层进行如下变换:
z ^ = z i n − μ B ( σ B 2 + ϵ ) ; z o u t = γ z ^ + β ———— ( 2 ) \hat{z} = \frac{z_{in}-\mu_{\mathcal{B}}}{\sqrt(\sigma^{2}_{\mathcal{B}}+\epsilon)};z_{out}=\gamma\hat{z}+\beta————(2) z^=(

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值