机器学习——在整个训练神经网络的过程中,数据集的验证误差是否会高于测试误差



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

将注释移动到答案;修改我之前的答案似乎不对

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

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

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

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

在此视图中,您应该期望在大多数情况下valid_y_misclass上的错误大于train_y_miscalss

关于图像集的讨论请参见这里。


编辑:使用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,这是意料之中的

最新更新