培训期间验证准确性突然下降

时间:2020-03-15 09:50:36

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

当我训练我的神经网络时,第8个时期的验证准确性突然下降了?

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

1 个答案:

答案 0 :(得分:1)

由于分批训练,导致验证损失和训练损失突然下降;从本质上讲,仅当我们使用整个数据集而不是批次训练时,收敛才是平滑的。因此,看到这样的下降是正常的(既用于训练又用于验证)。

  • 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%。