CNN分类中的验证损失减少和验证准确性下降

时间:2019-07-16 09:10:37

标签: machine-learning keras deep-learning classification loss-function

Im训练分为2类(是否从比例尺图像中生成鱼)。数据集不平衡。生成的比例只有5%。

我检查了每个训练/验证/测试集中有多少条产卵的鱼,但是有9073张图像。分成70/15/15%。然后我在第2代中观察到val_loss降低而val_acc降低。那怎么可能?

我正在使用Keras。该网络是github.com/qubvel的EfficientNetB4。

1600/1600 [==============================] - 1557s 973ms/step - loss: 1.3353 - acc: 0.6474 - val_loss: 0.8055 - val_acc: 0.7046

Epoch 00001: val_loss improved from inf to 0.80548, saving model to ./checkpoints_missing_loss2/salmon_scale_inception.001-0.81.hdf5
Epoch 2/150
1600/1600 [==============================] - 1508s 943ms/step - loss: 0.8013 - acc: 0.7084 - val_loss: 0.6816 - val_acc: 0.6973

Epoch 00002: val_loss improved from 0.80548 to 0.68164, saving model to ./checkpoints_missing_loss2/salmon_scale_inception.002-0.68.hdf5

编辑:这是另一个示例-仅1010张图像,但平衡-50/50。

Epoch 5/150
1600/1600 [==============================] - 1562s 976ms/step - loss: 0.0219 - acc: 0.9933 - val_loss: 0.2639 - val_acc: 0.9605

Epoch 00005: val_loss improved from 0.28715 to 0.26390, saving model to ./checkpoints_missing_loss2/salmon_scale_inception.005-0.26.hdf5
Epoch 6/150
1600/1600 [==============================] - 1565s 978ms/step - loss: 0.0059 - acc: 0.9982 - val_loss: 0.4140 - val_acc: 0.9276

Epoch 00006: val_loss did not improve from 0.26390
Epoch 7/150
1600/1600 [==============================] - 1561s 976ms/step - loss: 0.0180 - acc: 0.9941 - val_loss: 0.2379 - val_acc: 0.9276

和val_loss以及val_acc减小。

1 个答案:

答案 0 :(得分:1)

如果您有这样一个不平衡的数据集,则模型首先将所有内容归类为多数类,从而获得相对较高的准确性,但是所有概率均分配给多数类。原因是因为反向传播路径很短,所以可以很快了解最终偏差。

在训练的后期阶段,模型基本上找到了不按多数类别对输入进行分类的原因。此时,模型开始出现错误,精度下降,但概率分布更均匀,因此从损失的角度来看,误差较小。

对于这样一个不平衡的数据集,我宁愿跟踪F度量而不是准确性。

相关问题