损失、准确率、验证损失、验证准确率之间有什么区别?

19

在每个时期结束时,例如我会得到以下输出:

Epoch 1/25
2018-08-06 14:54:12.555511: 
2/2 [==============================] - 86s 43s/step - loss: 6.0767 - acc: 0.0469 - val_loss: 4.1037 - val_acc: 0.2000
Epoch 2/25
2/2 [==============================] - 26s 13s/step - loss: 3.6901 - acc: 0.0938 - val_loss: 2.5610 - val_acc: 0.0000e+00
Epoch 3/25
2/2 [==============================] - 66s 33s/step - loss: 3.1491 - acc: 0.1406 - val_loss: 2.4793 - val_acc: 0.0500
Epoch 4/25
2/2 [==============================] - 44s 22s/step - loss: 3.0686 - acc: 0.0694 - val_loss: 2.3159 - val_acc: 0.0500
Epoch 5/25
2/2 [==============================] - 62s 31s/step - loss: 2.5884 - acc: 0.1094 - val_loss: 2.4601 - val_acc: 0.1500
Epoch 6/25
2/2 [==============================] - 41s 20s/step - loss: 2.7708 - acc: 0.1493 - val_loss: 2.2542 - val_acc: 0.4000
.
.
.
.

有人能解释一下损失、准确率、验证损失和验证准确率之间的区别吗?

3个回答

34

当我们在拟合深度学习模型时,将validation_split作为拟合参数时,它会将数据每个epoch分成两部分,即训练数据和验证数据。它使用训练数据来训练模型,并通过检查其损失和准确性来验证模型。

通常情况下,随着每个epoch的增加,损失会降低,准确性会提高。但是,对于val_loss和val_acc,可能会出现多种情况:

  1. val_loss开始上升,val_acc开始下降(意味着模型只是死记硬背值而不是学习)

  2. val_loss开始上升,val_acc也上升(可能是过拟合或在输出层使用softmax的情况下概率值不同的情况)

  3. val_loss开始下降,val_acc开始上升(正确,意味着模型构建正在学习并正常工作)

这里还有一个链接供参考,其中提供了更详细的描述。谢谢。 如何解释机器学习模型的“损失”和“准确性”

我曾经在https://www.javacodemonk.com/difference-between-loss-accuracy-validation-loss-validation-accuracy-when-training-deep-learning-model-with-keras-ff358faa上解释过,在使用Keras训练深度学习模型时,损失、准确率、验证损失和验证准确率之间有什么区别。


第四种可能性怎么样:val_loss在减少,但val_METRIC没有改善。这是我在实验中看到的。 - Alireza Amani

3
在您的model.compile函数中,您定义了一个损失函数和一个度量函数。
"loss"是您的损失函数的值(由于您未显示代码,因此不知道具体是什么) "acc"是您的度量函数的值(在这种情况下为准确性) val_*表示该值对应于您的验证数据。
只有损失函数用于更新模型参数,准确性仅用于查看模型表现如何。
您应该努力将损失最小化并将准确性最大化。 理想情况下,您的验证数据结果和训练数据结果之间的差异应该相似(尽管预计会有一些差异)。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接