繁体   English   中英

训练期间验证准确率突然下降

[英]Sudden drop in validation accuracy during training

当我训练我的神经网络时,在第 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

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

  • val_loss: 1.4935 - val_accuracy: 0.8737 (上一纪元)
  • val_loss: 1.7569 - val_accuracy: 0.6055 (Epoch with drop)
  • 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%。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM