Loss、accuracy、validation loss、Validation accuracy 有啥区别?

Posted

技术标签:

【中文标题】Loss、accuracy、validation loss、Validation accuracy 有啥区别?【英文标题】:What is the difference between Loss, accuracy, validation loss, Validation accuracy?Loss、accuracy、validation loss、Validation accuracy 有什么区别? 【发布时间】:2019-01-13 05:55:29 【问题描述】:

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

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
.
.
.
.

谁能解释一下loss、accuracy、validation loss和validation accuracy之间的区别?

【问题讨论】:

【参考方案1】:

当我们在拟合 DL 模型时提到 validation_split 作为拟合参数时,它会将每个 epoch 的数据分成两部分,即训练数据和验证数据。 它在训练数据上训练模型,并通过检查模型的损失和准确性来验证模型在验证数据上的有效性。

通常随着每个 epoch 的增加,损失会降低,准确率会提高。但是使用 val_loss 和 val_acc,很多情况都是可能的:

    val_loss 开始增加,val_acc 开始减少(表示模型在填塞值而不是学习)

    val_loss 开始增加,val_acc 也增加。(在输出层使用 softmax 的情况下,可能是过度拟合或不同概率值的情况)

    val_loss 开始减少,val_acc 开始增加(正确,表示模型构建正在学习和工作正常)

这也是一个参考链接,其中给出了更多描述。谢谢。 How to interpret "loss" and "accuracy" for a machine learning model

我已经尝试在https://www.javacodemonk.com/difference-between-loss-accuracy-validation-loss-validation-accuracy-when-training-deep-learning-model-with-keras-ff358faa解释

【讨论】:

第四种可能性如何:val_loss 减少,但 val_METRIC 没有改善。这是我在实验中看到的。【参考方案2】:

在你的 model.compile 函数中,你已经定义了一个损失函数和一个度量函数。

您的“损失”是您的损失函数的值(未知,因为您没有显示您的代码) 您的“acc”是您的指标的价值(在这种情况下是准确性) val_* 仅表示该值对应于您的验证数据。

只有损失函数用于更新模型的参数,准确率仅用于您了解模型的表现。

您应该尽量减少损失并最大限度地提高准确性。 理想情况下,您的验证数据结果和训练数据结果之间的差异应该是相似的(尽管会有一些差异)

【讨论】:

【参考方案3】:

我认为这是另一个值得通知的答案:

val_loss 是交叉验证数据的成本函数值,loss 是训练数据的成本函数值

https://datascience.stackexchange.com/a/25269

【讨论】:

以上是关于Loss、accuracy、validation loss、Validation accuracy 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

在训练时,accuracy不变,loss一直在降低是啥原因

Caffe---自带工具 绘制loss和accuracy曲线

keras中accuracy是怎么算出来的,为啥loss下降,accuracy不变甚至减小

关于Pytorch中accuracy和loss的计算

如何利用caffe自带的工具包绘制accuracy/loss曲线

caffe中accuracy和loss用python从log日志里面获取