我正在学习和尝试使用神经网络,并且希望就以下问题征询更有经验的人的意见:

当我在Keras中训练自动编码器(“mean_squared_error”损失函数和SGD优化器)时,验证损失逐渐减少。并且验证准确性正在提高。到现在为止还挺好。

但是,过了一会儿,损耗不断降低,但精度突然下降到低得多的低水平。

  • 是“正常”或预期的行为,它的准确性上升得很快并保持很高而又突然回落了吗?
  • 即使验证损失仍在减少,我仍应以最大的准确性停止训练吗?换句话说,使用val_acc或val_loss作为度量标准来监视是否提前停止?

  • 查看图片:

    损失:(绿色= val,蓝色=火车)
    neural-network - 我应该使用损失或准确性作为提前停止指标吗?-LMLPHP

    精度:(绿色= val,蓝色=火车)
    neural-network - 我应该使用损失或准确性作为提前停止指标吗?-LMLPHP

    更新:
    以下评论为我指明了正确的方向,我想我现在对此有了更好的了解。如果有人可以确认以下内容是正确的,那就太好了:
  • 精度度量标准度量y_pred == Y_true的百分比,因此仅对分类有意义。
  • 我的数据是真实和二进制特征的组合。精度图上升非常陡峭然后回落,而损耗继续减少的原因是因为在纪元5000左右,网络可能正确地预测了二元特征的+/- 50%。当训练继续进行时,在时期12000左右,对真实特征和二进制特征的预测一起得到了改善,因此损失减少了,但是仅对二进制特征的预测就不太正确了。因此,精度下降,而损耗减小。
  • 最佳答案

    如果预测是实时的,或者数据是连续的而不是离散的,则使用MSE(均方误差),因为这些值是实时的。
    但是在离散值(即分类或聚类)的情况下,由于给出的值仅是0或1,因此使用准确性。因此,此处的MSE概念将不适用,而是使用精度=误差值/总值* 100。

    关于neural-network - 我应该使用损失或准确性作为提前停止指标吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37141636/

    10-12 16:43