【问题标题】:Can the increase in training loss lead to better accuracy?训练损失的增加能否带来更好的准确性?
【发布时间】:2022-01-12 07:11:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: nlp pytorch training-data transformer


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-08
        • 2021-09-07
        • 2018-01-08
        • 2021-09-01
        • 2020-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多