我已经使用 tensorflow 运行了深度学习模型(CNN)。在这个时代,我多次观察到损失和准确性都增加了,或者两者都减少了。我的理解是两者总是成反比的。可能是同时增加或减少的情况。
5 回答
损失随着训练过程的进行而减少,除了小批量梯度下降和/或正则化技术(如 dropout 引入随机噪声)引入的一些波动。
如果损失减少,则训练过程进展顺利。
相反,(我想是验证)准确性是衡量模型预测有多好的指标。
如果模型正在学习,则准确性会提高。相反,如果模型过度拟合,准确度就会停止增加,甚至会开始下降。
如果损失减少并且准确性降低,则您的模型过度拟合。
如果损失增加并且准确度也增加,是因为您的正则化技术运行良好并且您正在解决过度拟合问题。只有当损失开始减少而准确度继续增加时,这才是正确的。否则,如果损失继续增长,您的模型会发散,您应该寻找原因(通常您使用的学习率值太高)。
我认为评分最高的答案是不正确的。
我假设您在谈论交叉熵损失,可以将其视为“惊喜”的衡量标准。
训练数据上的损失和准确性同时增加/减少不会告诉您模型是否过度拟合。这只能通过比较验证与训练数据的损失/准确性来确定。
如果损失和准确率都在下降,这意味着您的模型对其正确预测变得更有信心,或者对其不正确预测的信心降低,或两者兼而有之,因此损失减少。但是,它总体上也做出了更多不正确的预测,因此准确性下降。反之亦然,如果两者都在增加。这就是我们所能说的。
我想在这里为所有正在努力进行模型训练的人添加一个可能的选项。
如果您的验证数据有点脏,您可能会在训练开始时体验到验证损失和准确度一样低,并且您训练网络越多,准确度会随着损失的增加而增加。之所以会发生,是因为它发现了你的脏数据可能的异常值,并在那里获得了超高的损失。因此,你的准确率会随着它猜对更多数据而增加,但损失也会随之增加。
这正是我认为基于损失和准确性背后的数学,
笔记 :-
我希望您的数据是分类的
您的模型输出:-
[0.1,0.9,0.9009,0.8](用于计算损失)
最大输出:-
[0,0,1,0](用于计算 acc )
预期输出:-
[0,1,0,0]
让我们澄清一下 loss 和 acc 计算的内容:
损失:- y 和 ypred 的总体误差
Acc :- 只要 y 和 maxed(ypred) 相等
所以总的来说,我们的模型几乎做到了,损失很低。
但是在最大输出中,没有看到它们应该完全匹配,
如果它们完全匹配:-
1
别的:
0
从而导致精度也很低
尝试检查模型的mae
去除正则化
检查您是否使用正确的损失
您应该在培训过程中检查您的班级指数(培训和有效)。它可能以不同的方式排序。我在colab中有这个问题。