如何解释损失和准确性的增加
How to interpret increase in both loss and accuracy
我有 运行 个使用 tensorflow 的深度学习模型 (CNN)。在这个纪元中,我多次观察到损失和准确度都增加了,或者两者都减少了。我的理解是两者总是成反比的。两者同时增加或减少可能是什么情况。
除了小批量梯度下降 and/or 正则化技术(如 dropout(引入随机噪声))引入的一些波动外,损失会随着训练过程的进行而减少。
如果损失减少,则训练过程进展顺利。
(我想是验证)准确度,相反,它衡量的是模型预测的好坏。
如果模型正在学习,准确度会提高。相反,如果模型过度拟合,准确性会停止增加,甚至会开始下降。
如果损失减少并且准确率下降,则您的模型过度拟合。
如果损失增加并且准确度也增加是因为您的正则化技术运作良好并且您正在解决过度拟合问题。只有当损失开始减少而准确度继续增加时,这才是正确的。
否则,如果损失继续增长,您的模型就会发散,您应该寻找原因(通常是您使用的学习率值过高)。
我认为 top-rated 答案不正确。
我假设你在谈论 cross-entropy 损失,这可以被认为是 'surprise' 的衡量标准。
训练数据上的损失和准确性 increasing/decreasing 同时告诉您模型是否过度拟合。这只能通过比较 loss/accuracy 验证数据与训练数据来确定。
如果损失和准确性都在下降,这意味着您的模型对正确预测的信心越来越大,或者对错误预测的信心越来越小,或者两者兼而有之,因此损失减少了。但是,它总体上也做出了更多不正确的预测,因此准确性下降。如果两者都在增加,则反之亦然。这就是我们所能说的。
我想在这里为所有正在努力进行模型训练的人添加一个可能的选项。
如果你的验证数据有点脏,你可能会在训练开始时体验到验证损失和准确率都很低,并且你训练网络越多,准确率随着损失的增加而增加旁边。之所以会发生,是因为它找到了你脏数据的可能异常值,并在那里得到了超高的损失。因此,你的准确率会随着它猜对的数据越来越多而增加,但损失也会随之增加。
这正是我根据损失和准确性背后的数学得出的结论,
注:-
我希望你的数据是分类的
你的模型输出:-
[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
删除正则化
检查你是否使用了正确的损失
您应该在训练过程中检查您的 class 索引(训练和有效)。它可能以不同的方式排序。我在 colab 中遇到了这个问题。
我有 运行 个使用 tensorflow 的深度学习模型 (CNN)。在这个纪元中,我多次观察到损失和准确度都增加了,或者两者都减少了。我的理解是两者总是成反比的。两者同时增加或减少可能是什么情况。
除了小批量梯度下降 and/or 正则化技术(如 dropout(引入随机噪声))引入的一些波动外,损失会随着训练过程的进行而减少。
如果损失减少,则训练过程进展顺利。
(我想是验证)准确度,相反,它衡量的是模型预测的好坏。
如果模型正在学习,准确度会提高。相反,如果模型过度拟合,准确性会停止增加,甚至会开始下降。
如果损失减少并且准确率下降,则您的模型过度拟合。
如果损失增加并且准确度也增加是因为您的正则化技术运作良好并且您正在解决过度拟合问题。只有当损失开始减少而准确度继续增加时,这才是正确的。 否则,如果损失继续增长,您的模型就会发散,您应该寻找原因(通常是您使用的学习率值过高)。
我认为 top-rated 答案不正确。
我假设你在谈论 cross-entropy 损失,这可以被认为是 'surprise' 的衡量标准。
训练数据上的损失和准确性 increasing/decreasing 同时告诉您模型是否过度拟合。这只能通过比较 loss/accuracy 验证数据与训练数据来确定。
如果损失和准确性都在下降,这意味着您的模型对正确预测的信心越来越大,或者对错误预测的信心越来越小,或者两者兼而有之,因此损失减少了。但是,它总体上也做出了更多不正确的预测,因此准确性下降。如果两者都在增加,则反之亦然。这就是我们所能说的。
我想在这里为所有正在努力进行模型训练的人添加一个可能的选项。
如果你的验证数据有点脏,你可能会在训练开始时体验到验证损失和准确率都很低,并且你训练网络越多,准确率随着损失的增加而增加旁边。之所以会发生,是因为它找到了你脏数据的可能异常值,并在那里得到了超高的损失。因此,你的准确率会随着它猜对的数据越来越多而增加,但损失也会随之增加。
这正是我根据损失和准确性背后的数学得出的结论,
注:-
我希望你的数据是分类的
你的模型输出:-
[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
删除正则化
检查你是否使用了正确的损失
您应该在训练过程中检查您的 class 索引(训练和有效)。它可能以不同的方式排序。我在 colab 中遇到了这个问题。