术语准确性和验证准确性之间的区别是什么



我使用Keras的LSTM构建了一个模型,可以检测堆栈溢出上的两个问题是否重复。当我运行该模型时,我在历元中看到以下输出。

Epoch 23/200
727722/727722 [==============================] - 67s - loss: 0.3167 - acc: 0.8557 - val_loss: 0.3473 - val_acc: 0.8418
Epoch 24/200
727722/727722 [==============================] - 67s - loss: 0.3152 - acc: 0.8573 - val_loss: 0.3497 - val_acc: 0.8404
Epoch 25/200
727722/727722 [==============================] - 67s - loss: 0.3136 - acc: 0.8581 - val_loss: 0.3518 - val_acc: 0.8391

我正在努力理解每一个术语的含义。以上哪个值是我的模型的准确性。我对机器学习比较陌生,所以任何解释都会有所帮助。

在训练机器学习模型时,要避免的主要问题之一是过度拟合。这是指你的模型很好地拟合了训练数据,但它无法对以前从未见过的数据进行归纳和准确预测。

为了查明他们的模型是否过拟合,数据科学家使用了一种名为交叉验证的技术,他们将数据分为两部分——训练集和验证集。训练集用于训练模型,而验证集仅用于评估模型的性能。

训练集上的指标可以让你看到你的模型在训练方面的进展,但验证集上的标准可以让你衡量你的模型的质量——它能够根据以前从未见过的数据做出新的预测。

考虑到这一点,loss和acc是训练集上的损失和准确性的度量,而val_loss和val_acc是验证集上的损耗和准确性的测量。

目前,您的模型在训练集上的准确率约为86%,在验证集上的正确率约为84%。这意味着您可以期望您的模型在新数据上的准确率约为84%。

我注意到,当你的时代从23到25时,你的acc指标会增加,而val_acc指标会减少。这意味着你的模型更好地拟合了训练集,但正在失去对新数据的预测能力,这表明你的模型开始拟合噪声,并开始过度拟合。

因此,这是一个关于验证指标以及如何解释它们的快速解释。

RNN(LSTM(与CNN不同,因此可能有不同的原因。对于Keras的LSTM模型,我将修改两个LSTM参数;

  • 单位:向下
  • Stateful:false

通常,这些都是神经网络训练和验证数据集准确性差异的可能性。我从互联网收集答案

Sourosh

  • 对训练集或验证集进行预处理(零意义、规范化等(,但不能同时对两者进行预处理
  • 某些层的性能不同在从头开始的训练和推理过程中,您的模型可能会被错误地实现
  • 过度装配

dk14

  • 数据点不足,容量过大
  • 订购
  • 无/错误的特征缩放/规范化
  • 学习率太高

最新更新