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

Ale*_*Lee 3 python machine-learning neural-network keras tensorflow

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

Tim*_*lin 5

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

  • 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%并不是总体损失中非常显着的差异(正如您在案例中看到的那样,只有 a 0.26%)。最后,即使在“上一个时代”,当模型正确预测苹果时,神经网络也不是那么非常有信心,因为只产生51%对苹果的信心,而不是95%例如。