我的问题是基于另一位用户提出的问题:在神经网络中,训练集、验证集和测试集有什么区别?
当通过观察验证集和训练集的表现达到最小均方误差(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张。