神经网络训练中的过拟合困境

我的问题是基于另一位用户提出的问题:在神经网络中,训练集、验证集和测试集有什么区别?

当通过观察验证集和训练集的表现达到最小均方误差(MSE)时终止学习后,使用训练好的net结构,如果未见过的测试集的表现略差于训练集,我们就面临过拟合问题。尽管在学习过程中选择了验证集和训练集表现几乎相同的模型参数,我总是遇到这种情况。那么,为什么测试集的表现会比训练集差呢?


回答:

训练数据= 我们用来训练模型的数据。

验证数据= 我们用来在每个周期或运行时测试模型的数据,以便我们可以因为过拟合或其他模型问题而手动提前停止模型。例如,假设我在模型上运行1000个周期,在第500个周期时,我发现我的模型在训练数据上的准确率为90%,在验证数据上的准确率为70%。现在我可以看到我的模型在过拟合。我可以在1000个周期完成之前手动停止训练,并进一步调整我的模型,然后观察其行为。

测试数据= 在模型完成1000个周期的训练后,我将预测测试数据并查看测试数据的准确率。其准确率为86%。

我的训练准确率为90%,验证准确率为87%,测试准确率为86%。这些可能会有所不同,因为验证集、训练集和测试集中的数据完全不同。我们有70%的样本在训练集中,10%在验证集中,20%在测试集中。现在在我的验证集中,我的模型正确预测了8张图片,而在测试集中,我的模型正确预测了100张中的18张图片。这在现实项目中是正常的,因为每张图片的像素与其他图片不同,因此可能会有一点差异。

测试集中有比验证集更多的图片,这可能是原因之一。因为图片越多,错误预测的风险就越大。例如,在90%的准确率下,我的模型可以正确预测100张中的90张,但如果我将图片样本增加到1000张,我的模型可能会正确预测1000张中的850张、800张或900张。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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