极市导读
训练中的一个关键因素是网络的正则化,它可以防止模型在训练的过程中出现过拟合的现象。本文分析了过去几年发展起来的几种正则化方法,显示了不同CNN模型的显著改进。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
一些图像处理任务,如图像分类和目标检测,已经通过使用卷积神经网络(CNN)性能得到了显著的改进。像ResNet和EfficientNet一样,许多架构在创建时已经在至少一个数据集上取得了出色的结果。训练中的一个关键因素是网络的正则化,它可以防止模型在训练的过程中出现过拟合的现象。这项工作分析了过去几年发展起来的几种正则化方法,显示了不同CNN模型的显著改进。这些工作分为3个主要领域:
第一:是“ 数据正则化”,其中所有的方法都专注于对于输入数据的更改 第二:是“ 结构正则化”,主要是修改神经网络或核函数生成特征映射的过程 最后:是“ 标签正则化”,主要是对给定输入的标签进行转换和修正
卷积神经网络已经在一些与计算机视觉相关的任务上取得了相当不错的结果,如图像分类和目标检测。这种成功可以用卷积神经元的工作原理来解释:它根据图像的空间属性来突出给定的特征。浅层网络注意是归纳一些形状或者纹理特征;然而,更深层次的网络可以检测出更复杂更抽象的特征,比如整个物体或人脸。如今,从生物识别到疾病检测,很难找到其他没有CNN的计算机视觉技术。
关于CNN的一个关键问题是如何对卷积核进行堆叠?以在给定的任务上实现最佳的结果。在几个不同的任务上使用相同的基本架构是很普遍的,只需要改变输出。例如,EfficientNet是一种用于图像分类的神经网络,它也被用于EfficientDet体系结构来处理目标检测任务。
该体系结构可能是计算机视觉模型的核心部分;然而,在开始训练之前还有其他相关的要点。例如,优化技术可能会影响最终的性能。即使是kernel的初始化方法都有可能会影响模型最终的性能。
本研究集中讨论在这些可能影响最终性能因素的一个方面:正则化。
根据所使用的正则化策略,一些架构可以在最终结果上获得相关的增益。使用良好的正则化方法的一个重要方面是,它不会影响最终模型的性能。这意味着,独立于使用或不使用一个正则化方法,模型的推理计算成本是相同的。然而,在某些情况下,它可以影响训练阶段的性能,使用少量的计算开销或训练周期。无论如何,产出的结果通常是可以补偿这一成本的。
CNN通常用于计算机视觉任务,如图像分类和目标检测,以创建像人类视觉一样强大的视觉模型。如果考虑到可用的信息数量,很明显,训练任务需要更多数据可变性。考虑到一个健康的大脑和眼睛正常的人,不考虑睡觉的时间,平均每天保留大约16个小时的新信息。
即使考虑到像ImageNet这样的巨大数据集,与人类大脑通过眼睛接收到的数据数量相比,可用的图像数量也是最小的。这种新数据的不可用性可能会导致一种称为过拟合的情况,即模型学习如何很好地表示训练数据,但它不能有效地处理新信息,即测试数据。这种情况通常发生在模型在可用的训练信息中进行了详尽的训练时,而它不能很好地扩展到其他新信息中。
作为一个人工神经网络,神经网络的训练步骤可以描述为一个优化问题,目标是训练得到一个合适的权值;假定给一个输入和损失函数,可以转换期望的信息输出最低可能的误差。实现这一目标的一种方法是最小化以下功能:
其中|. 为Frobenius norm, 为输入数据, 和 分别表示权重 矩阵和目标标签。Frobenius norm增加了 和 之间的相似性。
这种解释有一个主要优点:这个公式可以通过矩阵分解进行优化,产生X的结构化分解。然而,只有当W或 固定在优化两个矩阵时,将原始方程转换为非凸公式时,才能实现全局最小值。如果矩阵分解为矩阵近似,可以解决这个问题:
其中,目标是估计矩阵A,最终得到一个凸优化,这意味着它有一个全局最小值,通过梯度下降算法可以找到。当使用正则化时,这个方程变为:
其中, 描述了基于A的正则化函数,而 是设置正则化函数对目标函数的影响程度的标量因子。正则化方法的一个关键方面,独立于训练阶段的工作,是为了防止模型过拟合。它通过增加CNN不同阶段的数据的可变性来操作。当处理图像时,最直接的方法是随机改变图像,比如旋转和翻转。虽然这种类型的正则化工作得很好,但应该考虑到一些问题。例如,一些转换可能会将图像扭曲成分类中的另一个现有类。更直接的例子是MNIST数据集上的基线图像分类:如果旋转太多,输入“6”可能会转换为“9”,导致模型学习错误的信息。
机器学习中的一个普遍问题是调整给定模型的参数,使其对训练数据和新的数据能够有更好的鲁棒性。旨在减少不属于训练集的数据上的误差的算法的集合被称为正则化技术。
标准化和正则化技术的一个主要区别是,正则化在训练期后不再使用,而标准化保留在模型之中。例如,Cutout和MaxDropout在推理期间没有被执行,但是Batch Normalization在推理时需要执行。
尽管大多数作品都应用于输入,但也有很多研究致力于内部结构和标签层。图1描述了本次调查中科学工作的比例。
大约44%的工作依赖于对输入的正则,其中最著名的是数据增强策略。CNN输入中参数和结构的容易改变可以解释如此多的工作量。图像处理和计算机视觉驱动的应用程序在处理深度学习时仍然发挥着重要的作用。
第二种最常见的正则化方法是那些对模型的内部结构进行正则的方法。Dropout为这一研究领域的进展做出了很大的贡献。一些作品主要是基于Dropout进行的改进,当然其中也有一些是全新的方法。
第一个是标签不随输入或在神经网络的中层直观地改变。在这2个级别中执行变化是更自然的,因为在视觉上更容易理解在训练和推理过程中发生了什么。然而,要解释执行标签更改时会发生什么就比较困难了。尽管最初的研究认为它防止了过拟合问题,但它未能解释为什么会避免这种情况。
另一种解释是对大多数方法缺乏数学解释。幸运的是,一些技术,如Dropout和Mixup,对它们的内部机制提供了有趣的见解。
最后,最好要记住,开发机器学习领域最关键的步骤之一是创建标签可靠的数据集。虽然本文关注的是正则化策略,但值得记住,最终,与标签的组合方式上的突破可能会促进更强大的系统。因此,强调更多与标签正则化相关的工作值得研究。
Cutout是一种直接而强大的数据增强的技术。在训练过程中,它在输入神经网络之前随机去除图像的区域。Cutout作者详尽地分析了CIFAR-10和CIFAR-100数据集中被移除区域的理想大小。
理想的大小根据每个类的实例的数量和给定数据集的类的数量而变化。例如,在CIFAR-10数据集上的最佳结果是通过删除一个大小为16×16的patch来完成的,而对于CIFAR-100,关于最佳结果的区域大小是8×8。对于SVHN数据集,通过使用网格搜索找到了最佳的crop大小为20×20。对于STL-10数据集,最佳结果的crop大小为32×32。
RandomErasing是在Cutout技术的基础上进一步的发展。Cutout是对图像的随机裁剪,而RandomErasing关注的是在空白空间中去除并随机添加信息,例如噪声。与Cutout不同,RadomErasing并不是每次都删除图像的一部分。在这项工作中,作者在3种不同的分类数据集(CIFAR-10,CIFAR-100和Fashion-MNIST)上评估了该方法,用于目标检测的VOC2007数据集,以及用于ReID的三种不同的CNN架构(IDE, TriNet和SVDNet)。
对于分类任务,4种不同的架构被用于评估目的:ResNet、ResNet with pre-activation、Wide Residual Networks和ResNeXt。在所有情况下,RandomErasing方法完成了相关的误差减少(至少0.3%)。
对于目标检测任务,当只使用该数据集中的可用数据训练模型时,平均精度(mAP)提高了0.5,当训练数据与VOC2012训练数据集结合时,平均精度(mAP)提高了0.4。图4显示了随机擦除是如何工作的。
AutoAugment试图找出给定数据集上的哪些transformations可以提高模型的准确性。它使用5个不同的transformations为给定策略创建一个搜索空间,这些transformations由2个附加参数控制:给定更改概率(Cutout,SamplePairing,Shear X/Y,Translate X/Y,Rotate,AutoContrast,Invert,Equalize,Solarize,Posterize,Contrast,Color,Brightness以及Sharpness)和变化幅度。
然后将这些策略输入一个“child”模型,该模型是一个用部分训练数据集训练的CNN。这个CNN的准确性被告知一个“控制器”模型,它是一个循环神经网络(RNN)。这个RNN输出一个给定策略在未来被使用的概率。在控制器训练过程的最后,使用5个最佳策略(每个策略有5个子策略)来训练最终的模型,用于评估数据集。使用这些生成的策略和子策略使得AutoAugment在CIFAR-10、CIFAR-100、SVHN和ImageNet数据集上达到了最先进的结果。
这种方法的一个巨大优势是这些策略在不同数据集之间的可迁移性:在最初的工作中,为ImageNet找到的策略被用来训练其他5个不同的数据集,即使没有在这些数据集上训练AutoAugment,也能显著改善结果。这种方法的一个缺点是用来训练控制器模型的时间:例如,对于ImageNet数据集,它需要大约15000个小时的处理,这在一些情况下可能是不切实际的。Fast AutoAugment的目标就是通过一种新的算法来克服这一瓶颈,在产生相似结果的同时,显著减少搜索过程所需的时间。
Population Based Augmentation(PBA)不仅展示了一种新的增强算法,而且展示了调度策略而不是固定策略,改进了以往研究的结果。
在每3步中,它改变了一半的策略,即1/4的权重变化,另外1/4的超参数变化。虽然自动增强意味着在CIFAR-10数据集上的训练开销为5000个小时,但PBA只增加了5个小时。
如前所述,寻找最佳数据增强的方法的一个巨大瓶颈涉及到它们的计算负担,因为它可能比自己的神经网络训练需要更长的时间。另一个问题与在搜索过程中发现的策略有关,这可能会导致次优策略,即它确实改善了局部的结果;然而,它并不会带来最好的全局结果,因为它使用了一个较浅的神经网络,并假设这个规则可以应用于任何其他的,更深的架构。
RandAugment使用了在之前的工作中发现的14个最常见的策略,并在训练期间对每个策略的大小进行搜索,从而消除了初步探索步骤的需要,并根据当前的训练CNN定制数据放大。结果表明,该方法不仅比以往的方法更快,而且显著改善了结果。
训练CNN的一种可能性是,Mixup来自训练数据集中的2幅图像,并迫使模型可靠地确定这种Mixup图像属于哪一类。然而,如何为这种Mixup生成编码标签并不普遍。提供这个新的输入/输出训练对可以让模型从损坏的输入中学习更多的特征。最初的工作表明,使用这种方法的模型不仅可以改善图像分类任务的结果,而且可以改善语音识别、生成对抗网络的稳定、表格数据集等问题的结果。图5演示了Mixup的工作原理。
另一种混合输入和标签以改善结果的策略是CutMix。与Mixup不同,CutMix会替换给定输入中的整个区域,并通过给予与每个类使用的区域相同的权重来更改标签。例如,如果一只猫的图像被30%的图像替换为一个飞机的图像,则该标签被设置为70%的猫和30%的飞机。这一策略的结果有了显著的改善。通过使用绘制Grad-CAM可以观察到生成的Heatmap更好地突出了更准确地定义感兴趣目标的区域。
一些针对图像处理的深度学习任务,如图像分类或目标检测,可以通过使用数据增强来提升模型性能。一些工作,如AutoAugment、Cutout和RandomErasing可以通过对训练图像应用一些transformations来显著改善结果。然而,对于超分辨率(SR)任务,文献中缺乏提出正则化技术来明确地处理这个问题的工作。
尽管可以使用上述技术并可能改善结果,但它们并不是通过手工设计来处理SR问题的。到目前为止,唯一发现的方法是CutBlur,它的工作原理是用来自类似区域的低分辨率(LR)版本替换高分辨率图像(HR)上的给定区域。作者表明,CutBlur有助于模型在SR问题上更好的推广,但同样的技术可以用于重建被高斯噪声退化的图像。
训练cnn的一个重要超参数与mini-batch size有关,mini-batch size用于计算反向传播中使用的梯度。该超参数通常采用GPU的上限,这对于提高训练收敛速度至关重要。BatchAugment工作巧妙地利用了这个限制。它不只是使用来自数据集的不同实例来满足整个内存,而是使用默认的数据扩展设置来考虑内存限制的一半,然后复制具有不同数据扩展可能性的所有实例。这听起来像是一个简单的技巧;然而,结果表明,使用这种方法的神经网络在最终结果上有显著的改善。另一点是,通过复制增强图像,分析表明需要更少的时间点来实现收敛。
图像分辨率可能会影响训练周期效率和最终的分类精度。例如,对EfficientNet的研究通过将输入大小作为影响最终结果的参数之一,从而强调了这一想法。然而,如果一个模型被训练,例如,分辨率为224×224,测试集的推理应该使用一样的图像分辨率。
FixRes提出的工作强调了测试集的分辨率应该高于用于训练的分辨率。这种变化不仅产生了一个更可靠的神经网络,而且比传统方法训练得更快,因为它需要更少的计算量,因为用于这种目的的图像比用于推理的图像要小。该方法表明,在使用迁移学习时,它可以改善在其他数据集上的结果。
这里分析的工作的一个关键点是,它们经常没有将任何其他正则化方法与它们当前的研究结合起来。因此,很难知道两个正则化器是如何相互影响的。Bag-of-Tricks研究通过结合几种已知的正则化方法,如Mixup、Label Smoothing和Knowledge Destilation。消融研究表明,如果应用一定的方法,最终结果可以显著改善。例如,使用这种方法组合的MobileNet在ImageNet数据集中提高了近1.5%的结果,这是一个显著的收益。然而,该研究缺乏对层间正则化方法的深入评价,如Dropout。
正则化方法可以以不同的方式工作。在本文中,将结构正则化定义为在训练过程中改变权值而不改变输入kernel值的方法。本节分为两个主要部分:第一部分介绍了Dropout如何工作和它的一些变体的更深入的描述,如SpatialDropout和DropBlock。在第二部分中,描述了其他旨在执行其他张量操作的方法,如Shake-shake Regularization。
Dropout被认为是一种简单但功能强大的正则化器,旨在去除一些神经元,从而迫使整个系统学习更多的特征。最初的工作表明,它不仅可以应用于cnn,还可以应用于多层感知器(MLPs)和受限玻尔兹曼机(rbm)。
在训练阶段的每一步,通过伯努利分布来估计每个神经元的dropping out概率,从而在训练过程中增加了一些随机性。最初的研究表明,被dropping out的神经网络可以比标准的神经网络更好地进行推广。
Dropout随机去除训练阶段的神经元,Maxdropout则根据神经元的激活情况去激活神经元。它首先将张量s值归一化,然后将每一个大于给定阈值p的输出设置为0,因此这个值越高,它就越有可能被禁用。
最初的工作表明,它可以改进在CIFAR-10和CIFAR-100数据集上的ResNet18结果,而且它在WideResNet-28-10模型上的性能也优于Dropout。
DropBlock表明,去除给定张量(即特征图)的整个区域可以帮助模型更好地泛化。通过使用ResNet-50和AmoebaNet-B模型对图像进行分类任务,使用retinanet模型对物体进行检测,使用ResNet-101模型对图像进行分割,结果表明该模型比Dropout等内部正则化算法对结果有更好的改善。
DropBlock应用在CNN的每个feature map上,从一个小的比例开始训练,然后慢慢的增加它的值。它的实验显示了ImageNet数据集上的相关结果,当使用ResNet-50时,Baseline精度提高了近2%,打败了其他正则化方法,如Cutout和AutoAugment,使用AmoebaNetB时,基线精度提高了约0.3%。在目标检测任务中,retavanet模型在AP度量上改进了1.5%以上。
注意机制可以被整合到一个给定的正则化器中,这样它就可以在适当的区域发挥作用。例如,TargetDrop将这种机制与DropBlock结合在一起。在训练过程中,它允许整个系统去除给定通道上的大多数有区别的区域。结果表明,这种方法不仅比DropBlock获得了更好的结果,而且,通过使用grade-cam,在决定给定输入属于哪个类的区域中显示了更多的一致性。
虽然有效,但Dropout缺乏选择掉哪个神经元的空间信息。DropBlock的策略是将整个随机区域放在隐藏层上,而不是单一的神经元,从而迫使CNN学习更好的空间信息。然而,Drop方法是手动设计和固定的,如果这些模式可以在训练中学习,这可能会得到改进。
AutoDrop迫使CNN根据训练信息学习最佳设计,使用控制器逐层学习最佳滴模式。CIFAR-10和ImageNet的结果表明,这些模式改善了结果,并可以在数据集之间传输。
Rademacher复杂性被用来重新定义Dropout和DropBlock。通过对该问题进行广泛的数学分析,提出了一种新的两阶段正则化算法。该方法虽然耗时,但针对图像分类的不同CNN架构取得了相应的改进。CIFAR-10的结果表明,LocalDrop方法至少可以改善结果0.15%,比最佳结果提高了近0.6%。CIFAR-100的结果改善了0.4%;然而,在这种特定的情况下,在反向传播时删除权重的变化最终会得到略微更好的结果,提高了0.5%。除了改进之外,该方法只适用于3分支ResNet,很难直接比较其他方法。
在这些体系结构上强制正则化的一种方法是在训练期间为残差连接的每个分支赋予不同的权重。最初的ResNets的工作原理是在每个分支上添加权重,没有任何区别。在训练过程中,Shake-shake作用于3个分支的ResNets,在前传时改变每个分支的乘因子,在后传时乘以不同的值,从而改变每个分支对最终结果的影响。对于推理,它将每个分支乘以0.5倍。
解决Shake-shake问题的一个改进是ShakeDrop。它不仅适用于ResNeXt架构,也适用于ResNet、Wide ResNet和PyramidNet。为了实现这样的结果,ShakeDrop改变了由Shake-shake提出的配置。这些分支上的Shake组合显示,ShakeDrop有更好的性能,不会被困在局部极小值上。结果表明,该方法可以比前面提到的每一种体系结构获得的原始结果更好。
神经网络通常被概括为一个函数,给定输入数据和一组可学习参数,输出相应的目标值。Manifold Mixup的作用类似于Mixup,然而,它在CNN的任何内部层中运行,而不仅仅是在输入层。深度神经网络可以被认为是一组较小的神经网络,每一个都输出一些期望的特征;因此,如果所有的子网都运行良好,则可以认为最终的结果是良好的。
Yang等提出了一种新的损失函数设计策略:首先通过前馈过程计算传统的小批量损失。然后,它从原始网络生成子网络,然后通过使用不同的图像变换提供相同的小批处理,为每个模型计算一个损失。最后,将传统损失与各个子网络的损失相加,计算出最终损失。该技术在不同的数据集和CNN架构中显示了巨大的潜力改进。
在过去的几年里,残差连接的使用,首先在众所周知的神经架构ResNet中引入,并对其进行了进一步的改进,在几个任务上取得了相关的成果。后来的研究表明,这种成功是由于创建了一种名为“identity mapping”的结构,它是对原始输入的重建。残差连接迫使模型学习如何构造这些结构。
有方法使用Label Smoothing作为其正则化策略的一部分。例如,Mixup根据2个不同图像之间的插值来平均标签的值。同样的规则也适用于Manifold Mixup技术;然而,数据插值是在层之间计算的,并使用相同的微积分来重置标签值。
另一个使用标签转换的正则化器是Cutblur。在本例中,使用了反式格式,在训练期间,可以将标签与输入倒置,使输入作为标签,模型将按照预期收敛。这一预期结果的原因是由于低分辨率和高分辨率图像的切割尺寸,这是没有预先定义的。这意味着输入可以是高分辨率图像中的低分辨率图像,标签可以是高分辨率图像中的低分辨率图像。因此,将标签和输入倒排仍然是有意义的。
其他方法也可以通过使用Manifold Mixup来改进它们的结果。例如,Cutout从输入中删除部分,所以根据crop size“remove”部分标签也是有意义的。假设crop size是图像的25%,因此活动类可以从1下降到0.75。同样的策略也适用于RandomErasing。在训练过程中丢弃神经元的方法,如Dropout,可以在训练过程中将热标签的值降低到相同的范围。
在一般的分类任务中,使用热编码标签是普遍存在的。从2015年开始,Label Smoothing提出了一种在标签编码过程中的正则化技术,通过修改hone-hot表示的每个位置上的值。
Label Smoothing的工作原理是防止了2个主要问题。
根据作者论述,通过使用编码标签上的平滑因子,应用在向量上的Softmax函数产生更接近平滑编码向量的值,限制了反向传播算法中使用的值,并根据类产生更真实的值。
使用标签平滑的一个困难是找出ϵ的什么值(即平滑因子)是理想的,无论是对于一般的还是对于特定的数据集。最初的工作表明,ϵ=0.1是极好的条件;然而,两阶段标签平滑(TSLA)表明,一般来说,梯度下降结合Label Smoothing技术只能提高结果,直到一定的训练点,之后最好将活动类的所有值设置为0和1。例如,当在CIFAR-100数据集中对ResNet18进行200个Epoch的训练时,结果表明,当使用Label Smoothing时仅仅到160个Epoch便可以获得最好的性能。
通常,很难为Label Smoothing因子定义适当的值。结构标签平滑(SLS)提出通过估计贝叶斯估计误差来计算这样的值,根据作者,这有助于定义每个实例的标签边界。实验表明,该方法在不同场合都可以克服传统的标签平滑方法。
虽然这项工作在MobileNetV2上得到了充分的评估,但它没有考虑到其他的神经网络架构。尽管一些流行的数据集被用于比较目的,例如,CIFAR和SVHN,但这项工作仅限于MobileNet-V2。
本文提出了一种避免噪声标签对神经网络的影响的新方法。JoCoR在同一数据集上训练2个相似的神经网络,并试图关联2个不同的标签。该方法通过将2个网络的交叉熵损失加上它们之间的对比损失来计算损失,然后只使用批处理上最可忽略的损失来更新架构的参数。
作者认为,通过使用最小的值来更新参数,这2种网络都与预测结果一致,而且标签的噪声往往更小。虽然该方法是针对弱监督问题开发的,但它可以很容易地适应传统的监督问题,如数据分类,以改善结果。这种方法的缺点是使用2个神经网络进行训练,这需要更多的处理和内存。
[1].Avoiding Overfitting: A Survey on Regularization Methods for Convolutional Neural Networks
公众号后台回复“数据集”获取50+深度学习数据集下载~
# CV技术社群邀请函 #
备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)
即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群
每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~