我正在运行一个多层感知器(MLP)来将一组数值分类到10个不同的类别中。
简化来说,我有一个声呐设备,它可以为一个物体提供400个“读数”。每个读数是一组1000个浮点数值。
我总共扫描了100个物体,并希望对它们进行分类,并基于留一法交叉验证来评估模型。
对于每个物体,我将数据分为一个包含99个物体的训练集和一个包含剩余一个物体的测试集。我将训练集(99个物体,99*400个“读数”)输入MLP,并使用测试集(1个物体,1*400个“读数”)进行验证。
我的问题是:我如何知道使用哪个训练周期作为最终的“最佳”模型?我在网上搜索了一些答案,有人说应该使用验证准确率最高的周期,但我觉得这像是作弊。我不应该只基于训练数据的统计数据来选择模型吗?(我的想法是,训练中的随机权重重新洗牌可能会产生一个人为的高验证准确率,而这实际上并不能为将来可能扫描的新物体提供有用的模型)
Stack Overflow上关于使用验证准确率最高的训练周期的回答:
祝好,Deckwasher
回答:
这被称为提前停止。
你需要一个验证集。
-在每个周期后,计算你希望在验证集上的评估指标。
-始终将在验证集上表现最佳的模型参数保存到一个变量中。
-如果验证结果在两到n次迭代中没有改善,就停止周期,并用表现最佳的参数重置MLP。
-然后,使用之前保存的在验证集上表现最佳的模型来计算测试集上的结果。