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

Python 培训期间验证准确性突然下降,python,tensorflow,machine-learning,keras,neural-network,Python,Tensorflow,Machine Learning,Keras,Neural Network,当我训练我的神经网络时,在第八个纪元期间,验证精度突然下降,这意味着什么 训练281个步骤,验证24个步骤 纪元1/10 281/281[==============================================================================-106s 378ms/步长-损耗:1.5758-精度:0.8089-val_损耗:1.8909-val_精度:0.4766 纪元2/10 281/281[=========================

当我训练我的神经网络时,在第八个纪元期间,验证精度突然下降,这意味着什么

训练281个步骤,验证24个步骤
纪元1/10
281/281[==============================================================================-106s 378ms/步长-损耗:1.5758-精度:0.8089-val_损耗:1.8909-val_精度:0.4766
纪元2/10
281/281[===============================================================-99s 353ms/步长-损耗:1.5057-精度:0.8715-val_损耗:1.7364-val_精度:0.6276
纪元3/10
281/281[============================================================-99s 353ms/步长-损耗:1.4829-精度:0.8929-val_损耗:1.5347-val_精度:0.8398
纪元4/10
281/281[============================================================-99s 353ms/步长-损耗:1.4445-精度:0.9301-val_损耗:1.5551-val_精度:0.8047
纪元5/10
281/281[===============================================================-99s 353ms/步长-损耗:1.4331-精度:0.9412-val_损耗:1.5043-val_精度:0.8659
纪元6/10
281/281[=====================================================================-97s 344ms/步长-损耗:1.4100-精度:0.9639-val_损耗:1.5562-val_精度:0.8151
纪元7/10
281/281[==================================================================-96s 342ms/步长-损耗:1.4140-精度:0.9585-val_损耗:1.4935-val_精度:0.8737
纪元8/10
281/281[==================================================================-96s 341ms/步长-损耗:1.4173-精度:0.9567-val_损耗:1.7569-val_精度:0.6055
纪元9/10
281/281[========================================================================-96s 340ms/步长-损耗:1.4241-精度:0.9490-val_损耗:1.4756-val_精度:0.9023
纪元10/10

281/281[===============================================================-96s 340ms/步-损失:1.4067-准确度:0.9662-val_损失:1.4167-val_准确度:0.9648

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

  • val_损失:1.4935-val_精度:0.8737(上一历元)
  • val_损失:1.7569-val_精度:0.6055(带下降的历元)
  • val_损失:1.4756-val_精度:0.9023(下一个历元)
如果你看一下验证损失,它只增加了0.26;然而,这导致您的准确度下降了27%。在这种情况下,这是因为您的模型在进行预测时(至少在训练的这个阶段)不确定

假设您有一个二元分类模型(介于苹果和橙子之间)。在每次预测中,当地面真相是一个苹果时,网络有51%的信心认为图像是一个苹果。我们有一个真实的苹果,就像凯拉斯在幕后所做的那样,默认的置信阈值是50%。那么所有的预测都是好的,你有很好的准确性

然而,现在是“问题”时代。由于在另一个历元的训练后,神经网络的权重值发生了变化,当您在验证数据集上进行预测时,您得到的每个地面真实值的置信度为48-49%,而且,由于阈值为50%,因此您得到的准确度比前一历元低得多

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