训练过程中验证准确率突然下降

我在训练神经网络时,验证准确率在第8个epoch突然下降,这意味着什么?

Train for 281 steps, validate for 24 stepsEpoch 1/10281/281 [==============================] - 106s 378ms/step - loss: 1.5758 - accuracy: 0.8089 - val_loss: 1.8909 - val_accuracy: 0.4766Epoch 2/10281/281 [==============================] - 99s 353ms/step - loss: 1.5057 - accuracy: 0.8715 - val_loss: 1.7364 - val_accuracy: 0.6276Epoch 3/10281/281 [==============================] - 99s 353ms/step - loss: 1.4829 - accuracy: 0.8929 - val_loss: 1.5347 - val_accuracy: 0.8398Epoch 4/10281/281 [==============================] - 99s 353ms/step - loss: 1.4445 - accuracy: 0.9301 - val_loss: 1.5551 - val_accuracy: 0.8047Epoch 5/10281/281 [==============================] - 99s 353ms/step - loss: 1.4331 - accuracy: 0.9412 - val_loss: 1.5043 - val_accuracy: 0.8659Epoch 6/10281/281 [==============================] - 97s 344ms/step - loss: 1.4100 - accuracy: 0.9639 - val_loss: 1.5562 - val_accuracy: 0.8151Epoch 7/10281/281 [==============================] - 96s 342ms/step - loss: 1.4140 - accuracy: 0.9585 - val_loss: 1.4935 - val_accuracy: 0.8737Epoch 8/10281/281 [==============================] - 96s 341ms/step - loss: 1.4173 - accuracy: 0.9567 - val_loss: 1.7569 - val_accuracy: 0.6055Epoch 9/10281/281 [==============================] - 96s 340ms/step - loss: 1.4241 - accuracy: 0.9490 - val_loss: 1.4756 - val_accuracy: 0.9023Epoch 10/10281/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 (前一个epoch)
  • val_loss: 1.7569 – val_accuracy: 0.6055 (下降的epoch)
  • val_loss: 1.4756 – val_accuracy: 0.9023 (下一个epoch)

如果你观察验证损失,它只是增加了0.26;然而,这导致了你的准确率下降了27%。在这种情况下,这是因为你的模型在进行预测时(至少在训练的这个阶段)没有把握。

想象一下,你有一个二分类模型(区分苹果和橙子)。在每次预测中,当真实标签是苹果时,网络对图像是苹果的信心只有51%。我们有真实的苹果标签,而Keras在幕后默认的信心阈值是50%。那么所有的预测都是正确的,你会有很好的准确率。

然而,现在到了“有问题的”epoch。由于经过另一个epoch的训练后,你的神经网络权重值发生了变化,当你在验证数据集上进行预测时,你对每个真实苹果标签的信心只有48-49%,同样,由于阈值是50%,你得到的准确率比前一个epoch要差得多。

从前面的解释中你可以推断,你正在经历的这种特殊情况对损失的影响不大,但对准确率的影响很大。在反向传播过程中,它对损失的影响不大,因为在计算损失时,信心预测从49%51%的差异并不是一个非常显著的差异(如你所见,在你的案例中,只有0.26%)。最终,即使在“前一个epoch”,当模型正确预测出苹果时,神经网络的信心也不是那么高,只是对苹果的信心只有51%,而不是95%那样高。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注