超级干货 | 用万字文章总结25种正则化方法(值得收藏)(二)

简介: 超级干货 | 用万字文章总结25种正则化方法(值得收藏)(二)

3结构正规化


正则化方法可以以不同的方式工作。在本文中,将结构正则化定义为在训练过程中改变权值而不改变输入kernel值的方法。本节分为两个主要部分:第一部分介绍了Dropout如何工作和它的一些变体的更深入的描述,如SpatialDropout和DropBlock。在第二部分中,描述了其他旨在执行其他张量操作的方法,如Shake-shake Regularization。

4.1 Dropout and variants

Dropout被认为是一种简单但功能强大的正则化器,旨在去除一些神经元,从而迫使整个系统学习更多的特征。最初的工作表明,它不仅可以应用于cnn,还可以应用于多层感知器(MLPs)和受限玻尔兹曼机(rbm)。

图9 Dropout

在训练阶段的每一步,通过伯努利分布来估计每个神经元的dropping out概率,从而在训练过程中增加了一些随机性。最初的研究表明,被dropping out的神经网络可以比标准的神经网络更好地进行推广。

4.2 MaxDropout

Dropout随机去除训练阶段的神经元,Maxdropout则根据神经元的激活情况去激活神经元。它首先将张量s值归一化,然后将每一个大于给定阈值p的输出设置为0,因此这个值越高,它就越有可能被禁用。

image.png

图10 MaxDropOut

最初的工作表明,它可以改进在CIFAR-10和CIFAR-100数据集上的ResNet18结果,而且它在WideResNet-28-10模型上的性能也优于Dropout。

4.3 DropBlock

DropBlock表明,去除给定张量(即特征图)的整个区域可以帮助模型更好地泛化。通过使用ResNet-50和AmoebaNet-B模型对图像进行分类任务,使用retinanet模型对物体进行检测,使用ResNet-101模型对图像进行分割,结果表明该模型比Dropout等内部正则化算法对结果有更好的改善。

image.png

图11 DropBlock

DropBlock应用在CNN的每个feature map上,从一个小的比例开始训练,然后慢慢的增加它的值。它的实验显示了ImageNet数据集上的相关结果,当使用ResNet-50时,Baseline精度提高了近2%,打败了其他正则化方法,如Cutout和AutoAugment,使用AmoebaNetB时,基线精度提高了约0.3%。在目标检测任务中,retavanet模型在AP度量上改进了1.5%以上。

4.4 TargetDrop

注意机制可以被整合到一个给定的正则化器中,这样它就可以在适当的区域发挥作用。例如,TargetDrop将这种机制与DropBlock结合在一起。在训练过程中,它允许整个系统去除给定通道上的大多数有区别的区域。结果表明,这种方法不仅比DropBlock获得了更好的结果,而且,通过使用grade-cam,在决定给定输入属于哪个类的区域中显示了更多的一致性。

image.png

图12 Dropout,DropBlock,TargetDrop

4.5 AutoDrop

虽然有效,但Dropout缺乏选择掉哪个神经元的空间信息。DropBlock的策略是将整个随机区域放在隐藏层上,而不是单一的神经元,从而迫使CNN学习更好的空间信息。然而,Drop方法是手动设计和固定的,如果这些模式可以在训练中学习,这可能会得到改进。

image.png

图13 AutoDrop

AutoDrop迫使CNN根据训练信息学习最佳设计,使用控制器逐层学习最佳滴模式。CIFAR-10和ImageNet的结果表明,这些模式改善了结果,并可以在数据集之间传输。

4.6 LocalDrop

Rademacher复杂性被用来重新定义Dropout和DropBlock。通过对该问题进行广泛的数学分析,提出了一种新的两阶段正则化算法。该方法虽然耗时,但针对图像分类的不同CNN架构取得了相应的改进。

CIFAR-10的结果表明,LocalDrop方法至少可以改善结果0.15%,比最佳结果提高了近0.6%。CIFAR-100的结果改善了0.4%;然而,在这种特定的情况下,在反向传播时删除权重的变化最终会得到略微更好的结果,提高了0.5%。除了改进之外,该方法只适用于3分支ResNet,很难直接比较其他方法。

4.7 Shake-Shake

