过拟合:解读损失曲线

如果你的整个机器学习系统 损失曲线 如下所示:

图 20显示训练 BERT 模型时理想损失曲线的
            机器学习模型。损失曲线在 y 轴上绘制损失
            与 x 轴上的训练步数进行比较。作为数字
            的训练步数增加,损失从高到低,然后减少
            呈指数增长,最终趋于稳定,
            损失。
图 20. 理想的损失曲线。

遗憾的是,损失曲线通常很难解读。使用您的 并直观地理解损失曲线,以求解本页中的练习。

练习 1:振动损失曲线

图 21损失曲线(y 轴上的损失;训练次数
            x 轴上的步数),其中损失不会趋于平缓。
            相反,损失会不稳定地波动。
图 21. 振动损失曲线。
您可以采取哪三项措施来尝试改进损失曲线 如图 21 所示。
根据数据架构检查您的数据以检测不良示例; 然后从训练集中移除不良样本。
是的,这适用于所有模型。
降低学习速率。
是的,在调试 训练问题。
将训练集缩减为少量可信样本。
虽然这种技术听起来像是人为的,但实际上 想法。假设模型会对一小部分样本进行收敛, 之后您可以逐渐添加更多样本, 或许会发现哪些样本会导致损失曲线 振荡。
增加训练集中的样本数。
这种想法很有诱惑力,但修正的可能性很小 问题。
提高学习速率。
一般来说,避免在模型的复杂程度 则表明存在问题。

练习 2.急剧跳跃的损失曲线

图 22.损失曲线图,显示损失递减到
            一定数量的训练步数,然后突然增加,
            包含进一步的训练步骤。
图 22. 损失急剧增加。
以下哪种表述可能 如图 22 所示的爆炸损失的原因。
输入数据包含一个或多个 NaN,例如 除以 0 所引起的结果。
这种情况比您预想的要常见。
输入数据包含大量离群值。
有时,由于批次的重排不当,一个批次 包含大量离群值。
学习速率太低。
非常低的学习速率可能会增加训练时间, 而不是导致奇怪损失曲线的原因。
正则化率过高。
正确,正则化值非常高可能会阻止模型 converging;但不会产生奇怪的损失曲线, 如图 22 所示。

练习 3.测试损失与训练损失之间的差异

图 23训练损失曲线看似收敛,但
            经过一定次数的训练后,验证损失开始增加
            步骤。
图 23. 验证损失急剧增加。
以下哪种表述最符合 训练的损失曲线之间出现这种差异的原因 和测试集?
模型过拟合训练集。
是的,可能确实如此。可能的解决方案:
  • 可以减少 功能。
  • 提高正则化率。
  • 确保训练集和测试集具有统计意义 对等项。
学习速率过高。
如果训练集的学习速率过高, 那么它可能不会像现在这样运行

练习 4.损失曲线停滞

图 24损失曲线图,显示从开始到现在的损失
            会收敛,但之后会出现重复的模式,
            就像长方形的波浪一样
图 24. 一定步数后出现混乱的损失。
以下哪种表述最有可能 对图 24 所示不稳定损失曲线的解释是什么?
训练集包含重复的样本序列。
这是有可能的。确保您正在重排样本 。
正则化率过高。
这种情况不太可能是原因。
训练集包含的特征过多。
这种情况不太可能是原因。