如何避免深度学习神经网络中的过拟合

训练一个对新数据具有很好泛化能力的深度神经网络是一个具有挑战性的问题。

容量太小的模型不能学习问题,而容量太大的模型可能学习得太好,并超过训练数据集。这两种情况都会导致模型不能很好地推广。

减少泛化误差的现代方法是使用较大的模型,该较大的模型可能需要在训练期间使用保持模型权重较小的正则化。这些技术不仅减少了过拟合,而且还可以更快地优化模型和更好的整体性能。

在这篇文章中,你将发现训练神经网络时的过度拟合问题,以及如何用正则化方法解决这个问题。

读完这篇文章,你就会知道:

  • 通过增加网络容量可以很容易地解决匹配不足的问题,但过度匹配需要使用专门的技术。
  • 像权重衰减这样的正则化方法为控制大型神经网络模型的过拟合提供了一种简单的方法。
  • 现代的正则化建议是使用带有辍学和权重约束的提前停止。

概述

本教程分为四个部分,它们是:

  • 模型泛化与过拟合问题。
  • 通过约束模型复杂性减少过拟合。
  • 正则化方法。
  • 正规化建议。

模型泛化与过拟合问题

神经网络的目标是拥有一个最终模型,该模型在我们用来训练它的数据(例如,训练数据集)和模型将用于预测的新数据上都表现良好。

机器学习的中心挑战是,我们必须在新的、以前没有见过的输入上表现良好–而不仅仅是那些我们的模型曾在其上训练过的输入。在以前未观察到的输入上表现良好的能力称为泛化。

我们要求模型从已知的例子中学习,并从那些已知的例子中归纳出未来的新例子。我们使用像训练/测试分离或k-折交叉验证这样的方法,仅仅是为了估计模型对新数据进行泛化的能力。

学习和推广到新的案例是很困难的。

学习太少,模型在训练数据集和新数据上的性能将很差。这个模型将不适合这个问题。过多的学习和模型将在训练数据集上执行得很好,而在新数据上执行得很差,模型将不能很好地解决问题。在这两种情况下,模型都没有推广。

  • 不适合的模型。不能充分学习问题、在训练数据集上表现不佳、在坚持样本上表现不佳的模型。
  • 超大尺寸模型。学习训练数据集太好的模型,在训练数据集上执行得很好,但在坚持样本上执行得不好。
  • 很适合的模特。适当地学习训练数据集并将其很好地推广到旧的OUT数据集的模型。

可以在偏差-方差权衡的情况下考虑模型拟合。

欠拟合模型具有较高的偏差和较低的方差。无论训练数据中的具体样本是什么,它都无法学习问题。过拟合模型具有低偏差和高方差的特点。该模型学习训练数据太好,性能变化很大,新的未见样本甚至统计噪声都会添加到训练数据集中的样本中。

为了很好地推广,系统需要足够强大来近似目标函数。如果过于简单,甚至无法拟合训练数据,那么对新数据的泛化也可能很差。[…]。然而,过于复杂的系统可能能够以许多不同的方式近似数据,这些方式会产生类似的误差,并且不太可能选择能够概括最佳…的方式。

我们可以通过增加模型的容量来解决拟合不足的问题。容量指的是模型适应各种功能的能力;容量越大,意味着模型可以适应更多类型的函数,以便将输入映射到输出。通过更改模型的结构,例如向层添加更多层和/或更多节点,可以很容易地实现增加模型的容量。

因为不合身的模特很容易解决,所以更常见的是有一个过合身的模特。

通过在训练数据集和抵抗验证数据集上评估模型在训练期间的性能来监视模型的性能,可以容易地诊断过拟合模型。将模型在训练期间的表现绘制成线图,称为学习曲线,将显示出熟悉的模式。

例如,列车和验证数据集上模型的损失(我们试图将其最小化)的线图将显示训练数据集的线条下降并可能趋于平稳,以及验证数据集的线条首先下降,然后在某个点开始再次上升。

随着训练的进行,泛化误差可以减小到最小,然后随着网络适应训练数据的特性而再次增加。

学习曲线图讲述了模型学习问题的过程,直到它开始过度拟合,并且它对看不见的验证数据集进行泛化的能力开始变差。

