特别是在Mask-R-CNN中测试和验证之间有什么区别?



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

我想知道验证和测试之间的区别。 我知道验证通常用于查看每个纪元后 NN 的质量。基于此,您可以看到 NN 有多好以及是否发生了过度拟合。 但我想知道 NN 是否根据验证集进行学习。

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

但是,基于验证集的Mask-R-CNN究竟发生了什么?验证集是否仅用于查看结果?还是会根据验证结果调整一些参数以避免过度拟合?即使如此,验证集对参数的影响有多大?神经元本身会被调整吗?

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

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

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

然后,在我们根据验证集精度选择最佳模型后,我们可以根据测试集计算测试误差。理想情况下,测试集和验证集精度之间没有太大差异。有时,如果您迭代许多不同的超参数,您的模型基本上可以"过度拟合"到验证集。

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

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

最新更新