验证损失永不减少

时间:2018-09-06 04:45:07

标签: tensorflow

我正在使用TensorFlow训练神经网络进行回归,并在损失曲线上得到奇怪的行为。任务是在将动作应用于对象时预测对象在图像中的运动。因此,网络获取图像和动作,然后输出动作。

图像输入之后是三个CNN层,并行地,动作输入之后是一个密集层。然后将它们连接起来,并在输出之前紧接两个密集层。所有层都有ReLU。数据归一化为具有零均值和标准差为一。

下面是训练曲线:

enter image description here

一个奇怪的行为是,尽管训练损失会随着时间的流逝而减少,但验证损失却从一开始就增加了。通常,当训练曲线下降到远低于验证曲线时,这表明过度拟合。但是,就我而言,验证曲线实际上根本不会减小。通常,当验证曲线下降然后再次上升时,就可以诊断出过度拟合。

相反,就好像网络从第一个纪元开始就过度拟合。实际上,验证曲线似乎遵循与训练曲线相反的轨迹。训练预测的每一项改进都会对验证预测产生相反的影响。

我还尝试过更改步长大小(我使用的是Adam,在此图中,步长为0.0001,然后在纪元100减小到0.00001)。我的网络在所有密集层上使用了压差。我还尝试减少网络中的参数数量以防止过度拟合,但是会发生相同的行为。我的批次大小为50。

该行为的诊断可能是什么?网络是否过拟合,还是其他原因?如果过拟合,那么为什么我减少参数数量和增加辍学的尝试仍然会产生同样的效果?安迪(Andy)为什么过拟合会立即发生,而验证损失却丝毫没有减少?

谢谢!

0 个答案:

没有答案