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 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Caffe---自带工具 绘制loss和accuracy曲线
keras中accuracy是怎么算出来的,为啥loss下降,accuracy不变甚至减小