Rethinking the Smaller-Norm-Less-Informative Assumption in Channel Pruning of Convolution Layers论文翻译

本文挑战了模型剪枝中广泛采用的小范数等同于低重要性的假设,提出了一种新的通道剪枝技术,尤其针对CNN的BatchNorm层。这种方法不依赖于复杂的计算和张量稀疏性,而是通过调整偏差值使某些通道常量化,从而实现模型的快速精简。实验表明,该方法在多个图像学习基准上表现出良好的性能和竞争力,且在不牺牲模型性能的情况下,可以有效减少计算复杂性。
摘要由CSDN通过智能技术生成

摘要

       模型剪枝已成为一种可以提高深度学习的计算效率的有用技术,从而让深度学习模型在资源有限的场景中部署成为可能。相关工作中,广泛使用的实践假设:较小范数的参数或含较少信息的特征在推理中起着较小的作用。在本文中,我们提出了一种用于加速深度卷积神经网络(CNN)计算的通道剪枝技术,该技术并不严格依赖于这种假设。相反,它侧重于CNN的通道到通道计算图的直接简化,而不需要执行复杂的计算和不一定总有用的CNN高维张量结构稀疏方法。我们的方法分两个阶段:首先采用端到端随机训练方法,最终迫使某些通道的输出保持不变,然后通过调整其影响层的偏差值来修剪原始神经网络中的那些常量通道,这样,产生的紧凑模型可以快速finetune。从优化的角度来看,我们的方法在数学上具有吸引力,并且易于复现。我们通过几个图像学习基准试验了我们的方法,并展示了它的有趣方面和竞争性能。

1 引言

       深度神经网络中并非所有的计算都有同样的重要性。在典型的深度学习管道中,专家设计神经网络结构,使用准备好的数据集进行训练。训练深度模型的成功通常需要反复试错,并且这种试错通常不会把控制神经网络的计算复杂度作为优先考虑的问题。最近研究人员开始为卷积神经网络(CNN)开发模型简化方法,同时记住一些计算确实是非关键或冗余的,因此可以安全地从训练模型中移除,而不会显着降低模型的性能。这些方法不仅可以提高计算效率,还可以减轻模型的过度拟合效应。
  因而,发现训练的CNN的哪些计算子集被修剪更加合理是非常重要的。现有方法可以从学习角度或从计算角度进行分类。从学习的角度来看,一些方法使用数据无关的方法,其中训练数据无助于训练CNN的那些部分就应该修剪,如CVPR2017:Channel pruning for accelerating very deep neural networksAccelerating very deep convolutional networks for classification and detection等。而其他人通常使用数据相关的方法,通过联合优化来生成修剪决策,如NIPS2015:Learning both weights and connections for efficient neural
network
Structured pruning of deep convolutional neural networks等。从计算的角度来看,虽然大多数方法都侧重于将卷积和线性计算的密集权重映射为稀疏结构,但是我们在此提出一种新的方法来实现相同的目标。
  我们不是将CNN的计算视为不同层的单独计算的集合,而是将CNN视为一个网络流,通过不同层的不同通道将信息从输入传递到输出。我们认为CNN的节省计算不仅仅是减少在单个层中计算的内容,而且更重要的是了解在深层计算图中的每个通道如何对整个信息流做出贡献同时删除贡献较少的通道。受这一新概念的启发,我们提出在CNN的每个通道设计一个“门”,控制其接收的信息是否在处理后实际发送到其他频道。如果通道“门”关闭,其输出将始终为常量。实际上,每个设计的“门”都有预先关闭的意图,除非它有一个“强大”的职责,即将一些接收到的信息从输入发送到后续的层。我们发现在修剪CNN时实现这个想法并不复杂,详见第4节。
  我们的方法既不向现有CNN引入任何额外参数,也不改变其计算图。事实上,它只会为现有的CNN梯度训练带来边际开销。它还具有一个吸引人的特点,即可以在一轮资源密集型训练中连续构建具有不同推理性能的多个紧凑模型(如我们的实验)。在生产中,这简化了选择平衡模型部署的过程。可能,我们方法的唯一应用约束是CNN中的所有卷积层和完全连接层(除了最后一层)应该进行BatchNorm。鉴于BatchNorm已成为设计最先进深度学习模型的广泛采用的成分,并且许多成功的CNN模型正在使用它,我们认为我们的方法具有广泛的潜在影响。
  这篇论文,开始于我们重新思考在现有通道剪枝工作中广泛采用的基本假设。我们指出了成功实现这一假设的一些问题和差距。然后,我们提出了我们的替代方法,来解决这些困难。最后,我们在不同的基准测试中测试我们的方法并验证其有用性和优势。

2 相关工作

