我知道这已经被问过一百次了,但是,我无法找到一个问题(和一个答案)分别真正回答了我想知道的内容,并以我能够理解的方式解释了它。所以,我试图重新表述这个问题......
使用神经网络时,您通常将数据集分为三个部分:
- 训练集
- 验证集
- 测试集
我知道您使用训练集来训练网络,并且使用测试集来验证它的学习效果:通过测量网络在测试集上的表现,您知道实际情况时会发生什么稍后使用它。到现在为止还挺好。
现在,模型具有超参数,除了权重之外,还需要对其进行调整。如果你改变这些,当然,你会得到不同的结果。这是验证集在所有解释中发挥作用的地方:
- 使用训练集进行训练
- 使用验证集验证模型的执行情况
- 对许多超参数不同的变体重复此操作(或从一开始就并行执行)
- 最后,选择一个并使用测试集验证其性能
现在,我的问题是:为什么我需要步骤 2 和 3?我也可以并行训练我的模型的多个版本,然后针对测试集运行所有版本,看看哪个表现最好,然后使用这个。
所以,换句话说:如果我可以直接使用测试集来比较模型变体,我为什么要使用验证集呢?我的意思是,无论哪种方式,我都需要训练多个版本。这样做有什么好处?
可能,它有一些含义,可能我错了,但我不知道是什么。有什么提示吗?