RePr: Improved Training of Convolutional Filters_CVPR2019

 

URL: https://arxiv.org/abs/1811.07275

TL;DR

卷积产生的特征中存在不必要的重叠导致网络冗余,因此现有的模型修剪方法可以修剪掉大量的卷积滤波器而几乎不影响模型的准确率。因此,作者认为这是传统训练方法不够完善导致的,于是提出了一种新的模型训练方法。

Method

这篇论文的两个贡献:
1)作者提出一种新的训练流程:
首先经过一定数量迭代的标准训练,然后选择模型的一个filter子集临时drop,继续在对剩余网络经过一段时间的额外训练之后,重新引入原先drop的filters,利用新的权重进行初始化,继续对整个模型进行标准训练。作者发现随着重新引入原先drop的fitlers,模型可以获得比drop之前更高的准确率。重复这个过程,可以获得比传统方法更好的训练效果。
2)在实验中发现filter修剪方法中使用的永久修剪指标并不适合本文所设计的训练方法,于是提出了一种新的替代指标,可以较好地提高模型的表现。

作者发现,即使很小的、参数不足的模型,也会学习到冗余的卷积核,这表明滤波器冗余不仅仅是模型过参数化的结果,同时也和低效的训练方式有关。于是这篇论文的目标是减少滤波器的冗余,提高卷积网络的表达能力。
如果一个模型的特征之间是相互正交的,它们会在激活值空间上捕获不同的方向,带来更优的泛化能力. 因此可以通过分析跨层特征之间的相关性来计算出最具表现力滤波器并把它们聚类到不同的组中,只是这种方法的缺点是对于实际应用中所用的较深网络,方法的计算复杂度过高。我们的方法利用drop filters的方式充当隐式正则化,并且在不妨碍模型收敛的情况下导致模型更好的正交性。

为了测试标准训练过程的效果,作者构造了一个简单的只包含两层卷积层的网络,做了如下两个实验:
1)通过移除每一个filter后模型的准确度下降程度来评估各个filter的重要性,得到统计结果如图2(右)所示。证明了即使是小型、未过参数化的网络也可以修剪filters,且不会带来较大的精度损失,即也存在冗余,进一步来证明冗余由低效的训练过程导致。(但笔者觉得作者此处的结论不够严谨,单独修剪一个filters已经能带来1%-5%损失,同时修剪多个则损失更大)
2)同时这篇文章采用典型相关分析(CCA)来分析特征之间的重叠,作者分析了每层网络所产生的特征图之间的相关性,如图2(左)所示。表明两层网络所产生的特征图均存在显著相关,且第二层特征图有着比第一层更多的重叠。表明标准的训练过程并没有最大化模型的表示能力。

另外,作者定义了新的filter评价指标,对每一层的各个filter重要性进行排序。作者将每一层的weights展开成一个二维矩阵,每一行是该层每个filters权重的一维展开。然后定义了每一个filter的正交性度量标准如下:

P的非对角线元素表示用filter f表示其他filter的投影,当其他filters均与该filter正交时,该行元素最小之和最小。本文根据这个行元素和来对各个filter的重要性进行排序。同时为了避免搜索每一层的修剪量这一超参数,作者对整个网络的filter重要性进行统一排序。最终实验发现,越深的层filter修剪量越高,这与图2(右)中给定网络中filters的贡献分布一致。

于是,所提出的Repr训练流程如下:

Experiments

作者首先将所设计的训练流程和相似的方法如BAN和DSD进行了比较:

然后,在cifar10和cifar100上对多类模型进行了训练:

接着在imagenet和VQAv1上做了实验:

 

Thoughts

这篇文章作者研究了很多现有的各种模型修剪论文,发现了网络中存在冗余是由标准训练方法的低效性导致的,于是便从这个角度出发,利用模型压缩的思想来优化传统的训练方法,提出了一种效果更好的训练方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章