在神经网络和深度学习社区中,缩小神经网络的大小以加快其在推理阶段的计算性能一直是一个长期研究的课题。早期工作包括Optimal Brain Damage(LeCun等,1990)和Optimal Brain Surgeon(Hassibi&Stork,1993)。最近的发展集中在降低所提供网络的结构复杂性或从头开始训练紧凑或简化的网络。我们的工作可以归类为前者,因此下面的文献综述围绕着降低结构复杂性
  为了降低深度学习模型的结构复杂性,以前的工作主要集中在稀疏卷积核的权重或网络中多个层的特征映射(Structured pruning of deep convolutional neural networks NIPS2015:Learning both weights and connections for efficient neural network)。最近的一些研究从专用硬件的实施角度出发的动机提出了对这些向量组件施加结构化稀疏性(Learning structured sparsity in deep neural
networks
ECCV2016:Less is more: Towards compact cnnsNIPS2016:Learning the number of neurons in deep networksCVPR2016:Fast convnets using group-wise brain damage)。然而正如Molchanov等人所论述的那样(ICLR2017:Pruning convolutional neural networks for resource efficient transfer learning),基于正则化的剪枝技术需要对每层进行灵敏度分析,这增加了额外的计算。他们的方法依赖于对所有层进行标准的全局rescaling,而不需要灵敏度估计,这些有益特征在我们的方法中也有使用。据我们所知,还不清楚这些工作在深度学习中的广泛应用。在第3节中,我们详细讨论了基于正则化的剪枝技术中潜在的问题,这些技术可能会对它们的广泛应用产生影响,尤其是那些正则化高维张量参数基于权值大小强度的剪枝技术。我的的方法仅把预测的修剪操作约束在BatchNorm-Convolution层,而不是在内核或特征映射上构造结构化稀疏性,我们在BatchNorm算子上执行稀疏的缩放因子γ,这会阻止通过卷积层中部分通道传递样本信息,而这实际上意味着可以安全地删除这部分通道。
  最近的一项工作(ECCV2018:Data-driven sparse structure selection for deep neural networks)使用了与我们类似的技术,通过在原始网络中引入额外的缩放因子来去除ResNet中不重要的残差模块。然而,我们的论文中指出的一些优化细微之处在这篇文章中并未得到很好的解释。最近另一项名为Network-Slimming的工作(ICCV2017:Learning efficient convolutional networks through network slimming)也旨在简化BatchNorm的Scale缩放参数。但是,我们提出了一种基于ISTA和rescaling技巧的新算法方法,而不是像他们那样使用现成的梯度学习,从而提高了经验优化的稳健性和速度。特别是刘等人的Network-Slimming工作能够在ImageNet上修剪VGG-A模型。目前还不清楚他们的工作如何处理γ-W重新缩放效应,以及他们的方法是否可以用于大型预训练模型,如ResNets和Inceptions。我们对经过预先训练的ResNet-101进行了实验,并与最近的大型CNN工作相比较。我们还尝试了一种图像分割模型,该模型具有类似Inception的模块(在ImageNet上预先训练)去定位前景对象。

3 重新思考更小范数-更少信息量的假设

在大多数正则化线性回归中,大范数系数通常是高信息量特征的显著指标。这在统计学和机器学习中被广泛认同,删除具有小系数的特征不会明显影响回归误差。因此,已经建立的做法是使用易处理的范数来优化模型中的参数,并通过在训练之后比较它们的范数来挑选重要的参数。但是,这种假设不是无条件的。通过使用Lasso回归或Ridge岭回归来选择线性模型中的重要预测变量,人们总是必须首先对每个预测变量进行归一化。否则,结果可能不是解释性的。例如,岭回归惩罚更多具有低方差的预测因子,并且Lasso回归强制稀疏在OLS(?)中已经很小的系数。对于非凸学习,正确使用正则化的这种正常化条件,通常是不令人满意的。例如,必须仔细考虑下列的两个问题。我们提供这两个案例来举例说明正规化可能会失败或使用有限。确实存在避免上述失败的方法。
  模型重新参数化
  在第一种情况下,我们表明,对不同层的权重规范化进行细粒度控制并不容易,必须要么在所有层中采用统一惩罚或者与重新参数化模式继续斗争。考虑找个深度线性(卷积)网络,应用最小二乘Lasso回归,当λ>0,
min ⁡ { W i } i = 1 2 n E ( x , y )   D ∣ ∣ W 2 n ∗ … ∗ W 2 ∗ W 1 ∗ x − y ∣ ∣ 2 + γ ∑ i = 1 n ∣ ∣ W 2 i ∣ ∣ 1   . \min_{\{W_i\}^{2n}_{i=1}}\Epsilon_{(x,y)~D}||W_{2n}* \ldots *W_2*W_1*x-y||^2+\gamma\sum_{i=1}^{n}||W_{2i}||_1\ . { Wi}i=12nminE(x,y) DW2nW2W1xy2+γi=1nW2i1 .

