【问题标题】:Sudden drop in validation accuracy during training训练期间验证准确率突然下降
【发布时间】:2022-02-12 20:01:37
【问题描述】:

当我训练我的神经网络时,在第 8 个 epoch 期间验证准确度突然下降,这是什么意思?

Train for 281 steps, validate for 24 steps Epoch 1/10 281/281 [==============================] - 106s 378ms/step - loss: 1.5758 - accuracy: 0.8089 - val_loss: 1.8909 - val_accuracy: 0.4766 Epoch 2/10 281/281 [==============================] - 99s 353ms/step - loss: 1.5057 - accuracy: 0.8715 - val_loss: 1.7364 - val_accuracy: 0.6276 Epoch 3/10 281/281 [==============================] - 99s 353ms/step - loss: 1.4829 - accuracy: 0.8929 - val_loss: 1.5347 - val_accuracy: 0.8398 Epoch 4/10 281/281 [==============================] - 99s 353ms/step - loss: 1.4445 - accuracy: 0.9301 - val_loss: 1.5551 - val_accuracy: 0.8047 Epoch 5/10 281/281 [==============================] - 99s 353ms/step - loss: 1.4331 - accuracy: 0.9412 - val_loss: 1.5043 - val_accuracy: 0.8659 Epoch 6/10 281/281 [==============================] - 97s 344ms/step - loss: 1.4100 - accuracy: 0.9639 - val_loss: 1.5562 - val_accuracy: 0.8151 Epoch 7/10 281/281 [==============================] - 96s 342ms/step - loss: 1.4140 - accuracy: 0.9585 - val_loss: 1.4935 - val_accuracy: 0.8737 Epoch 8/10 281/281 [==============================] - 96s 341ms/step - loss: 1.4173 - accuracy: 0.9567 - val_loss: 1.7569 - val_accuracy: 0.6055 Epoch 9/10 281/281 [==============================] - 96s 340ms/step - loss: 1.4241 - accuracy: 0.9490 - val_loss: 1.4756 - val_accuracy: 0.9023 Epoch 10/10 281/281 [==============================] - 96s 340ms/step - loss: 1.4067 - accuracy: 0.9662 - val_loss: 1.4167 - val_accuracy: 0.9648

【问题讨论】:

    标签: python tensorflow machine-learning keras neural-network


    【解决方案1】:

    由于批量训练导致验证损失和训练损失突然下降;本质上,只有当我们使用整个数据集而不是批次进行训练时,收敛才会平滑。因此,看到这种下降是正常的(无论是用于训练还是用于验证)。

    • val_loss:1.4935 - val_accuracy:0.8737(上一纪元)
    • val_loss:1.7569 - val_accuracy:0.6055(带下降的纪元)
    • val_loss:1.4756 - val_accuracy:0.9023(下一个纪元)

    如果你看一下验证损失,它仅仅增加了 0.26;但是,这导致27% 准确性降低。在这种情况下,这是由于您的模型不确定何时进行预测(至少在训练的这个阶段)。

    假设您有一个二元分类模型(在苹果和橙子之间)。在每次预测中,当基本事实是苹果时,网络51% 确信图像是苹果。我们有 ground_truth 苹果,正如 Keras 在幕后所做的那样,默认置信度阈值为 50%。那么所有的预测都是好的,你有一个很好的准确度。

    然而,现在是“有问题的”时代。由于在另一轮训练之后神经网络的权重值发生了变化,当您在验证数据集上进行预测时,您对每个 ground_truth 苹果的置信度为48-49%,同样,由于阈值是50%,你得到的准确度比前一个时代差得多。

    正如您现在可以从前面的解释中推断的那样,您正在经历的这种特殊情况不会对损失产生太大影响,而是会影响准确性。它不会对反向传播期间的损失产生太大影响,因为在计算损失时49%51% 之间的置信度预测差异并不是整体损失的非常显着的差异(如您在案例中看到的那样,只有0.26%)。最后,即使在“上一个时代”,当模型正确预测一个苹果时,神经网络也不是那么自信,例如只产生一个苹果的51%置信度,而不是95%

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-07
      • 2017-11-12
      • 2023-03-17
      • 2018-05-17
      • 2020-03-28
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多