Neural network 我应该使用损失或准确度作为提前停止指标吗?

Neural network 我应该使用损失或准确度作为提前停止指标吗?,neural-network,deep-learning,keras,autoencoder,Neural Network,Deep Learning,Keras,Autoencoder,我正在学习和试验神经网络,希望有更多经验的人对以下问题发表意见: 当我在Keras(“均方误差”损失函数和SGD优化器)中训练一个自动编码器时,验证损失逐渐减少。验证的准确度也在提高。到目前为止还不错 然而,一段时间后,损失不断减少,但精度突然下降到一个更低的水平 是“正常”还是预期的行为,即准确度上升得非常快,并保持在较高水平,然后突然回落 即使验证损失仍在减少,我是否应该停止以最大精度进行培训?换句话说,使用val_acc或val_loss作为指标来监控提前停止 请参见图片: 损失:(绿

我正在学习和试验神经网络,希望有更多经验的人对以下问题发表意见:

当我在Keras(“均方误差”损失函数和SGD优化器)中训练一个自动编码器时,验证损失逐渐减少。验证的准确度也在提高。到目前为止还不错

然而,一段时间后,损失不断减少,但精度突然下降到一个更低的水平

  • 是“正常”还是预期的行为,即准确度上升得非常快,并保持在较高水平,然后突然回落
  • 即使验证损失仍在减少,我是否应该停止以最大精度进行培训?换句话说,使用val_acc或val_loss作为指标来监控提前停止
请参见图片:

损失:(绿色=val,蓝色=列车]

准确度:(绿色=val,蓝色=train)

更新: 下面的评论为我指明了正确的方向,我想我现在更能理解它。如果有人能确认以下内容是正确的,那就太好了:

  • 准确度度量度量y_pred==y_true的百分比,因此仅对分类有意义

  • 我的数据是实数和二进制特征的组合。精度曲线上升非常陡峭,然后又下降,而损失持续下降的原因是,在5000年前后,网络可能正确预测了+/-50%的二进制特征。在12000年前后,继续训练时,预测实数和二进制特征一元特征加在一起改善了,因此损失减少,但单独预测二元特征的正确性稍差。因此,准确度下降,而损失减少


如果预测是实时的,或者数据是连续的而不是离散的,则使用MSE(均方误差),因为这些值是实时的


但在离散值的情况下(即分类或聚类使用准确度,因为给出的值仅为0或1。因此,这里的MSE概念不适用,而是使用准确度=无错误值/总值*100。

您使用MSE进行分类任务吗?这是一个有趣的图。虽然我没有使用自动编码器的经验,但我想知道这是否只是some过度装配的极端情况。您是否尝试过降低网络复杂性(更小或更严格的规范化)(也许还可以使用增加的验证子集进行检查?)我可以想象,它看起来会有所不同。@MarcinMożejko:我使用的是mse,但它是自动编码器,而不是分类。具体取决于计算的损失(不知道它们是否总是一样的;MSE和精确度听起来不同)。调节也有区别(我认为验证会停用辍学和l1/l2调节)。如果计算量不太大,我会尝试这些更改。一般来说:在调试类似的东西时,可以使用较小的数据集。我还认为,这个图看起来很奇怪(向上、稳定、向下;相当对称;但我不是专家)。但总体上观察到训练损失减少(甚至单调)验证损失的增加也没什么特别的。每个太大的神经网络最终都会这样做(它会记住样本)。