如果减少损失意味着模型改进,为什么准确率没有增加?

人工智能 深度学习 分类 训练 目标函数
2021-10-28 20:18:57

问题陈述

我已经构建了一个分类器来对包含 n 个样本和四类数据的数据集进行分类。为此,我使用了预训练的 VGG-19、预训练的 Alexnet 甚至 LeNet(带有交叉熵损失)。但是,我只是更改了 softmax 层的架构并为此放置了四个神经元(因为我的数据集仅包含四个类)。由于数据集类之间有惊人的相似之处,这个分类器无法对它们进行分类,我被迫使用其他方法。在训练部分,经过一些 epoch 后,损失从大约 7 减少到大约 1.2,但准确度没有变化,它被冻结在 25%(随机精度)。在最好的时期,准确率刚刚达到接近 27%,但完全不稳定。

问题

如何合理?如果减少损失意味着模型改进,为什么准确率没有增加?损失如何可能减少接近 6 个点(大约从 7 到 1),但准确性却没有任何变化?

2个回答

损失减少意味着模型改进,它不会在错误的设置中,随机选择产生最小的损失。所以这是一些严重的设置错误。你有什么课?我最近还尝试了一个编码层太窄的编码器——它只是用平均值平衡输出,导致这种状态的损失最小。

重要的是要记住损失的确切测量值,并记住一些典型值。

交叉熵损失为Ex,yp[logq(y|x)], 在哪里p是数据分布和q是模型分布。关于损失的几点:

  • 它是非负的,在范围内[0,).
  • 随机预测(假设平衡类)给出的损失等于logk.

在您有四个类的情况下,随机分类器的损失是log41.39. 因此,您的模型发生的事情的故事可能是最初(由于初始化等)它预测了高但错误的置信度,例如为某些类提供 99% 的概率。这会产生非常高的损失,但经过一段时间的训练后,它会通过预测所有示例的 25% 将其损失减少到略低于随机损失。