我正在使用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
,这是意料之中的