论文部分内容阅读
深度学习,一种利用深度神经网络(Deep Neural Network,简称DNN)从数据中学习的机器学习算法,在最近几年正成为图像分类、语音识别和自然语言处理等领域的主流算法。然而现有的深度网络模型参数众多,导致其具有占用存储空间大和推断速度慢等缺点,从而限制了DNN在硬件条件有限的终端如手机和可穿戴智能设备上的应用。为了解决这个问题研究者提出了很多压缩和加速DNN的方法,其中剪枝(Pruning)是一类简单但非常有效的方法。剪枝即在维持DNN性能不下降的条件下删除某些不重要的部分。根据删除对象的不同,剪枝可分为权值剪枝和神经元剪枝,前者删除DNN中不重要的权值,而后者删除DNN中不重要的神经元。尽管DNN剪枝正受到越来越多研究者的关注,但仍有很多重要问题没有得到很好的研究。其中有三个问题是本文觉得需要迫切解决的:1)如何使DNN训练与剪枝同时进行的问题;2)如何设计更高效的神经元剪枝算法的问题;3)如何在特定任务上应用DNN剪枝的问题。本文针对这3个问题展开了研究,本文的主要贡献有:1.本文提出了一种可以使DNN训练和剪枝同时进行的方法。以往的DNN剪枝方法依赖于一个预先训练好的参考模型,即显式的分为训练和剪枝两个阶段,然而训练DNN本身是一个费时费力的过程。本文通过分析剪枝阈值对整个剪枝算法的重要作用,提出了一种基于可变阈值的从头剪枝方法(Pruning from scratch)。在该方法中,剪枝阈值不仅可以根据DNN训练进行动态改变,而且可以自适应于DNN训练过程中权值的分布变化,从而在训练完成的同时完成对DNN权值的剪枝。2.本文提出了一种新的基于优化非线性重构误差的逐层剪枝神经元的方法(Layer-wise Neuron Pruning based on Nonlinear Reconstruction Error,简称LNP-NRE)。与以往的逐层剪枝神经元方法使用的线性重构误差不同的是,非线性重构误差考虑了DNN中的非线性激活函数,因而是一个更加合理的优化目标。基于此优化目标,本文提出了一种新的逐层剪枝神经元算法LNP-NRE。实验结果证明了LNP-NRE在相同水平的准确率损失下,可以比现有方法剪枝更多的神经元。3.本文针对细粒度图像分类任务,提出了基于注意力机制的卷积神经网络通道剪枝的方法(Attention-based Channel Pruning,简称ACP)。卷积神经网络(Convolutional Neural Network,简称CNN)是DNN中专门用于处理图像相关任务的网络模型,CNN通道剪枝与DNN神经元剪枝相对应。剪枝后的网络通常运行在像手机或可穿戴设备这样的个人设备上,这就意味着在剪枝的实际使用场景中,小规模细粒度分类任务占的比例更大。然而,由于数据量的缺乏,直接在此类任务上训练CNN会导致严重的过拟合,因此本文首先通过迁移学习把在通用任务上训练的CNN迁移到细粒度分类任务上,然后通过注意力机制与稀疏正则化方法的联合使用对CNN中的冗余通道进行剪枝。实验结果验证了ACP方法的有效性。