清华大学&旷世科技
Lossless CNN Channel Pruning via Decoupling Remembering and Forgetting
paper:https://arxiv.org/pdf/2007.03260v3.pdf
code:https://hub.fastgit.org/DingXiaoH/ResRep
摘要
提出了一种新的无损通道修剪(又称滤波器修剪)方法ResRep,其目的是通过减小卷积层的宽度(输出通道数)来精简卷积神经网络(CNN)。受关于记忆和遗忘依赖性的神经生物学研究的启发,论文建议将CNN参数化为记忆部分和获取部分,前者学习保持性能,后者学习效率。通过在前者上使用规则SGD训练参数化模型,而在后者上使用带有惩罚梯度的新更新规则,我们实现了结构化稀疏性,能够等效地将重新参数化的模型转换为具有更窄层的原始架构。这种方法不同于传统的基于学习的剪枝范式,传统的剪枝范式对参数施加惩罚以产生结构化稀疏性,这可能会抑制记忆所必需的参数。该方法将ImageNet上具有76.15%准确度的标准ResNet-50精简为仅具有45%浮点且无准确度Hydrop的较窄的ResNet-50,这是第一个以如此高的压缩比实现无损修剪的方法。
论文背景
大多数静态通道修剪方法可分为两类。
(1)修剪-微调方法:通过一些测量从训练有素的模型中识别和修剪不重要的通道,这可能会导致显著的精度下降,然后进行微调以恢复性能。一些方法测量特征重要性并逐步修剪,这可以看作是重复的修剪-微调迭代。然而,一个主要缺点是修剪后的模型很难微调,并且最终的精度无法保证。这些方法剪后的模型很容易陷入糟糕的局部极小值,有时甚至无法与从头开始训练的相同结构的对应模型达到类似的精度水平。于是ResRep诞生了,其消除了微调的需要。像ResRep中的剪枝操作是训练参数的数学等价转换,它不会导致性能下降,因此不需要微调。
(2)基于学习的修剪方法:利用定制的学习过程来减少修剪造成的精度损失。除了以上提到的基于惩罚的范式之外,要将一些惩罚归零在这些通道中,其他一些方法通过元学习、对抗学习等进行修剪。与这些复杂的方法相比,ResRep可以易于端到端部署和训练。
论文主要思想
ResRep利用卷积之间具有线性变化的原理,通过在原始卷积后面加上一个1x1的卷积,将原CNN等价拆分成负责“记忆”(初始化1x1卷积参数为单位矩阵,保持原始精度不变)的部分和负责“遗忘”(去掉某些通道)的部分,前者进行“记忆训练”(不改变原目标函数、不改变训练超参、不改变更新规则),后者进行“遗忘训练”(一种基于SGD的魔改更新规则,即Res),取得更好