【问题标题】:The dilemma of overfitting in NN trainingNN训练中过拟合的困境
【发布时间】:2019-06-26 04:29:36
【问题描述】:

我的问题是另一位用户提出的问题的延续:What's is the difference between train, validation and test set, in neural networks?

一旦通过查看验证和训练集性能(使用 Matlab 中的 nntool 框很容易做到)达到最小 MSE 时终止学习,然后使用训练的 net 结构,如果性能看不见的测试集比训练集略差,我们有一个过度拟合的问题。我总是遇到这种情况,即使在学习期间选择了与验证和训练集相对应的参数具有几乎相同性能的模型。那为什么测试集的表现比训练集差呢?

【问题讨论】:

    标签: machine-learning neural-network training-data


    【解决方案1】:

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

    验证数据=我们用于在每个时期或运行时测试我们的模型的数据,以便我们可以提前手动停止我们的模型,因为过度拟合或任何其他模型。现在假设我在我的模型上运行 1000 个 epoch,并且在 500 个 epoch 上,我认为我的模型在训练数据上给出了 90% 的准确度,在验证数据上给出了 70% 的准确度。现在我可以看到我的模型过拟合了。我可以在 1000 个 epoch 完成之前手动停止我的训练并调整我的模型而不是查看行为。

    测试数据=现在在计算 1000 个 epoch 后完成我的模型训练。我将预测我的测试数据并查看测试数据的准确性。它给了 86%

    我的训练准确率为 90%,验证准确率为 87%,测试准确率为 86%。这可能会有所不同,因为验证集、训练集和测试集中的数据完全不同。我们在训练集中有 70% 的样本,10% 的验证和 20% 的测试集中。现在,在我的验证中,我的模型正确预测了 8 张图像,并在测试我的模型时正确预测了 100 张图像中的 18 张图像。这在现实生活项目中是正常的,因为每张图像中的像素都与另一张图像不同,这就是为什么可能会发生一点差异的原因。

    在测试集中,它们的图像多于验证集,这可能是原因之一。因为图像越多,错误预测的风险就越大。例如 90% 的准确率 我的模型可以正确预测 100 个中的 90 个,但是如果我将图像样本增加到 1000 个,那么我的模型可能会在 1000 个上正确预测(850、800 或 900)个图像

    【讨论】:

    • 非常感谢您的精彩解释。如果我没听错的话,你说测试准确率
    • 如果您的模型在测试时给出 0.26 毫秒,那么它就可以了。并且它们的过度拟合非常少,我们可以忽略这一点。但是如果你想克服这种可能导致高错误的过度拟合。因为通过使用过拟合技术,我们的模型需要更多时间来收敛权重,或者有时由于在模型上应用更多过拟合技术开始欠拟合数据。所以我们通常会忽略它们非常小的过拟合。
    • 再次感谢。我发布了一个与此问题相关的新问题 (stackoverflow.com/questions/56778505/…)。既然你已经回答了,我认为你可能更容易与新问题联系起来,因为它是你回答的问题的延续。能否请您看一下,将再次感谢您的帮助。
    猜你喜欢
    • 2018-02-01
    • 2020-10-05
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多