通过约束模型复杂性减少过拟合

有两种方法可以接近超大尺寸模型:

  • 通过在更多示例上训练网络来减少过度拟合。
  • 通过改变网络的复杂性来减少过度安装。

非常深入的神经网络的一个好处是,随着数据集越来越大,它们的性能也会不断提高。拥有近乎无限数量的示例的模型最终将在网络容量能够学习的方面达到平台期。

模型可以超配训练数据集,因为它有足够的容量这样做。减小模型的容量将模型过拟合训练数据集的可能性降低到不再过拟合的程度。

神经网络模型的容量和复杂性既由其节点和层的结构定义,也由其权值的参数定义。因此,我们可以通过以下两种方式之一来降低神经网络的复杂性以减少过拟合:

  • 通过更改网络结构(权重数量)来更改网络复杂性。
  • 通过更改网络参数(权重值)来更改网络复杂性。

在神经网络的情况下,可以通过改变网络中自适应参数的数目来改变复杂度。这就是所谓的结构性稳定。[…]。控制模型复杂性的第二种主要方法是通过使用正则化,这涉及到向误差函数添加惩罚项。

例如,可以诸如经由网格搜索来调整结构,直到找到合适数量的节点和/或层,以减少或移除对问题的过度拟合。或者,可以通过移除节点来过度拟合和修剪模型,直到它在验证数据集上达到合适的性能。

更常见的做法是通过确保模型的参数(权重)保持较小来限制模型的复杂性。较小的参数建议使用不太复杂且更稳定的模型,该模型对输入数据中的统计波动不太敏感。

较大的权重往往会导致[激活]功能的急剧转变,因此,对于输入的微小变化,输出会发生较大的变化。

更常见的是集中于约束神经网络中的权重大小的方法,因为可以定义单个网络结构是欠约束的,例如具有比问题所需的大得多的容量,并且可以在训练期间使用正则化来确保模型不会过拟合。在这种情况下,性能甚至可以更好,因为额外的容量可以集中在更好地学习问题中的可概括概念上。

寻求通过保持网络权重小来减少过拟合(减少泛化误差)的技术被称为正则化方法。更具体地说,正则化是指一类添加附加信息的方法,以将不适定问题转化为更稳定的适定问题。

如果给定信息中的小变化导致解决方案中的大变化,则称问题是不适定的。这种关于数据的不稳定性使得解决方案变得不可靠,因为微小的测量误差或参数中的不确定性可能会被极大地放大,并导致截然不同的响应。[…]。正则化背后的思想是使用补充信息以稳定的形式重申不适定问题。

正则化方法被如此广泛地用于减少过拟合,以至于术语“正则化”可以用于任何改善神经网络模型的泛化误差的方法。

正则化是我们对学习算法所做的任何修改,其目的是减少其泛化误差,而不是其训练误差。正则化是机器学习领域的中心问题之一,其重要性只有通过优化才能与之匹敌。

神经网络的正则化方法

最简单也可能是最常见的正则化方法是根据模型中权重的大小向损失函数添加惩罚。

  • 权重正则化(权重衰减):在训练期间根据权重的大小对模型进行惩罚。

这将鼓励模型以使模型的权重保持较小的方式将输入映射到训练数据集的输出。这种方法被称为权重正则化或权重衰减,几十年来已被证明对更简单的线性模型和神经网络都非常有效。

收集更多数据的一种简单替代方法是通过调整超参数(如权重衰减系数…)来减小模型大小或改进正则化。

下面是五种最常用的附加正则化方法的列表。

  • 活动规则化:在训练期间根据激活的大小对模型进行处罚。
  • 权重约束:将权重的大小约束在某个范围内或低于某个限制。
  • 辍学:在训练期间概率地删除输入。
  • 噪声:在训练期间向输入添加统计噪声。
  • 提前停止:监视验证集上的模型性能,并在性能下降时停止培训。

这些方法中的大多数已经被证明(或被证明)近似于在损失函数中增加惩罚的效果。

每种方法处理问题的方式不同,在泛化性能、可配置性和/或计算复杂性的混合方面提供了好处。

正规化建议

这一部分概述了在深度学习神经网络中使用正则化方法的一些建议。

您应该始终考虑使用正则化,除非您有非常大的数据集,例如大数据规模。

