如何解释损失和准确性的增加

Posted

技术标签:

【中文标题】如何解释损失和准确性的增加【英文标题】:How to interpret increase in both loss and accuracy 【发布时间】:2017-04-16 02:29:39 【问题描述】:

我已经使用 tensorflow 运行了深度学习模型(CNN)。在这个时代,我多次观察到损失和准确性都增加了,或者两者都减少了。我的理解是两者总是成反比的。什么情况会同时增加或减少。

【问题讨论】:

你是指验证集损失和准确率还是训练集损失和准确率。 【参考方案1】:

随着训练过程的进行,损失会减少,除了小批量梯度下降和/或 dropout 等正则化技术(引入随机噪声)引入的一些波动。

如果损失减少,说明训练过程进展顺利。

(我想是验证)准确度,相反,它衡量模型的预测有多好。

如果模型正在学习,则准确度会提高。相反,如果模型过度拟合,准确度就会停止增加,甚至会开始下降。

如果损失减少并且准确率降低,则您的模型过度拟合。

如果损失增加并且准确度也增加是因为您的正则化技术运行良好并且您正在解决过度拟合问题。只有当损失开始减少而准确性继续增加时,这才是正确的。 否则,如果损失不断增长,您的模型会出现发散,您应该寻找原因(通常您使用的学习率值太高)。

【讨论】:

我的经验是在训练的早期步骤中 val_loss 增加而 val_acc 减少,我认为模型根本没有改进。是否有从网络架构问题中辨别数据集症状的指南(或当前流)? AFAIK 没有完整的提示列表来“调试”训练阶段。不过,这可能是我下一篇博文的一个想法 这个解释与我对准确性的理解不符。请参阅@nimi 的答案,或此博客文章:jussihuotari.com/2018/01/17/…【参考方案2】:

我认为评分最高的答案不正确。

我假设您在谈论交叉熵损失,可以将其视为“惊喜”的衡量标准。

在训练数据上同时增加/减少损失和准确率并不能告诉您模型是否过度拟合。这只能通过比较验证数据与训练数据的损失/准确性来确定。

如果损失和准确率都在下降,这意味着您的模型对其正确预测变得更有信心,或对其不正确预测的信心降低,或两者兼而有之,因此损失减少。然而,总体上它也做出了更多不正确的预测,因此准确性下降。反之亦然,如果两者都在增加。我们只能这么说。

【讨论】:

【参考方案3】:

我想在这里为所有正在努力进行模型训练的人添加一个可能的选项。

如果您的验证数据有点脏,您可能会在训练开始时遇到验证损失和准确度一样低的情况,并且您训练网络越多,准确度会随着损失的增加而增加.之所以会发生,是因为它发现了你脏数据的可能异常值,并在那里获得了超高的损失。因此,您的准确率会随着正确猜测更多数据而提高,但损失也会随之增加。

【讨论】:

【参考方案4】:

这正是我根据损失和准确性背后的数学认为的,

注意:-

我希望您的数据是分类的

你的模型输出:-

[0.1,0.9,0.9009,0.8](用于计算损失)

最大输出:-

[0,0,1,0](用于计算 acc )

预期输出:-

[0,1,0,0]

让我们澄清一下 loss 和 acc 计算的内容:

Loss :- y 和 ypred 的整体误差

Acc :- 只要 y 和 maxed(ypred) 相等

所以总的来说,我们的模型几乎成功了,损失很低

但是在最大输出中没有看到整体,只是它们应该完全匹配,

如果它们完全匹配:-

1

其他:

0

因此导致精度也很低

尝试检查模型的mae

移除正则化

检查您是否使用正确的损失

【讨论】:

【参考方案5】:

你应该在训练过程中检查你的班级指数(训练和有效)。它可能以不同的方式排序。我在 colab 中遇到了这个问题。

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review

以上是关于如何解释损失和准确性的增加的主要内容,如果未能解决你的问题,请参考以下文章

验证损失在 3 个 epoch 后增加,但验证准确度不断增加

验证准确率提高,但验证损失也在增加

为啥损失减少而准确率却没有增加? PyTorch

验证损失不断减少,而训练损失在 3 个 epoch 后开始增加

培训减少,验证 - 增加。培训损失,验证损失减少

验证损失减少,然后增加,然后再次减少