训练损失的增加能否带来更好的准确性?

Can the increase in training loss lead to better accuracy?

我正在参加 Kaggle 竞赛。首先,我用比赛数据集训练了一个Longformer base,在排行榜上取得了不错的成绩。由于 CUDA 内存限制和时间限制,我只能训练 2 个批大小为 1 的 epoch。损失从大约 2.5 开始,在我训练结束时逐渐下降到 0.6。

然后我使用保存的权重继续训练 2 个 epoch。这次我使用了稍微大一点的学习率(Longformer 论文中的学习率)并将验证数据添加到训练数据中(这意味着我不再将数据集按 90/10 进行拆分)。我这样做是为了获得更好的结果。

然而,这次损失从大约 0.4 开始,并在第一个 epoch 的一半左右不断增加到 1.6。我停止了,因为我不想浪费计算资源。

我应该再等一下吗?它最终会导致更好的测试结果吗?我认为该模型一开始可能有点过拟合。

您的模型在您第一次训练时就适合原始训练数据。当您第二次将验证数据添加到训练集中时,训练数据的分布一定发生了显着变化。因此,由于您的模型不熟悉这个新分布,您的第二次训练中的损失增加了。

你应该再等一下吗?是的,损失最终会减少(尽管不一定低于原始训练损失的值)

它能带来更好的测试结果吗?大概。这取决于您的验证数据是否包含以下模式:

  1. 尚未出现在您的训练数据中
  2. 与您的模型在部署中将遇到的那些类似

事实上,可能 训练损失的增加会导致 训练 准确性的提高。准确性与任何损失函数都不完全(负)相关。这仅仅是因为损失函数是模型输出的连续函数,而准确度是模型输出的离散函数。例如,一个预测低置信度但始终正确的模型是 100% 准确的,而一个预测高置信度但偶尔错误的模型可以产生较低的损失值但低于 100% 的准确度。