在这些体系结构上强制正则化的一种方法是在训练期间为残差连接的每个分支赋予不同的权重。最初的ResNets的工作原理是在每个分支上添加权重,没有任何区别。在训练过程中,Shake-shake作用于3个分支的ResNets,在前传时改变每个分支的乘因子,在后传时乘以不同的值,从而改变每个分支对最终结果的影响。对于推理,它将每个分支乘以0.5倍。

4.8 ShakeDrop

解决Shake-shake问题的一个改进是ShakeDrop。它不仅适用于ResNeXt架构,也适用于ResNet、Wide ResNet和PyramidNet。为了实现这样的结果,ShakeDrop改变了由Shake-shake提出的配置。这些分支上的Shake组合显示,ShakeDrop有更好的性能,不会被困在局部极小值上。结果表明,该方法可以比前面提到的每一种体系结构获得的原始结果更好。

4.9 Manifold Mixup

神经网络通常被概括为一个函数,给定输入数据和一组可学习参数,输出相应的目标值。Manifold Mixup的作用类似于Mixup,然而,它在CNN的任何内部层中运行,而不仅仅是在输入层。深度神经网络可以被认为是一组较小的神经网络,每一个都输出一些期望的特征;因此,如果所有的子网都运行良好,则可以认为最终的结果是良好的。

Yang等提出了一种新的损失函数设计策略:首先通过前馈过程计算传统的小批量损失。然后,它从原始网络生成子网络,然后通过使用不同的图像变换提供相同的小批处理,为每个模型计算一个损失。最后,将传统损失与各个子网络的损失相加,计算出最终损失。该技术在不同的数据集和CNN架构中显示了巨大的潜力改进。

4.10 其他方法

在过去的几年里,残差连接的使用,首先在众所周知的神经架构ResNet中引入,并对其进行了进一步的改进,在几个任务上取得了相关的成果。后来的研究表明,这种成功是由于创建了一种名为“identity mapping”的结构,它是对原始输入的重建。残差连接迫使模型学习如何构造这些结构。


4标签正则化


有方法使用Label Smoothing作为其正则化策略的一部分。例如,Mixup根据2个不同图像之间的插值来平均标签的值。同样的规则也适用于Manifold Mixup技术;然而,数据插值是在层之间计算的,并使用相同的微积分来重置标签值。

另一个使用标签转换的正则化器是Cutblur。在本例中,使用了反式格式,在训练期间,可以将标签与输入倒置,使输入作为标签,模型将按照预期收敛。这一预期结果的原因是由于低分辨率和高分辨率图像的切割尺寸,这是没有预先定义的。这意味着输入可以是高分辨率图像中的低分辨率图像,标签可以是高分辨率图像中的低分辨率图像。因此,将标签和输入倒排仍然是有意义的。

其他方法也可以通过使用Manifold Mixup来改进它们的结果。例如,Cutout从输入中删除部分,所以根据crop size“remove”部分标签也是有意义的。假设crop size是图像的25%,因此活动类可以从1下降到0.75。同样的策略也适用于RandomErasing。在训练过程中丢弃神经元的方法,如Dropout,可以在训练过程中将热标签的值降低到相同的范围。

5.1 Label Smoothing

在一般的分类任务中,使用热编码标签是普遍存在的。从2015年开始,Label Smoothing提出了一种在标签编码过程中的正则化技术,通过修改hone-hot表示的每个位置上的值。

Label Smoothing的工作原理是防止了2个主要问题。

  • 首先,过拟合问题
  • 其次,对于不确定结果的过度自信问题

根据作者论述,通过使用编码标签上的平滑因子,应用在向量上的Softmax函数产生更接近平滑编码向量的值,限制了反向传播算法中使用的值,并根据类产生更真实的值。

5.2 TSLA

使用标签平滑的一个困难是找出ϵ的什么值(即平滑因子)是理想的,无论是对于一般的还是对于特定的数据集。最初的工作表明,ϵ=0.1是极好的条件;然而,两阶段标签平滑(TSLA)表明,一般来说,梯度下降结合Label Smoothing技术只能提高结果,直到一定的训练点,之后最好将活动类的所有值设置为0和1。例如,当在CIFAR-100数据集中对ResNet18进行200个Epoch的训练时,结果表明,当使用Label Smoothing时仅仅到160个Epoch便可以获得最好的性能。

5.3 SLS

