在训练神经网络的整个过程中,数据集的验证误差能否高于测试误差?

Can the validation error of a dataset be higher than the test error during the whole process of training a neural network?

我正在使用 pylearn2 库训练卷积神经网络,在所有 ephocs 期间,我的验证错误始终高于测试错误。可能吗?如果有,是在什么情况下?

训练集是一组输入网络的图像,在另一端计算误差,然后根据这些误差调整网络参数。 验证集是一组输入网络的图像,计算误差但不调整网络参数。

基本上,您使用验证来查看网络在未针对其进行训练的图像上的表现如何。

在这种情况下,在大多数情况下,valid_y_misclass 的错误率应该高于 train_y_miscalss

有关图像集的讨论,请参阅 here


编辑:使用 pylearn2 符号的示例

训练集的大小:700 个例子;有效集的大小:300 个例子

经过一些训练(比如 5 个 epoch)后,网络在训练集中 700 个示例中确定了 650 个,在有效集中 300 个示例中确定了 200 个。

结果,5个epoch后:

train_y_misclass = (700 - 650) / 700 = 0.07142857142
valid_y_misclass = (300 - 200) / 300 = 0.33333333333

valid_y_misclass > train_y_misclass 这是意料之中的事情。

将评论移至答案;修改我之前的答案似乎是错误的

完整的数据集可能没有正确打乱,因此测试集中的示例可能更容易分类。

使用在训练/有效/测试子集中重新分配的示例再次进行实验将显示是否是这种情况。