12

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

当我在 Keras 中训练自动编码器('mean_squared_error' 损失函数和 SGD 优化器)时,验证损失逐渐下降。并且验证准确性正在上升。到目前为止,一切都很好。

然而,一段时间后,损失不断减少,但准确率突然回落到低得多的低水平。

  • 准确率上升非常快并保持高位突然回落是“正常”还是预期的行为?
  • 即使验证损失仍在减少,我是否应该以最大准确度停止训练?换句话说,使用 val_acc 或 val_loss 作为指标来监控提前停止?

见图片:

损失:(绿色 = val,蓝色 = 火车] 在此处输入图像描述

准确度:(绿色 = val,蓝色 = 火车] 在此处输入图像描述

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

  • 准确度指标测量 y_pred==Y_true 的百分比,因此仅对分类有意义。

  • 我的数据是真实和二进制特征的组合。准确率图上升非常陡峭然后回落,而损失继续下降的原因是因为在 epoch 5000 左右,网络可能正确预测了 +/- 50% 的二进制特征。当训练继续时,在 12000 轮左右,对真实和二元特征的预测一起得到改善,因此损失减少,但单独对二元特征的预测不太正确。因此准确率下降,而损失减少。

4

1 回答 1

1

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

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

于 2017-10-15T15:12:10.820 回答