Train Accuracy增加,Train loss稳定,Validation loss增加,Validation Accuracy低且增加

Train Accuracy increases, Train loss is stable, Validation loss Increases, Validation Accuracy is low and increases

我在 pytorch 中的神经网络训练变得非常奇怪。

我正在训练一个 已知 数据集,该数据集分为训练和验证。 我在训练期间对数据进行洗牌,并即时进行数据扩充。

我有这些结果:

训练精度从 80% 开始并增加

火车损失减少并保持稳定

验证准确率从 30% 开始,但增加缓慢

验证损失增加

我要显示以下图表:

  1. 如何解释验证损失增加,验证准确率增加?

  2. 验证集和训练集的准确率怎么会有这么大的差异? 90% 和 40%?

更新:

我平衡了数据集。 它是二进制class化。它现在有来自 class 1 的 1700 个示例,来自 class 2 的 1200 个示例。总共 600 个用于验证,2300 个用于训练。 我仍然看到类似的行为:

**会不会是我冻结了部分网络的权重?

**会不会是因为像 lr 这样的超参数?

如果训练集与验证集相比非常大,您更有可能过度拟合并学习训练数据,这会使模型的泛化变得非常困难。我看到您的训练精度为 0.98,而您的验证精度增长速度非常慢,这意味着您的训练数据过拟合。

尝试减少训练集中的样本数量,以提高模型对未知数据的泛化能力。

我找到了解决方案: 我对训练集和验证集进行了不同的数据扩充。匹配它们也提高了验证的准确性!

我先回答你的第二个问题。训练数据的高精度和 val/test 数据的低精度表明该模型可能无法很好地概括以推断真实案例。这就是验证过程的全部内容。您需要微调甚至重建您的模型。
关于第一个问题,val loss 不一定对应于 val accuracy。该模型根据其模型进行预测,如果您使用交叉熵函数,则损失函数会计算矩阵概率与目标概率之间的差异。