神经 络的正则化技术

用于增加训练误差为代价来减少测试集上的误差的策略或技术统称为正则化。许多这样的技术可供深度学习从业者使用。事实上,开发更有效的正规化策略一直是该领域的主要研究工作之一。

正则化可以定义为我们对学习算法所做的任何修改,旨在减少其泛化误差而不是其训练误差。这种正则化通常通过对机器学习模型施加一些额外约束来完成,例如对参数值添加限制或者通过在目标函数中添加可以被认为对应于参数值的软约束的额外项。如果选择正确,这可能会导致测试错误减少。据说一个有效的正规化者是通过显着减少方差而不过度增加偏差来实现有利可图的交易。

参数Norm惩罚

该技术基于通过向目标函数J添加参数范数惩罚来限制模型的容量。

其中alpha是一个超参数,它可以衡量标准惩罚omega的相对贡献。将alpha设置为0意味着没有正则化,而较大的alpha值对应于更多正则化。

对于神经 络,我们选择使用参数范数惩罚来惩罚仿射变换的权重并使偏差不受约束。这是因为偏差需要较少的数据来准确地拟合比重量。由于权重用于表示两个变量之间的关系,并且需要在各种条件下观察两个变量,而偏差仅控制单个变量,因此它们可以保持不规则化。

L2参数正则化

这种正规化通常被称为重量衰减。该策略通过添加正则化项omega来推动权重更接近原点,该正则定义项定义为:

该技术也称为岭回归Tikhonov正则化

正则化后的目标函数表示为:

对应的参数梯度:

更新权重的单个渐变步骤:

我们可以看到,在执行通常的梯度更新之前,权重衰减项现在在每一步上乘以一个常数因子乘以权重向量。

L1正则化

这里的正则化术语定义为:

这导致我们的目标函数为:

对应的梯度:

通过观察梯度,我们可以注意到梯度是如何通过符号(wi)的常数因子来缩放的。

数据集扩充

使模型概括的最佳和最简单的方法是在大量数据上进行训练,但大多数情况下我们提供的数据有限。一种方法是创建虚假数据并将其添加到我们的训练数据集中,对于某些域,这是相当简单和容易的。

这种方法主要用于分类问题,分类器需要采用复杂的高维输入x并用单个类别标识y对其进行汇总。这意味着分类器面临的主要任务是对各种变换不变。只需转换训练集中的x输入,我们就可以轻松生成新的(x,y)对。除非我们已经解决了密度估计问题,否则这种方法并不总是适用于诸如密度估计任务之类的任务,难以生成伪数据。

数据集增强是计算机视觉任务(如图像分类或对象识别)的一种非常流行的方法,因为图像具有高维度,并且包含各种变化因素,其中许多因素可以轻松模拟。将训练图像在每个方向上转换几个像素,旋转图像或缩放图像等操作通常可以极大地改善泛化,即使模型已经被设计为通过使用卷积和池化技术进行部分平移不变。

噪音稳健

噪声通常作为数据集增强策略引入输入。在模型的输入处添加具有无穷小方差的噪声等效于对权重的范数施加惩罚。噪声注入比简单地缩小参数更有效,特别是当噪声添加到隐藏单元时。

在正则化模型服务中使用噪声的另一种方法是将其添加到权重中。该技术主要用于递归神经 络。这可以解释为对权重的贝叶斯推断的随机实现。

半监督学习

在半监督学习中,来自P(x)的未标记示例和来自P(x,y)的标记示例用于估计P(y | x)或从x预测y。在深度学习的背景下,半监督学习通常是指学习表示h = f(x)。目标是学习表示,以便来自同一类的示例具有相似的表示。无监督学习提供了关于如何在表示空间中对训练样例进行分组的提示。在应用我们的分类器之前使用主成分分析作为预处理步骤就是这种方法的一个例子。

可以构建模型,其中P(x)??或P(x,y)的生成模型与P(y | x)的判别模型共享参数,而不是对无监督和监督的组件使用单独的模型。现在,P(x)的结构以共享参数化捕获的方式连接到P(y | x)的结构。通过控制总标准中包含多少生成标准,可以找到比纯粹生成性或纯粹歧视性训练标准更好的权衡。

多任务学习

