文章目录
摘要
为了减轻深度学习算法在实际应用中庞大的参数量和繁重的计算量, 剪枝已经被广泛地应用在模型压缩任务中. 然而, 大多数剪枝方法仅仅利用已经训练好的模型参数作为训练的初始参数, 而模型本身的特征信息没有被利用. 为此, 本文提出了一种基于模型特征学习增强的动态剪枝方法, 在训练过程中, 提出的方法不需要数据集类别标签. 一方面, 本文利用基准模型(训练好的模型)输出的预测类别信息和中间层特征作为监督信息指导压缩子模型的任务学习, 增强了压缩模型学习基准模型特征的能力; 另一方面, 本文利用不同压缩子模型的输出信
息互相学习, 增强了压缩子模型之间特征学习的能力. 此外, 本文使用一种动态的结构化稀疏正则方式, 仅仅在预期稀疏的参数上施加正则, 同时使用基于泰勒级数的通道敏感性准则确定预期稀疏参数. 在优化过程中, 本文使用动态稀疏的迭代阈值收缩算法(iterative shrinkage-thresholding algorithm, ISTA)求解器解决了约束剪枝率的优化问题. 模型训练结束后, 提出的方法直接移除冗余的参数, 剪枝后的模型不需要微调. 在多个网络结构和数据集下, 本文提出的方法均获得了很好的压缩性能.
一、介绍
近年来随着深度学习的发展, 深度卷积神经网络已经取得了前所未有的巨大成功, 比如图像分类、物体检测、物体跟踪和视频理解等领域. 然而,大量的计算资源和能耗需要影响了其在嵌入式和移动设备的部署. 因此, 基于深度神经网络压缩与加速的方法不断涌现, 呈增长趋势.
结构化剪枝方法由于不需要专门的软硬件库支持, 可以直接在现有的深度学习框架上运行, 已经被广泛地研究. 在结构化剪枝方法中, 研究人员通常采用一些剪枝策略对已经训练好的模型(比如可以从Caffe Model Zoo, Torch Model Zoo等深度学习模型库中获得)进行剪枝, 然后为了恢复模型性能, 常常利用带有标签的数据微调(fine-tuning)剪枝后的模型(图1).这是因为预训练+剪枝+微调的方法通常没有充分挖掘预训练模型的特征表达能力, 主要表现为多数方法仅仅利用预训练模型的参数, 而基准模型自身的特征表达能力没有被考虑(比如预训练模型的类别预测信息、中间层特征表示信息), 因此在微调过程中需要有标签的数据进行监督. 另外, 对网络进行结构化稀疏过程中, 不同的压缩子网络输出类别标签信息会有一定的差异, 这些信息对网络的训练也有一定的好处.
针对上述存在的问题, 本文提出了一种基于模型特征学习增强的动态卷积神经网络剪枝方法. 在模型训练过程中, 本文利用基准模型的特征表达信息和多个压缩子网络之间的类别信息完成整个模型压缩任务, 不需要任何数据标签信息监督, 具体框架见图2. 本文的贡献可以归纳如下.
(1) 提出一种无标签模型特征学习增强的训练方式, 并将其应用到了模型压缩任务中.
(2) 使用一种动态的结构化稀疏正则方式, 可以动态地确定不同层的稀疏分配率. 模型训练结束后, 本文提出的方法直接移除冗余的参数, 剪枝后的模型不需要微调.
(3) 在多个网络结构和数据集下, 本文提出的方法均获得了很好的性能. 在CIFAR-10数据集下, 该方法可以减少VGG-Small模型93%的参数量和70%的计算量, 精度甚至能够提升0.1%; 在精度几乎没有损失的前提下, 该方法可以减少ResNet56模型53.61%的参数量和60.33%的计算量; 对于轻量化结构设计的MobileNet v2, 该方法可以实现3倍的加速, 精度没有下降.
二、相关工作介绍
在模型剪枝方法中, 典型的剪枝框架包括三个阶段: 预训练、剪枝和微调. 首先, 模型剪枝前需要预训练好的模型; 一些方法直接从现有的深度学习模型库中获得已经训练好的模型; 而另外一些方法[8]直接从头开始训练一个结构化稀疏的网络. 然后, 在剪枝阶段, 需要定义滤波器(通道)重要性评价方式以便移除不重要的参数, 比如滤波器权值的ℓ1范数大小、网络BN层缩放因子的大小、基于权重Taylor级数展开的评价方式、快速子网络的评价方式.最后, 为了获得更高的性能, 剪枝后的模型直接在带有标签的数据集下进行微调. 在上述剪枝过程中, 仅仅使用了预训练模型已经训练好的参数, 而模型本身具备的特征表达能力没有被充分挖掘. 此外, 一些方法探讨了剪枝后模型结构的重要性, 本文提出的方法采用动态稀疏的正则方式, 可以自适应地获得结构化稀疏的网络结构.
一些模型压缩方法利用了模型输出的类别信息和中间层特征信息, 然而仍需要带有标签的数据进行微调. Lin等人提出了一种基于生成对抗学习的网络剪枝方法, 该方法实现了无类别标签端到端的模型剪枝任务, 但是有时需要通过微调技术来获得更好的效果. 本文提出了一种不需要类别标签的模型压缩框架, 结构化稀疏的网络直接被学习出来, 剪枝后的模型不需要进行微调.
三、方法
本文利用基准模型输出的预测类别信息和中间层特征作为监督信息指导压缩子模型的任务学习; 同时不同压缩子模型的输出信息相互学习. 此外, 本文采
用一种端到端动态学习稀疏的模型压缩方法. 本文提出的方法详细步骤见算法1.
压缩模型学习基准模型特征信息
多个压缩模型输出信息互补学习
端到端动态学习稀疏的模型压缩框架
总的训练损失函数
式中, λ1, λ2, λ3和λs分别用来调节不同损失函数的权重.
优化
基准模型与压缩模型初始化
与ThiNet[6]和GAL[15]方法一样, 压缩模型网络结构和参数来自于基准模型, 如图3所示, 基准模型使用预训练的参数和网络结构复制出N个压缩模型.
优化过程
本文提出的模型压缩框架包括基准模型和N个压缩模型. 其中只有压缩模型参数需要更新. 为了后续分析方便, 本文将损失函数L前三项统一为模型特征学习的损失函数, 记为LM, 那么总的损失函数可以重新表示为
四、实验与分析
本节首先介绍了实验设置, 包括数据集、网络模型、部署详情、参数设置、评测指标和对比的主流方法; 然后, 在不同数据集和网络上对提出的方法与主流
的方法进行了对比; 最后, 对提出的方法进行了分析与讨论.
实验设置
与主流方法比较
分析与讨论
总结
本文提出了一种基于模型特征学习增强的动态剪枝方法, 在训练过程中, 提出的方法不需要数据集类别标签. 为了充分利用基准模型的特征, 本文使用基准模型的输出信息和中间层特征信息指导压缩模型的学习, 同时使用压缩模型之间输出类别信息相互学习. 此外, 本文使用一种动态的结构化稀疏正则方式, 可以自
适应地获得结构化稀疏的网络结构. 模型训练结束后,提出的方法直接移除冗余的参数, 剪枝后的模型不需要微调. 大量的实验结果验证了本文所提出的方法可
以显著地提升模型压缩率, 并取得了很好的精度.