摘要
模型修剪已经成为一种有用的技术,它提高了深度学习的计算效率,使得在资源有限的场景中部署解决方案成为可能。相关工作中广泛使用的一种做法是,假设一个小的表单参数或特征在推理时发挥的信息作用较小。在本文中,我们提出了一种信道修剪技术来加速深度卷积神经网络的计算,它并不依赖于这个假设。相反,它侧重于直接简化cnn的信道到信道计算图,而不需要执行计算困难且不总是有用的任务,即使有线电视新闻网的高维张量结构化稀疏。我们的方法分两个阶段:首先采用端到端的随机训练方法,最终迫使某些通道的输出保持不变,然后通过调整影响层的偏差,从原始神经网络中删除这些不变的通道,从而可以快速微调最终的压缩模型。我们的方法从优化的角度来看非常吸引人,并且易于复制。我们通过几个图像学习基准测试了我们的方法,并展示了其有趣的方面和竞争性能
1.introduction
并非深度神经网络中的所有计算都同等重要。在典型的深度学习管道中,专家创建一个神经架构,该架构使用准备好的数据集进行训练。训练深度模型的成功通常需要反复试验,并且这种循环通常对神经网络中发生的计算的优先级没有多少控制。最近,研究人员开始为卷积神经网络开发模型简化方法,记住一些计算确实是非关键的或冗余的,因此可以安全地从训练好的模型中移除,而不会显著降低模型的性能。这种方法不仅提高了计算效率,而且有可能减轻模型的过拟合效应。然而,发现一个训练有素的美国有线电视新闻网的哪些计算子集更适合删减是不容易的。现有的方法可以从学习角度或计算角度进行分类。从学习的角度来看,一些方法使用数据无关的方法,其中训练数据不帮助确定训练的CNN的哪个部分应该被修剪,例如,何等人(2017)和张等人(2016),而其他方法使用数据相关的方法,通常通过联合优化来生成修剪决策,例如,韩等人(2015)和安瓦尔等人(2017)。从计算的角度来看,有一些方法集中于将卷积或线性映射的密集权重设置为结构化稀疏,我们在这里提出了一种采用新概念的方法来有效地实现相同的目标
我们没有将CNNs的计算视为位于不同层的独立计算的集合,而是将其视为一个网络流,通过不同层的不同通道将信息从输入传递到输出。我们认为,节省CNN的计算不仅是为了减少在单个层中计算的内容,而且可能更重要的是了解每个通道如何对底层传递图中的整个信息流做出贡献,以及删除对该过程不太负责的通道。在Inspired by this new conception中,我们提出了一个“门”ateachchannelofaCNN,控制其接收到的信息是否经过处理后实际发送到其他通道。如果一个通道“门”关闭,它的输出将始终是一个常数。事实上,每一个设计好的“门”都会有一个预先关闭的意图,除非它有一个“强大”的职责,将它从输入端接收到的一些信息发送到后续的层。我们发现在修剪中枢神经系统时实现这个想法是不复杂的,这将在第4节中详细介绍。
我们的方法既没有给现有的有线电视网引入任何额外的参数,也没有改变其计算图。事实上,它只是给现有的神经网络梯度训练带来了边际开销。它还具有一个吸引人的特性,即可以在一轮资源密集型训练中连续构建多个具有不同推理性能的紧凑模型(如在我们的实验中)。这简化了选择在生产中部署的平衡模型的过程。很可能,我们的方法唯一的适用性约束是CNN中所有的卷积层和全连通层(除了最后一层)都应该被批量归一化(Ioffe & Szegedy,2015)。考虑到批处理规范化已经成为设计最先进的深度学习模型的一个广泛采用的要素,并且许多成功的CNN模型正在使用它,我们相信我们的方法具有广泛的潜在影响。1
在本文中,我们从重新思考一个在现有渠道修剪工作中广泛探索的基本假设开始。我们指出了成功实现这一假设的几个问题和差距。然后,我们提出了我们的替代方法,它可以解决几个数值难题。最后,我们在不同的基准上对我们的方法进行了实验,并验证了它的有用性和优势。
2 RELATED WORK
减小神经网络的规模以提高其在推理时的计算性能一直是神经网络和深度学习领域的研究热点。先锋作品包括《最佳脑损伤》(勒昆等人,1990年)和《最佳脑外科医生》(哈西比和斯托尔克,1993年)。最近的发展集中在要么降低所提供网络的结构复杂性,要么从头开始训练一个紧凑或简化的网络。我们的工作可以分为前者,因此下面的文献综述围绕着降低结构的复杂性。
为了降低深度学习模型的结构复杂性,以往的工作主要集中在稀疏化卷积核或网络中多层特征图的权值(Anwar et al., 2017;Han et al., 2015)。一些最近提出的努力,从专门硬件的实现角度出发,对这些矢量组件施加结构化稀疏性(Wen et al., 2016;Zhou et al., 2016;Alvarez & Salzmann, 2016;Lebedev & Lempitsky, 2016)。正如Molchanov et al.(2017)所指出的,基于正则化的修剪技术需要每层敏感性分析,这增加了额外的计算。他们的方法依赖于所有层的标准的全局缩放,不需要敏感性估计,这是我们的方法也具有的一个有益的特征。据我们所知,目前还不清楚这些著作在深度学习方面的应用有多广泛。在第3节中,我们详细讨论了正则化剪枝技术的潜在问题,特别是那些正则化高维张量参数或使用基于量的剪枝方法的潜在问题。我们的方法通过将预期的剪枝操作仅约束到批标准化卷积层来解决上述问题。而不是在内核或特征映射上提出结构稀疏性,在批处理归一化算子中,我们对标度参数γ加强了稀疏性。这就阻止了采样信息通过卷积层的部分通道,实际上意味着可以安全地移除这些通道。
Huang和Wang(2017)最近的一项研究使用了与我们类似的技术,通过在原始网络中引入额外的缩放因子来去除ResNet中不重要的残留模块。然而,在我们的论文中指出的一些优化细节并没有得到很好的解释。另一项名为Network-Slimming (Liu et al., 2017)的近期研究也旨在精简批处理归一化的缩放参数。我们提出了一种新的基于ISTA和缩放技巧的梯度学习算法,提高了算法的鲁棒性和速度。特别是Liu et al.(2017)的工作能够在ImageNet上修剪VGG-A模型。目前还不清楚他们的工作将如何处理γ-W重标效应,以及他们的方法是否能被采用到大型预训练模型,如ResNets和Inceptions。我们用预先训练过的ResNet-101进行了实验,并与最近的工作进行了比较,这些工作在大型cnn上表现良好。我们还实验了一个图像分割模型,该模型有一个类似于初始化的模块(在ImageNet上预先训练过),用于定位前景目标。