Mask-R-CNN 中的测试和验证有什么区别?

What is the difference between test and validation specifically in Mask-R-CNN?

我有自己的图像数据集,使用 Mask-R-CNN 进行训练。在那里,您将数据集划分为训练、验证和测试。

我想知道验证和测试的区别。 我知道验证通常用于在每个纪元之后查看 NN 的质量。基于此,您可以了解 NN 的性能以及是否发生了过度拟合。 但我想知道神经网络是否基于验证集进行学习。

基于训练集,NN 在每张图像后学习并调整每个神经元以减少损失。在 NN 完成学习后,我们使用测试集来查看我们的 NN 对于新的未见过的图像到底有多好。

但是基于验证集的 Mask-R-CNN 到底发生了什么?验证集只是为了看结果吗?还是会根据验证结果调整一些参数来避免过拟合?即使是这样,验证集对参数的影响有多大?神经元本身会不会被调整?

如果影响非常非常小,那么我会选择与测试集相等的验证集,因为我没有很多图像(800)。

所以基本上我想知道 Mask-R-CNN 中测试和验证之间的区别,即验证集如何影响神经网络以及影响神经网络的程度。

该模型不学习验证集。验证集仅用于给出任何时期的泛化误差的近似值,但至关重要的是,还用于超参数优化。所以我可以迭代几个不同的超参数配置并评估验证集上的准确性。

然后我们根据验证集的准确率选择最好的模型后,我们就可以根据测试集计算测试误差了。理想情况下,测试集和验证集的准确性之间没有太大差异。如果您迭代许多不同的超参数,有时您的模型基本上可以 'overfit' 到验证集。

如果您有大量数据,那么在验证集评估之后保留另一组(测试集)进行评估是一种奢侈。很多时候,您可能缺少足够的标记数据,甚至值得保留一个单独的测试集。

最后,这些东西并不是 Mask RCNN 特有的。验证集从不影响模型的训练,即权重或偏差。验证集与测试集一样,纯粹用于评估目的。