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
层使用小批量统计对内部激活进行归一化。设 zin
和 zout
为一个 BN
层的输入和输出,B
表示当前的 minibatch
,BN
层进行如下变换:
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^=(