通常,很难为Label Smoothing因子定义适当的值。结构标签平滑(SLS)提出通过估计贝叶斯估计误差来计算这样的值,根据作者,这有助于定义每个实例的标签边界。实验表明,该方法在不同场合都可以克服传统的标签平滑方法。

虽然这项工作在MobileNetV2上得到了充分的评估,但它没有考虑到其他的神经网络架构。尽管一些流行的数据集被用于比较目的,例如,CIFAR和SVHN,但这项工作仅限于MobileNet-V2。

5.4 JoCor

本文提出了一种避免噪声标签对神经网络的影响的新方法。JoCoR在同一数据集上训练2个相似的神经网络,并试图关联2个不同的标签。该方法通过将2个网络的交叉熵损失加上它们之间的对比损失来计算损失,然后只使用批处理上最可忽略的损失来更新架构的参数。

作者认为,通过使用最小的值来更新参数,这2种网络都与预测结果一致,而且标签的噪声往往更小。虽然该方法是针对弱监督问题开发的,但它可以很容易地适应传统的监督问题,如数据分类,以改善结果。这种方法的缺点是使用2个神经网络进行训练,这需要更多的处理和内存。


5参考


[1].Avoiding Overfitting: A Survey on Regularization Methods for Convolutional Neural Networks

相关文章
|
4天前
|
机器学习/深度学习 人工智能 移动开发
一文搞懂 FFN / RNN / CNN 的参数量计算公式 !!
一文搞懂 FFN / RNN / CNN 的参数量计算公式 !!
10 3
|
4天前
|
机器学习/深度学习 算法 PyTorch
深入理解PyTorch自动微分:反向传播原理与实现
【4月更文挑战第17天】本文深入解析PyTorch的自动微分机制,重点讨论反向传播的原理和实现。反向传播利用链式法则计算神经网络的梯度,包括前向传播、梯度计算、反向传播及参数更新。PyTorch通过`autograd`模块实现自动微分,使用`Tensor`和计算图记录操作历史以自动计算梯度。通过示例展示了如何在PyTorch中创建张量、定义计算过程及求梯度。掌握这些有助于提升深度学习模型的训练效率。
|
4天前
|
人工智能 物联网
PiSSA :将模型原始权重进行奇异值分解的一种新的微调方法
我们开始看4月的新论文了,这是来自北京大学人工智能研究所、北京大学智能科学与技术学院的研究人员发布的Principal Singular Values and Singular Vectors Adaptation(PiSSA)方法。
18 3
|
4天前
|
机器学习/深度学习 PyTorch 算法框架/工具
基于PyTorch实战权重衰减——L2范数正则化方法(附代码)
基于PyTorch实战权重衰减——L2范数正则化方法(附代码)
62 0
|
4天前
|
机器学习/深度学习 编解码 算法
大卷积核大有用处 | LSKNet + DiffusionDet更高更强的目标检测模型
大卷积核大有用处 | LSKNet + DiffusionDet更高更强的目标检测模型
82 0
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch学习笔记(6):模型的权值初始化与损失函数
Pytorch学习笔记(6):模型的权值初始化与损失函数
122 0
Pytorch学习笔记(6):模型的权值初始化与损失函数
|
12月前
|
机器学习/深度学习 编解码 算法
超级干货 | 用万字文章总结25种正则化方法(值得收藏)(一)
超级干货 | 用万字文章总结25种正则化方法(值得收藏)(一)
83 0
|
12月前
|
机器学习/深度学习 编解码 数据可视化
深度学习基础入门篇[9.2]:卷积之1*1 卷积(残差网络)、2D/3D卷积、转置卷积数学推导、应用实例
深度学习基础入门篇[9.2]:卷积之1*1 卷积(残差网络)、2D/3D卷积、转置卷积数学推导、应用实例
深度学习基础入门篇[9.2]:卷积之1*1 卷积(残差网络)、2D/3D卷积、转置卷积数学推导、应用实例
|
机器学习/深度学习 缓存 监控
Pytorch学习笔记-04 权值初始化与损失函数
Pytorch学习笔记-04 权值初始化与损失函数
94 0
Pytorch学习笔记-04 权值初始化与损失函数
|
机器学习/深度学习 数据挖掘 PyTorch
初始化神经网络权重的方法总结
初始化神经网络权重的方法总结
194 0
初始化神经网络权重的方法总结