首页 文章

损失和验证准确度之间的关系是什么?

提问于
浏览
0

我正在尝试通过微调VGG16网络(在ImageNet上预训练)来进行传输学习,以在相当小的数据集(11000个图像,200个类别)上进行图像分类 . 我实际上只训练修改过的VGG16网络的最后3层FC层 . 我在3个FC层中的两个上添加了丢失,概率为0.5 .

所以,当我在这个网络上训练时,除了用原始作者给出的VGG_MEAN值减去图像中的每个通道之外,我没有做任何花哨的预处理 .

所以事情是训练似乎进展顺利,损失大幅下降并稳定在一定值附近,并且我在训练了特定数量的批次后监测网络在验证集(20%的数据)上的预测准确性 . 我注意到平均验证准确度没有显示任何改进趋势 - 当我实际上希望这种情况逐渐增加时,平均验证准确度在整个培训期间波动 . 我已确保在推理时不要重新调整验证数据 .

我已经尝试降低学习率,微调更少的层但无济于事 . 如果丢失是表示该模型实际学习的替代品,那么为什么验证准确性存在差异?

(1)是因为我开始时只有很少的训练数据吗? (2)原始的Imagenet数据集有1000个类,但我的分类任务更细粒度,并且具有原始ImageNet类数量的1/5(想想对鸟类物种或不同灵长类动物进行分类) . 这可能是个问题吗?我想从ppl那里获得一些意见和反馈,他们有一些解决这类问题的经验 .

2 回答

  • 0

    我知道(训练)损失的 Value 与列车准确性有很大关系 . 如果在训练时损失减少,训练准确性将增加 . 但是火车损失与验证准确性之间没有很强的关系 . 如果火车损失减少且验证准确性增加,那么这就是我们所期望的 . 但如果列车损失减少而验证精度下降到饱和,则可能会发生过度拟合 . 在这种情况下,应停止训练并调整一些参数,如正规化和辍学率的重量衰减 .

    因此,验证准确性不能直接替换为训练损失 . 如果可能的话,应该使用验证准确性,而不仅仅是看到学习损失的曲线 . 以上是我的理解 .

  • 0

    事实证明,我面临着“细粒度”的分类问题 . 鸟类的图像看起来非常相似,这给网络学习带来了问题 .

相关问题