上述公式不是一个定义明确的问题,因为对于任意参数集W,总可以找到另一个参数集W’,通过设置保持相应的1范数不变,实现较小的总损失。
W i ′ = α W i , i = 1 , 3 , … , 2 n − 1   a n d   W i ′ = W i / α , i = 2 , 4 , … , 2 n , W'_i=\alpha W_i,i=1,3,\ldots,2n-1\ and \ W'_i=W_i/\alpha,i=2,4,\ldots,2n, Wi=αWi,i=1,3,,2n1 and Wi=Wi/α,i=2,4,,2n,
  其中α>1。换句话说,对于任意ε>0,总可以找到一个参数集W(通常是非稀疏的),可以是的第二个最小二乘损失最小化,同样使第二个Lasso项小于ε。
  我们注意到基于梯度的学习在探索这种模型重新参数化模式方面是非常低效的。事实上,最近有一些关于这一问题的讨论(Sharp minima can generalize for deep nets)。如果采用预先训练的模型,并使用新的基于范数的参数正则化来增加其原始目标,则新的梯度更新可能加速,或者可能需要很长时间才能使沿着模型的重新参数化轨迹行进的变量(也就是不确定)。这突出了一个理论上的差距,质疑现有的稀疏性诱导公式和实际计算算法是否可以为深度学习模型实现广泛满意的参数稀疏性。
  变换不变性
  在第二种情况下,我们表明BatchNorm与权重正则化不兼容。这个例子是在带BatchNorm的卷积层中对滤波器kernel进行处罚:在第1层,我们让 
x l + 1 = m a x { γ ⋅ B N μ , σ , ε ( W l ∗ x l ) + β , 0 } x^{l+1}=max\{\gamma\cdot BN_{\mu,\sigma,\varepsilon}(W^l*x^l)+\beta,0\} xl+1=max{ γBNμ,σ,ε(Wlxl)+β,0}
  其中γ和β是长度为通道数的向量。同样,可以清楚地看到 W l W^l Wl的任何统一缩放都会改变它的 l 1 l_1 l1 l 2 l_2 l2-norms,这将导致对输出不产生影响。或者说,如果一个人想要将多个层的权重范围最小化在一起,则不清楚如何为每个层选择适当的惩罚。从理论上讲,总会存在一个优化器,它可以将权重改变为具有最小幅度,而不会损害任何推理性能。正如其中一位评论家指出的那样,人们可以通过将重物投射到单位球的表面来暂时避免这个问题。然后,必须处理非凸的可行参数集,在开发数据依赖修剪方法的优化时引起额外的困难。值得注意的是,一些现有的工作以逐层贪婪的方式使用这种策略(ICCV2017:Channel pruning for accelerating very deep neural networksAccelerating very deep convolutional networks for classification and detection)。
  基于此讨论,现有的许多声称使用Lasso,Group Lasso(例如Wen等人(2016); Anwar等人(2017))或阈值处理(例如Molchanov等人(2017))工作,强制执行参数稀疏性有一些理论上的缺陷可以改进。事实上,神经网络剪枝中的许多启发式算法实际上并不自然地生成稀疏参数化解决方案。更常见的是,阈值处理用于将网络中的某些参数子集直接设置为零,这可能是有问题的。原因实质上是围绕两个问题。首先,通过将小于阈值的参数设置为零,是否在某些情况下能保证神经网络功能得到保留?如果是,那么在什么条件下呢?其次,如何设置不同层次的权重阈值?并非每一层在神经网络中都有相同的贡献。预计某些层对性能起着关键作用,但只使用较小的计算和内存预算,而其他一些层对性能起很小的作用,但却消耗了大量资源。自然更希望修剪后一种层的计算,而不是前者。
  与这些现有方法相比,我们专注于在所有BatchNorm中强制实施CNN中的一小组参数的稀疏性 - 缩放因子γ。不仅对γ设置稀疏约束更简单,更容易监控,更重要的是,我们有两个强有力的理由

  1. 每个γ总是乘以归一化随机变量,因此通过测量γ的幅度值,在不同层之间的通道重要性变得可比较;
  2. 如果其后续卷积层也是BatchNorm,则避免了跨不同层的重新参数化效应。换句话说,在不同层之间缩放因子γ参数的影响是独立的。

       尽管如此,我们目前的工作仍未达到强有力的理论保证。我们相信通过将标准化特征输入及其正则化系数结合在一起,可以更接近更强大和有意义的方法。稀疏性不是目标,而是使用稀疏诱导公式来找到不那么重要的通道

4 CNN BatchNorm通道剪枝

我们描述我们的通道剪枝技术的基本原理和算法。

4.1 初步分析

修剪常量通道。考虑带BatchNorm的卷积:
x l + 1 = m a x { γ l ⋅ B N μ l , σ l , ε l ( W l ∗ x l ) + β l , 0 } x^{l+1}=max\{\gamma^l\cdot BN_{\mu^l,\sigma^l,\varepsilon^l}(W^l*x^l)+\beta^l,0\} xl+1=max{ γlBNμl,σl,εl(Wlxl)+βl,0}
为了方便记忆,我们让 γ = γ l \gamma=\gamma^l γ=γl。请注意如果 γ \gamma γ中的某个元素设置为零,例如 γ ∣ k ∣ = 0 \gamma|k|=0 γk=

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值