摘要
近几年来深度学习发展迅速,在计算机视觉、自然语言处理、机器人等领域都发挥出了卓越的性能。深度卷积神经网络作为深度学习的重要方法被广泛应用于日常生活中。然而,深度卷积神经网络拥有高性能的背后,归功于其较高的参数量和复杂的计算冗余。随着低功耗、低带宽、低存储等边缘移动设备的出现和兴起,这给深度卷积神经网络在这些设备上的部署带来了挑战。深度卷积神经网络的轻量化方法可以有效的降低模型的参数量和计算量,但有时一些轻量化方法只关注于减少模型的计算量。不管侧重点如何,通过适当的轻量化方法使得模型在边缘移动设备上的部署成为了可能。因此本文聚焦于深度卷积神经网络的轻量化方法展开研究,主要贡献如下: (1)针对卷积神经网络参数量过大、计算复杂度较高的问题,本文提出了一种基于样本特征对比的蒸馏算法。该方法使用参数量大、性能较高的模型作为老师模型,使用参数量小、性能较低的模型作为学生模型。通过对比学习的策略最大化老师模型和学生模型特征表示之间的互信息量下界,来指导学生模型训练。最后使用“推土机距离”优化对比学习的效果,促进了老师模型学到的“知识”有效地向学生模型迁移,使学生模型的性能得到提高。该方法得到的学生模型相比于老师模型不仅拥有更少的参数量和计算冗余,而且使用该蒸馏方法得到的学生模型,其性能更加接近于老师模型的性能。 (2)当模型的参数量得到压缩并且满足存储要求后,参数量已经不是模型轻量化任务重点要关注的对象。因此,进一步压缩模型的计算量、提高模型的推理速度、减少模型推理时对内存的开销是模型轻量化的重要方向。针对此问题本文提出了基于通道激活性对比的自适应动态剪枝算法。针对不同的样本动态设定剪枝的特征门,并且对特征门进行了自适应优化;使用对比学习的策略,优化了特征和对应通道激活性分布之间的一致性,提高了剪枝模型的泛化能力。算法在几乎不降低模型性能的基础上,压缩了计算量,提高了模型的推理速度,减少了模型推理时的内存开销。 本文基于所提方法,使用Pytorch框架,在多种不同的数据集上对算法进行了验证,并且对比了大量先进算法,实验结果表明本文方法有效地实现了深度卷积神经网络轻量化的要求。