本文共 6302 字,大约阅读时间需要 21 分钟。
今天为大家带来的论文导读是由布兰迪斯大学和微软亚洲研究院所提出的RePr——专为卷积神经网络所设计的训练方法。该方法通过对滤波器的重要性进行排序,对网络进行修剪,并迭代训练完整网络和子网络,提升网络表现和泛化能力。作者设计了充分的ablation study和跨任务网络实验,证明了该训练方法的有效性。这篇论文已被CVPR2019接收为oral。本文是AI前线第73篇论文导读。
一个训练良好的卷积神经网络可以很容易地进行网络修剪,而不会有明显的性能损失。这是因为网络滤波器捕捉的特征之间有不必要的重叠。跳跃连接、密集连接,以及Inception单元等网络结构上的创新都在一定程度上减轻了这个问题,但是这些改进往往伴随着运行时计算和内存需求的增加。我们试图从另一个角度来解决这个问题——不再是通过改变网络的结构,而是通过改变训练方法。通过暂时修剪,然后恢复模型的滤波器子集,并循环重复此过程,可以减少学习特征的重叠,从而提升泛化能力。我们发现,现有的模型修剪标准并不是最佳的,因此我们引入滤波器间正交性作为排序标准,来确定表示能力较弱的滤波器。我们的方法既适用于最简单的卷积网络,也适用于当前复杂的网络结构,提高了网络在各项任务上的性能。
卷积神经网络(ConvNet)在许多计算机视觉任务中达到了最先进的水平,其成功的主要原因是由于针对特定任务对网络结构进行了改进。尽管新的网络结构层出不穷,多种多样,但是核心的优化方法依然没有改变。目前的优化方法将网络权重看作单独的个体,然后进行独立更新。卷积神经网络的滤波器是其基础单元,但一个滤波器并不是一个单独的权重参数,而是由一组空间滤波器核组成的。
由于卷积神经网络模型往往过度参数化(over-parameterized),一个训练好的模型滤波器通常是冗余的。因此大部分修剪滤波器的方法都能去掉大量滤波器,而不损失模型的表现。但是对于小型模型,从头开始训练的表现也比不过一个大型网络修剪到和它一样大小的表现。标准的训练过程倾向于让模型有额外的和可修剪的滤波器。这也意味着卷积神经网络的训练还有提升的空间。
为此,我们提出了一种训练方案,在该方案中,在经过标准训练的迭代之后,我们选择一部分滤波器的子集暂时丢弃。在对修剪后网络进行额外训练之后,我们重新引入先前丢弃的滤波器,用新的权重初始化,并继续标准训练。我们观察发现,在重新引入丢弃的滤波器之后,该模型能够达到比修剪之前更高的性能。如图1,重复这一过程所获得的模型,其表现超过了由标准训练产生的模型。我们发现这一提升适用于多种任务和多种卷积神经网络。
除了所提出的新的训练方法,该论文的第二个贡献在于提出了衡量滤波器重要性的指标。我们发现即使是参数化不足(under-parameterized)的网络也会出现学习参数冗余的情况,说明滤波器冗余并不只是由于过度参数化,而是由于训练过程低效所导致的。我们的目标是减少滤波器的冗余性,增加卷积网络的表示能力,而我们通过改变训练方法而不是网络结构来实现这个目标。
实验表明,标准的滤波器修剪方法并不能达到最优的效果,我们提出了一种替代的指标,计算效率较高,并且极大的提升了网络表现。我们基于卷积层内的滤波器正交性提出了一个滤波器丢弃指标Ortho,该指标的效果超过了目前最先进的滤波器重要性排序算法。
如果一个特征能帮助提升模型的泛化能力,则该特征是有用的。特征之间的相关性与网络的泛化能力和稳定性都密切相关。对于一个泛化能力较差的模型,其特征在响应空间只能捕捉到有限的方向,即特征相关性较高。另一方面,如果特征之间互相正交,这说明他们分别学习到了响应空间的不同方向,则提高了模型的泛化能力。除了表现性能和泛化能力的提升,权重正交还能够提升网络训练的稳定性。为了降低特征之间的相关性,人们提出过多种方法。可以通过分析不同层特征的相关性,然后将特征进行聚类。或者在损失函数中加入正则项,最小化特征的协方差。但这些方法或计算复杂度高,或效果提升一般。在RNN中常采用正交初始化,但是该方法并不适用于卷积神经网络。因此,我们的动机是增强CNN特征正交性,并且基于此形成滤波器排序指标。
由于直接计算特征的正交性需要跨训练集,所以我们通过计算滤波器的权重来代替。我们使用Canonica相关性分析(CCA)来研究特征在单层内的重叠。研究人员发现大部分卷积神经网络结构学习到的都是相似的特征。增加模型深度并不一定能增加模型的维度,因为不同层学习的特征也是相关的。但我们关注的是在同一卷积层内不同滤波器特征的相关性。在过度参数化的网络中,例如VGG16,好几层卷积层都含有多达512个滤波器,而这些滤波器的特征都是高度相关的。因此VGG16是很容易修剪的网络——超过50%的滤波器都可以被丢弃,而不改变网络的表现性能。那么对于很小的卷积网络这一点还成立吗?
我们考虑一个简单的网络,只有两层卷积层,每层32个滤波器,网络最后有一个softmax层。我们在CIFAR-10数据库上训练100个epoch,采用学习率衰减,测试准确率仅为58.2%,远远低于VGG-16所达到的93.5%。对于VGG16来说,我们可能会觉得滤波器之间的相关性只是模型过度参数化导致的假象,因为数据集的维度根本就不需要每个特征都达到相互正交。但是,小型网络明显没有捕捉到训练数据的全部特征空间,因此滤波器之间的相关性均是由于低效的训练所导致的,而不是过参数化导致的。
给定一个模型,我们可以通过移除某个滤波器,然后计算准确率的下降情况来评估该滤波器对模型的贡献,即该滤波器的重要性。我们将这种评价滤波器重要性的标准称为“greedy Oracle”。我们可视化了每个滤波器的对模型性能的影响,如图2(右)。
从图中可以看出,Layer2的大部分滤波器对网络性能的影响不足1%。而Layer1中,部分滤波器对准确率的影响达到了4%,但是大部分依然处于1%。这意味着即使是参数不足的网络也会出现冗余权重,也可以进行滤波器修剪而不影响模型的整体表现。说明模型没有有效的分配滤波器去捕捉必要特征的广泛表示。图2左给出了滤波器特征线性组合的相关性。很明显这两层滤波器之间都存在很高的相关性,有的几乎达到了完全相关(亮黄色)。第二层(右上三角)的特征重叠率比第一层(左下三角)更高。充分说明了卷积滤波器的标准训练程序不能最大化网络的表示能力。
我们提出了新的训练算法RePr:首先训练完整网络,然后移除冗余滤波器,形成子网络,再训练子网络,随后将丢弃的滤波器重新初始化,再补充回网络,重复该过程,完整网络和子网络迭代训练。算法中最重要的部分是用于对滤波器进行排序的指标:层内滤波器正交性(Ortho)。
该算法可以概括为:重新初始化(Re-initializing)和修剪(Pruning)。训练算法如下:
卷积网络一层的多个卷积核可以用一个矩阵表示。一个大小为k x k的滤波器核,可以视为一个形状为k x k x c的3D张量(tensor)。将这个张量平铺成一个1D矢量f。Wl为一个矩阵,其中每一行分别为网络第l层平铺的滤波器矢量f。Jl表示在第l层滤波器的数量。
先对矩阵进行归一化得到
然后计算滤波器f在l层内的正交性:
其中矩阵Pl是一个大小为Jl x Jl的矩阵,第i行表示l层内其他滤波器对第i个滤波器的投影。当其他滤波器与该滤波器均正交时,该行的数值之和最小。因此可以通过每行的数值之和对滤波器的重要性进行排序。这个指标的计算是在一层内完成的,但是排序是对所有层的滤波器进行的。目的是不引入过多的超参数,并且避免层与层之间的差异性。我们的方法在较深的层修剪的滤波器要多于较浅层的滤波器。这与滤波器的重要性在网络中的分布也相符(图2)。
我们提出的滤波器重要性排序指标Ortho能否替代greedy Oracle呢?我们通过衡量不同指标与greedy Oracle之间的相关性来回答这个问题。
不同指标值的相关性表示了该指标能否替代greedy Oracle,除此之外,更重要的是衡量滤波器排序结果的相关性。图3给出了不同指标与greedy Oracle的相关性图。图3右边的表格给出了不同评价指标在CIFAR-10上的测试准确率。
训练方法中很重要的一个参数是每个阶段修剪滤波器的比例。它与Dropout参数类似,影响模型的训练时间和泛化能力。总的来说修剪比例越高,模型表现越好,然而超过30%之后,效果提升不明显。到50%,模型就需要从丢弃滤波器中进行恢复。超过该数值后,训练不稳定,有时会出现无法收敛的情况。
实验发现,每重复一次RePr过程收益都会缩减,因此应该将迭代次数限制在个位数(如图4右)。
图5左给出了使用不同优化器模型准确率的方差。大部分常用的优化器都适用于我们的模型。
S1和S2分别表示训练完整网络和子网络的迭代次数。
由于SGD使用固定的学习率,通常不能使模型达到最佳表现。而学习率逐渐衰减是目前常用的方法,能够让模型的准确率更高。周期性学习率(Cyclical learning rate)给出了更好的效果。图6对比了我们的训练方法分别与固定学习率优化器和周期变化学习率结合的效果。我们的训练方法不会受到学习率变化的影响,与标准训练方法相比提升依然很明显。
我们的方法可以视为一种非随机的Dropout,专门适用于卷积网络。Dropout通过鼓励权重的共适应性来防止过拟合。这对于过度参数化的模型是有效的,但是对于紧凑的或浅层模型,Dropout或许会降低模型本就有限的表示能力。
图7给出了三层ConvNet在标准训练和RePr训练方法中,有Dropout和没有Dropout的情况对比。我们发现有Dropout和没有Dropout,我们的方法都提升了模型的表现,说明了我们算法的效果和Dropout是不同的。
增加滤波器的正交性作为损失函数的一部分不会影响模型的表现。损失函数可以表示为:
其中λ是平衡损失项的超参数。我们对λ不同值进行了实验,λ=0.01时验证准确率最高,表1给出了λ=0.01的实验结果。OL指的是增加正交性损失项。
RePr和知识蒸馏(Knowledge Distillation,KD)都是提升模型表现的方法。RePr减少滤波器表示之间的重叠,而KD从更大的网络中提取信息。我们对比了这两种方法,并发现二者可以结合,得到更好的效果。
RePr不断的修剪权重方向重叠最多的滤波器,因此我们希望修剪滤波器的数量随训练时间逐渐减少。图8(左)显示了三种不同训练方法下该数值的变化曲线。可以看出RePr训练方法+Ortho指标的模型滤波器正交性和最低。
图8(右)对比了加入KD之后三种训练方法的情况,我们发现所有模型的正交性和都增加了。但是RePr+Ortho方法依然在努力降低模型的正交性和,说明KD对模型的提升并不是由于减少了滤波器重叠。因此,使用这两种方法的模型泛化性更强。如表2所示。
我们对训练方法RePr,以及滤波器重要性排序标准Ortho进行了实验。表3对比了BAN和DSD两种方法。DSD和RePr(Weights)的作用相似:模型稀疏化,区别在于DSD作用于单独的权重,而RePr(Weights)作用于整体滤波器。而RePr(Ortho)的表现超过了其他方法,并且训练更简单。
与目前的网络相比,最简单的卷积网络在特征表示的分配上效率更低,因此我们发现RePr+Ortho在简单卷积网络上的提升比在更复杂网络上的提升更大。表4给出了在CIFAR-10和CIFAR-100数据集上的测试误差。
RePr训练方法将简单神经网络在CIFAR-10数据集上的表现提高了8%,在CIFAR-100数据集上的表现提高了25%。
对于其他使用类似卷积神经网络的计算机视觉任务,我们的方法也提升了模型的表现。我们以视觉问题回答和目标检测任务为例,这两个任务都需要使用卷积网络提取特征,而RePr算法提升了他们的基线结果。
视觉问题回答(VQA)是指给模型一张图片和一个关于图片的问题,然后模型需要回答该问题。解决这个问题所采用的模型大部分是采用标准ConvNet来提取图像特征,然后用LSTM网络提取文本特征。实验中提取图像特征的Inception-v1网络分别采用标准训练方法和RePr训练方法。
这篇论文提出了RePr训练方法,通过将表达力较差的滤波器进行修剪和再学习,提升模型的表现。由于卷积神经网络学习到的特征表示通常是低效的,作者进一步提出了滤波器间正交性标准,对滤波器的重要性进行排序,并应用在RePr的修剪步骤中。实验结果表明该训练方法能大幅提升参数不足(under-parameterized)的网络的表现,确保模型能力的有效分配。对于过参数化(over-parameterized)的网络结构,所提出的方法也能提升卷积网络在多个任务上的表现。
查看论文原文:
转载地址:http://sfzxx.baihongyu.com/