神经网络中正则化方法的快速指南

  • L1 / L2
  • Weight Decay
  • Dropout
  • Batch Normalization
  • Data Augmentation
  • Early Stopping

下面的故事听起来很熟悉。想象一下,我们必须用经典的机器学习算法来解决数据问题。一种典型的方法是通过降维来提高模型的性能并减少其训练时间。

如今,在使用深度学习时,优化过程的繁重任务已被留在后台,尤其是由于GPU的出现以及对它们的便捷访问。当我们依靠更多的资源时,我们不再愿意牺牲输入数据中的任何细节,所以我们将所有的特性都引入到网络中,不管它们有多少。我们还努力将误差降低到最小,这就转化为网络层和参数的不受控制的增加,这总是受到万能近似定理的影响(Universal Approximation Theorem)。

这种增长增加了网络的复杂性,也增加了过拟合的风险,特别是当我们的训练样本很少的时候(输入样本的数量远少于网络用来调整自己以适应如此少的信息的参数的数量)。

解决这个问题正是正则化技术试图实现的。本文简要回顾了目前最常用的一些正则化方法,主要是由于它们的良好性能。

L2正则化(Ridge)

这种正则化背后的主要思想是减少参数值,从而减少方差。

这种技术在原始的损失函数( L L L)中引入了额外的惩罚项,并增加了平方参数( w w w)的总和。

但是这个惩罚项可能太大,以至于网络会试图通过使其参数非常接近于零来最小化损失函数,这一点也不方便。这就是为什么我们将这个数字乘以一个小的常数( λ \lambda λ),该常数的值可以任意选择(0.1,0.01,……)。

损失函数公式为:
在这里插入图片描述
梯度下降算法每次迭代的权值更新为:
在这里插入图片描述
增大 λ λ λ的值足以应用更多的正则化。

使用L2正则化的模型叫做Ridge回归(岭回归)

L1正则化(Lasso)

还有一种与L2非常相似的技术,叫做L1正则化,惩罚项中的网络参数不平方,而是用其绝对值代替:
在这里插入图片描述
在这里插入图片描述
这种变体将参数推向更小的值,甚至完全消除了一些输入特性对网络输出的影响,这意味着将自动选择特性。结果是一个更好的泛化,但仅限于一定程度(在这种情况下, λ λ λ的选择变得尤为重要)。

使用L1正则化的模型叫做Lasso回归

权重衰减(Weight Decay)

该技术与L2正则化相同,但应用于不同的地方:它不是在损失函数中引入一个和,而是在权值更新公式中增加一个额外的项:
在这里插入图片描述
我们可以注意到,这个更新实际上与L2正则化相同,只是在这种情况下, λ λ λ常数不是乘以2(因此,如果我们对这两种方法进行编码,则 λ λ λ的值在这种情况下都应为double值,这与L2中的结果相同)。

丢弃法(Dropout)

该技术不同于现有技术。该过程很简单:对于训练阶段中网络的每个新输入,根据先前定义的丢弃概率,将每个隐藏层中一定比例的神经元随机停用。 对于整个网络,这可以相同,也可以在每一层中不同。

在这里插入图片描述
通过使用dropout,我们避免了神经元会记住部分输入,这正是网络过拟合时所发生的情况。

拟合模型后,我们就必须以某种方式补偿训练时网络的一部分不活跃的事实。当进行预测时,每个神经元都处于活跃状态,因此会有更多的激活(层输出)对网络输出有所贡献,从而扩大了其范围。一个简单的解决方案是将所有参数乘以不被丢弃的概率。

批量归一化(Batch Normalization)

这项技术的历史相当奇怪。它被提出作为一种减少内部协变量偏移的解决方案,但最近的研究表明这并不是它真正的作用。然而,它是神经网络训练的基本技术,如下所述。

批量归一化基本上意味着在神经元和激活函数之间添加一个额外的步骤,目的是对输出激活进行归一化。理想情况下,应该使用整个训练集的均值和方差进行归一化,但是如果我们使用批量梯度下降(mini-batch gradient descent)算法来训练我们的网络,则应该使用每个mini-batch输入的均值和方差。

注意:每个神经元的每个输出将独立归一化,这意味着在每次迭代中,将为当前的mini-batch计算每个输出的平均值和方差。

归一化后,将使用两个附加参数:一个偏置作为加法,另一个类似于偏置乘以每个激活的常数。其目的是方便地将输入范围扩大到输出范围,这将极大地帮助我们的网络根据输入数据调整其参数,并减少损失函数的振荡。因此,我们还可以提高学习速度(最终陷入局部最小值的风险更小),并更快地实现向全局最小值的收敛。

在这里插入图片描述
批量归一化本身与其说是一种正则化策略,不如说是一种训练辅助技术。后者实际上是通过应用称为Momentum的优化技术实现的。由于整体的原因,过拟合得到了显著的缓解。

数据增强(Data Augmentation)

该技术的思想是对原始数据集应用各种转换,获得略有不同但本质上相同的样本,从而使网络的表现更好。

该技术在计算机视觉领域得到了广泛的应用,因为它的效果非常好。在这种情况下,神经网络将对单个输入图像的处理次数与我们运行的次数一样多,如果训练时间过长,则该网络会记住部分图像。解决方案:每次将图像重新引入网络时都应用随机变换。

这些转换的例子有:

  • 水平/垂直翻转图像
  • 旋转图像X度
  • 调整,扩展,调整大小等
  • 应用透视变形
  • 调整亮度、对比度、饱和度等
  • 添加一些噪音、缺陷等
  • 以上方法的组合

在这里插入图片描述
通过应用数据扩充,我们将有更多的信息可供学习,而不需要获得额外的样本,也不需要延长训练时间。此外,无论我们的网络是专用于对图像进行分类还是对目标进行检测,这种技术都能使模型在不同角度或不同光照条件下获得良好的结果(过拟合较少,因此它的泛化效果更好)。

早停法(Early Stopping)

最后要套用一个规则集,以便知道何时该停止训练,这样就不会出现过拟合和欠拟合的情况。

最常见的方法是对模型进行培训,监控其性能并在每个时期结束时保存其参数。我们将一直这样做,直到确认误差稳步增加(由于算法的随机性而出现恶化)。我们将保留之前得到的模型。
在这里插入图片描述
此时有必要记住选择一个好的验证集的重要性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值