NN训练过拟合的困境
The dilemma of overfitting in NN training
我的问题是另一位用户提出的问题的延续:What's is the difference between train, validation and test set, in neural networks?
一旦通过查看验证和训练集性能达到最小 MSE 终止学习(使用 Matlab 中的 nntool
框很容易做到这一点),然后使用经过训练的 net
结构,如果未见过的测试集的性能比训练集稍差,我们就会遇到过拟合问题。我总是遇到这种情况,尽管在学习过程中选择了具有几乎相同性能的验证和训练集对应的参数的模型。那为什么测试集性能比训练集差?
训练数据=我们用来训练模型的数据。
验证数据= 我们用来在 every-epoch 或 run-time 上测试模型的数据,以便我们可以提前手动停止我们的模型,因为 over-fitting 或任何其他模型。现在假设我在我的模型上 运行 1000 个时期,在 500 个时期我认为我的模型在训练数据上给出了 90% 的准确度,在验证数据上给出了 70% 的准确度。现在我可以看到我的模型是 over-fitting。我可以手动停止我的训练,在 1000 个时期完成之前调整我的模型,而不是看到行为。
测试数据=现在在计算 1000 个 epoch 后完成我的模型训练。我将预测我的测试数据并查看测试数据的准确性。它给予 86%
我的训练准确率为 90%,验证准确率为 87%,测试准确率为 86%。这可能会有所不同,因为验证集、训练集和测试集中的数据完全不同。我们在训练集中有 70% 的样本,10% 的验证集和 20% 的测试集。现在,在我的验证中,我的模型正确预测了 8 张图像,并且在测试我的模型时,正确预测了 100 张图像中的 18 张图像。这在现实生活项目中是正常的,因为每张图像中的像素都与另一张图像不同,这就是为什么可能会出现一点点差异。
在测试集中,它们的图像多于验证集,这可能是原因之一。因为图像越多,预测错误的风险就越大。例如 90% 的准确率
我的模型正确预测了 100 个中的 90 个,但是如果我将图像样本增加到 1000 个,我的模型可能会在
上正确预测(850、800 或 900)个图像 1000 个
我的问题是另一位用户提出的问题的延续:What's is the difference between train, validation and test set, in neural networks?
一旦通过查看验证和训练集性能达到最小 MSE 终止学习(使用 Matlab 中的 nntool
框很容易做到这一点),然后使用经过训练的 net
结构,如果未见过的测试集的性能比训练集稍差,我们就会遇到过拟合问题。我总是遇到这种情况,尽管在学习过程中选择了具有几乎相同性能的验证和训练集对应的参数的模型。那为什么测试集性能比训练集差?
训练数据=我们用来训练模型的数据。
验证数据= 我们用来在 every-epoch 或 run-time 上测试模型的数据,以便我们可以提前手动停止我们的模型,因为 over-fitting 或任何其他模型。现在假设我在我的模型上 运行 1000 个时期,在 500 个时期我认为我的模型在训练数据上给出了 90% 的准确度,在验证数据上给出了 70% 的准确度。现在我可以看到我的模型是 over-fitting。我可以手动停止我的训练,在 1000 个时期完成之前调整我的模型,而不是看到行为。
测试数据=现在在计算 1000 个 epoch 后完成我的模型训练。我将预测我的测试数据并查看测试数据的准确性。它给予 86%
我的训练准确率为 90%,验证准确率为 87%,测试准确率为 86%。这可能会有所不同,因为验证集、训练集和测试集中的数据完全不同。我们在训练集中有 70% 的样本,10% 的验证集和 20% 的测试集。现在,在我的验证中,我的模型正确预测了 8 张图像,并且在测试我的模型时,正确预测了 100 张图像中的 18 张图像。这在现实生活项目中是正常的,因为每张图像中的像素都与另一张图像不同,这就是为什么可能会出现一点点差异。
在测试集中,它们的图像多于验证集,这可能是原因之一。因为图像越多,预测错误的风险就越大。例如 90% 的准确率 我的模型正确预测了 100 个中的 90 个,但是如果我将图像样本增加到 1000 个,我的模型可能会在
上正确预测(850、800 或 900)个图像 1000 个