何时停止训练 – LOOV MLP

我正在运行一个多层感知器(MLP)来将一组数值分类到10个不同的类别中。

简化来说,我有一个声呐设备,它可以为一个物体提供400个“读数”。每个读数是一组1000个浮点数值。

我总共扫描了100个物体,并希望对它们进行分类,并基于留一法交叉验证来评估模型。

对于每个物体,我将数据分为一个包含99个物体的训练集和一个包含剩余一个物体的测试集。我将训练集(99个物体,99*400个“读数”)输入MLP,并使用测试集(1个物体,1*400个“读数”)进行验证。

我的问题是:我如何知道使用哪个训练周期作为最终的“最佳”模型?我在网上搜索了一些答案,有人说应该使用验证准确率最高的周期,但我觉得这像是作弊。我不应该只基于训练数据的统计数据来选择模型吗?(我的想法是,训练中的随机权重重新洗牌可能会产生一个人为的高验证准确率,而这实际上并不能为将来可能扫描的新物体提供有用的模型)

Stack Overflow上关于使用验证准确率最高的训练周期的回答:

神经网络中训练集、验证集和测试集的区别是什么?

祝好,Deckwasher


回答:

这被称为提前停止

你需要一个验证集。

-在每个周期后,计算你希望在验证集上的评估指标。

-始终将在验证集上表现最佳的模型参数保存到一个变量中。

-如果验证结果在两到n次迭代中没有改善,就停止周期,并用表现最佳的参数重置MLP。

-然后,使用之前保存的在验证集上表现最佳的模型来计算测试集上的结果。

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

发表回复

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