除非您的训练集包含数千万个或更多示例,否则您应该从一开始就包含一些温和的正则化形式。

一个很好的一般建议是设计一个欠约束的神经网络结构,并使用正则化来减少过拟合的可能性。

…。控制模型的复杂性不是找到大小合适、参数数量合适的模型的简单事情。取而代之的是,…。在实际的深度学习场景中,我们几乎总是发现-最佳拟合模型(在最小化泛化误差的意义上)是经过适当正则化的大型模型。

除了在训练过程中保持较小体重的方法外,几乎所有人都应该使用提前停止的方法。

几乎所有人都应该使用提前停止。

一些更具体的建议包括:

  • 经典:使用提前停止和权重衰减(L2权重调整)。
  • 替代:使用提前停止,并通过权重约束添加噪波。
  • 现代:除了重量限制外,还可以使用提前停止和退出。

这些建议适用于多层感知器和卷积神经网络。

递归神经网络的一些建议包括:

  • 经典:使用带有附加权重噪声和权重约束(如最大范数)的提前停止。
  • 现代:使用通过时间感知的反向传播版本的丢弃和权重约束的提前停止。

正规化没有规则,强烈鼓励系统试验。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

书籍

文章

摘要

在这篇文章中,你发现了训练神经网络时过度拟合的问题,以及如何用正则化方法解决这个问题。

具体地说,您了解到:

  • 通过增加网络容量可以很容易地解决匹配不足的问题,但过度匹配需要使用专门的技术。
  • 像权重衰减这样的正则化方法为控制大型神经网络模型的过拟合提供了一种简单的方法。
  • 现代的正则化建议是使用带有辍学和权重约束的提前停止。

00

Python

发表评论

电子邮件地址不会被公开。 必填项已用*标注

什么阻碍了你实现迈入机器学习领域的目标?

什么阻碍了你实现迈入机器学习领域的目标?

2020-04-22 机器学习

如果你在为进入机器学习领域而挣扎,感觉到有什么东西阻止了自己的开始,那么你应该看看这篇文章。 在这篇文章中,我们会讨论阻止进入机器学习领域的自我限制的信念,让你明白面临的问题。 几乎总是一种自我限制的信念阻碍了你们的进步。 也许你会在一个或多个这样的信念中看到自己。如果是这样的话, [......]

了解详情

R语言机器学习迷你课程

R语言机器学习迷你课程

2020-08-12 机器学习

在这个迷你课程中,你将发现如何开始,构建精确的模型,并自信地完成在14天内使用R预测建模机器学习项目。 这是一个重要而重要的文章。你可能想把它书签。 了解如何准备数据,拟合机器学习模型,并用我的新书评估他们在r上的预测,包括14步教程、3个项目和完整源代码。 我们开始吧。 [......]

了解详情

关于机器学习的几点思考

关于机器学习的几点思考

2020-04-26 机器学习

机器学习是一个大的、跨学科的研究领域。 你可以通过机器学习获得令人印象深刻的结果,并找到非常具有挑战性的问题的解决方案。但这只是更广泛的机器学习领域的一小部分,通常被称为预测建模或预测分析。 在这篇文章中,你将发现如何改变你对机器学习的思考方式,以便更好地为你提供机器学习实践者的服务。 [......]

了解详情

找到你的机器学习部落

找到你的机器学习部落

2020-04-26 机器学习

机器学习是一个充满算法和数据的迷人而强大的研究领域。 问题是,有这么多不同类型的人对机器学习感兴趣,每个人都有不同的需求。重要的是要了解你想要从机器学习中得到什么,并根据这些需求调整你的自学。 如果你不这样做,你很容易就会陷入困境,迷失方向,失去兴趣,得不到你想要的东西。 找到 [......]

了解详情

应用机器学习过程

应用机器学习过程

2020-04-26 机器学习

随着时间的推移,在处理应用机器学习问题时,你会开发出一种模式或流程,以快速获得良好的正常结果。 一旦开发完成,你就可以在一个又一个项目上反复使用此过程。你的流程越健壮、越发达,你就能越快地获得可靠的结果。 在这篇文章中,我想与你分享我解决机器学习问题的过程框架。 你可以将其用作下一 [......]

了解详情