为什么过多的训练轮次会导致过拟合?

我正在阅读一本关于Python深度学习的书。在读完第4章“对抗过拟合”之后,我有两个问题。

  1. 为什么增加训练轮次可能会导致过拟合?我知道增加训练轮次会涉及更多的梯度下降尝试,这会导致过拟合吗?

  2. 在对抗过拟合的过程中,准确率会降低吗?


回答:

我不确定你在读哪本书,所以在具体回答你的问题之前,先提供一些背景信息可能会有帮助。

首先,增加训练轮次不一定会导致过拟合,但确实可能发生。如果学习率和模型参数较小,可能需要很多轮次才能引起可测量的过拟合。尽管如此,通常更多的训练确实会导致过拟合。

为了保持问题的视角,重要的是要记住,我们最常使用神经网络来构建用于预测的模型(例如,预测图像是否包含特定对象或变量在下一个时间步的值会是什么)。

我们通过迭代调整权重和偏置来构建模型,使网络能够作为一个函数,在输入数据和预测输出之间进行转换。我们转向这些模型的原因有很多,通常是因为我们不知道函数是什么/应该是什么,或者函数过于复杂,无法通过分析方法开发。为了使网络能够模拟如此复杂的函数,它本身必须能够具有高度的复杂性。虽然这种复杂性很强大,但也存在危险!模型可能会变得如此复杂,以至于它可以非常精确地记住训练数据,但随后无法作为一个有效的、通用的函数,适用于训练集之外的数据。即,它可能会过拟合。

你可以把它想象成这样:一个人(模型)通过反复烘焙水果蛋糕(训练数据)来学习烘焙——很快他们就能在没有食谱(训练)的情况下烘焙出极好的水果蛋糕,但他们可能无法很好地烘焙海绵蛋糕(未见数据)。

回到神经网络!由于神经网络过拟合的风险很高,深度学习工程师可以使用许多工具和技巧来防止过拟合,例如使用dropout。这些工具和技巧统称为“正则化”。

这就是为什么我们使用涉及测试数据集的开发和训练策略——我们假装测试数据是未见的,并在训练过程中监控它。你可以在下面的图表中看到一个例子(图片来源)。在大约50个轮次之后,测试误差开始增加,因为模型已经开始“记忆训练集”,尽管训练误差保持在其最小值(通常训练误差会继续改善)。

过拟合的例子

所以,回答你的问题:

  1. 允许模型继续训练(即更多的轮次)增加了权重和偏置被调整到如此程度的风险,以至于模型在未见(或测试/验证)数据上的表现很差。现在模型只是在“记忆训练集”。

  2. 继续增加轮次很可能会提高训练准确率,但这并不一定意味着模型对新数据的预测会准确——通常情况反而会变得更糟。为了防止这种情况,我们使用测试数据集并在训练过程中监控测试准确率。这使我们能够更明智地决定模型是否对未见数据变得更准确。

我们可以使用一种称为提前停止的技术,即一旦测试准确率在少数几个轮次后停止改善,就停止训练模型。提前停止可以被认为是另一种正则化技术。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注