本系列文章介绍一种最近比较火的设计网络的思想,即利用网络的重参数化(意义在于训练时间模型有一组参数,而推理时间模型有另一组参数),把多层合成一层,进行网络加速。
本文介绍的ResRep: Lossless CNN Pruning via Decoupling Remembering and Forgetting是将参数重组应用在剪枝的一篇论文,提出了一种新的无损通道修剪方法。
在传统剪枝方法,conv参数同时涉及“记忆”(目标函数)和“遗忘”(惩罚损失),以实现两者的权衡。也就是说,传统的方法强迫每一个渠道“忘记”,并删除“忘记最多”的渠道。
作者提出,将传统范式中耦合的“记忆”和“遗忘”解耦,首先将原始模型重新参数化为“记忆部分”和“遗忘部分”,然后将“记忆学习”(即常规SGD与原始目标)应用于前者以维持“记忆”(原始表现),将“遗忘学习”应用于后者以“遗忘”(清除通道)。
ResRep包含两个关键组件:卷积重新参数化(Rep,解耦方法和相应的等价转换)和梯度重置(Res,用于“遗忘”的更新规则)。
具体地说,我们希望在修剪的原始转换层之后插入压缩器1×1conv。在训练过程中,只对压缩器添加惩罚梯度,选择一些压缩器通道,并将它们从目标函数中得到的梯度归零。这样的训练过程使压实机的一些通道非常接近于零,这些通道被删除时没有修剪造成的损坏。
通过一些线性变换,将卷积-BN-压缩器序列等效地转换为单个转换器:
- 将卷积-BN等效地融合为带偏差的卷积,参数为(Kˉ,bˉ)(\bar{K},\bar{b})(Kˉ,bˉ)。
- 将带偏差的卷积-压缩器融合为新的带偏差的卷积(K′,b′)(K',b')(K′,b′)。
最终,生成的模型具有与原始模型相同的架构(即没有压缩器)但更窄的层。
由于从训练时间模型到剪枝模型的等价转换依赖于参数的等价转换,ResRep可以看作是Structural Re-parameterization的一个应用。
ResRep与传统的基于学习的剪枝的区别如下图所示。即,传统的剪枝范式对参数施加惩罚以产生稀疏性,这可能会抑制对存储至关重要的参数。而ResRep通过增加压缩器,将惩罚以掩码的形式施加在压缩器参数上,不会破坏原本的参数,从而实现了完美剪枝。