【问题标题】:When to stop training - LOOV MLP何时停止训练 - LOOV MLP
【发布时间】:2016-10-01 08:47:32
【问题描述】:

我正在运行 MLP,将一组值分为 10 个不同的类别。

简而言之,我有一个声纳,它可以给我 400 个对象的“读数”。每个读数都是 1000 个浮点值的列表。

我已经扫描了 100 个对象,并希望对它们进行分类并根据留一法交叉验证评估模型。

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

我的问题是:我如何知道将哪个训练时期用作最终的“最佳”模型?我搜索了一下,有人说要使用验证准确度最高的时期,但是这对我来说似乎是在作弊。我不应该只根据训练数据的统计数据来选择模型吗? (我的想法是,训练中的随机权重改组可能会人为地创建高验证准确度,但实际上并不能为将来可以扫描的新对象提供有用的模型)

所以回答说使用提供最佳验证准确性的训练时期:

whats is the difference between train, validation and test set, in neural networks?

最好, 洗地机

【问题讨论】:

  • 这看起来像是一道数学题,而不是编程题。一个非常有效、定义明确且陈述清楚的问题,但不幸的是出现在错误的网站上。

标签: machine-learning statistics neural-network keras


【解决方案1】:

这称为提前停止

你需要的是一个验证集。

-在每个 epoch 之后,在验证集上计算您想要的评估度量。

-始终将最佳性能模型的参数保存在变量中的验证集之上。

-如果对于两次或 n 次迭代,验证结果没有得到改善,则停止 epoch 并使用性能最佳的参数重置 MLP。

-然后使用您之前保存的验证集上性能最佳的模型计算测试集上的结果。

【讨论】:

    【解决方案2】:

    你想优化你的 generalization/true-error(我对看不见的数据的预测有多好),这通常包括(参见 here 获取包含此概念的论文;尽管在另一种情况下-> SGD + SVM):

    • 近似误差:模型描述的数据有多好
    • estimation-error:最小化经验风险而不是预期风险的影响
    • optimization-error:衡量近似优化对预期风险的影响
      • 优化 可以通过运行优化器来减少错误(这是你的变量)

    您会看到,true-error 仅部分由您的优化错误(决定何时停止)描述,但一个好的交叉验证方案可以更准确地描述描述/评估真实错误(这基本上是完成 CV 的原因;需要付出一些代价)。因此,基于 CV 选择要使用的 epoch 非常普遍。

    当然,让交叉验证方案更加合理也很重要。经常使用基于 k 折的方案,k 不会太小(至少在非神经网络应用中;对于神经网络来说可能成本太高)。

    【讨论】:

      【解决方案3】:

      决定何时停止的一种方法是评估测试集(或验证集)的准确性并在每个 epoch 后打印出来。一旦达到最大时期,您就可以停止它。

      如果当前权重和偏差的准确性优于当前的最大值,则另一种方法是腌制(在 python 中)或序列化(在 Java 中)并将权重和偏差集存储在文件或磁盘中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-04
        • 2016-12-07
        • 2016-04-08
        • 2021-11-17
        • 2016-03-26
        • 2018-08-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多