多任务学习是通过汇集由若干任务产生的示例来改进泛化的一种方法。同样地,额外的训练示例对模型的参数施加更大的压力,使其更好地推广,当模型的一部分在任务之间共享时,模型的该部分更多地受限于良好的值,通常产生更好的泛化。

该模型一般可分为两种部分和相关参数:

  • 特定于任务的参数只能从其任务的示例中获益,以实现良好的泛化。
  • 在所有任务中共享的通用参数,这些任务受益于所有任务的池化数据。
  • 提前停止训练

    当在足够大的数据集上训练大型模型时,如果训练进行了很长时间而不是增加模型的泛化能力,则会增加过拟合。在训练过程中,训练错误继续减少,但在某一点之后,验证错误开始增加,从而表明我们的模型已经开始过拟合。

    训练和验证的损失比较

    考虑提前停止的一种方法是作为非常有效的超参数选择算法。提前停止训练的想法是,一旦验证错误开始增加,我们就冻结参数并停止训练过程。或者,每当验证集上的错误改进时,我们也可以存储模型参数的副本,并在训练终止时返回这些参数而不是最新参数。

    早期停止具有优于重量衰减的优点,即早期停止自动确定正确的正规量,而重量衰减需要许多具有不同超参数值的训练实验。

    装袋

    Bagging或bootstrap聚合是一种通过组合多个模型来减少泛化错误的技术。我们的想法是分别训练几个不同的模型,然后让所有模型在测试示例的输出上投票。这是机器学习中称为模型平均的一般策略的一个例子。采用这种策略的技术是已知的

    作为集成方法,这是一种有效的方法,因为不同的模型不会产生相同类型的错误。

    套袋包括构建k个不同的数据集。每个数据集与原始数据集具有相同数量的示例,但每个数据集都是通过从原始数据集中替换而进行采样而构建的。这意味着,很可能每个数据集都缺少原始数据集中的一些示例,并且还包含几个重复的示例。然后在数据集i上训练模型i。每个数据集中包含哪些示例之间的差异导致训练模型之间的差异。

    Dropout

    Dropout是一种计算成本低廉但功能强大的正则化方法,可以将丢失视为一种方法,可以对很多大型神经 络的集合进行包装。装袋方法不能直接应用于大型神经 络,因为它涉及训练多个模型,并且在每个测试示例上评估多个模型。因为训练和评估这样的 络在运行时和存储器方面是昂贵的,所以这种方法对于神经 络是不切实际的。Dropout提供了一种廉价的近似训练和评估指数多个神经 络的袋装集合。Dropout训练由所有子 络组成的集合,这些子 络可以通过从底层基础 络中移除非输出单元来形成。

    在大多数现代神经 络中,基于一系列仿射变换和非线性,我们可以通过将其输出值乘以零来有效地从 络中移除单元。此过程需要对径向基函数 络等模型进行一些细微的修改,这些模型采用单位状态和某个参考值之间的差异。在这里,我们提出将Dropout算法乘以零,但它可以通过简单的修改来与其他从 络中删除单元的操作一起使用。

    丢弃训练与装袋训练并不完全相同。在装袋的情况下,模型都是独立的。在丢弃情况下,模型共享参数,每个模型从父神经 络继承不同的参数子集。此参数共享使得可以表示具有易处理的内存量的指数数量的模型。丢弃的一个优点是它在计算上非常便宜。在训练期间使用丢失仅需要每次更新每个示例的O(n)计算,以生成n个随机二进制数并将它们乘以状态。丢弃的另一个显着优点是它不会显着限制可以使用的模型或训练程序的类型。

    对抗训练

    在许多情况下,神经 络似乎已经达到了人类层面的理解任务,但要检查它是否真的能够在人类层面上执行, 络在对抗性示例上进行了测试。可以将对抗性示例定义为对于输入a在数据点x附近使得模型输出在a处非常不同,则a被称为对抗性示例。通过使用优化过程有意地构建对抗性示例,并且模型在这些示例上具有接近100%的错误率。

    对抗训练有助于模型的正规化,因为在训练集上训练模型时会使用对抗性示例进行增强,这样可以改善模型的泛化。

    声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

    (0)
    上一篇 2019年3月9日
    下一篇 2019年3月10日

    相关推荐