如果您在首次训练模型时,所有损失曲线都如下所示,机器学习会变得简单得多:
遗憾的是,损失曲线通常很难解读。利用您对损失曲线的直觉来解答本页中的练习。
练习 1:振荡的损失曲线
您可以通过以下 三种方法尝试改进图 21 中显示的损失曲线。
将您的数据与数据架构进行对比,以检测不良示例,然后从训练集中移除不良示例。
是的,这是适用于所有模型的良好做法。
降低学习速率。
是的,在调试训练问题时,通常最好降低学习率。
将训练集缩减为少量可信的示例。
虽然这种做法听起来很不自然,但实际上是一个好主意。假设模型在小部分可信示例上收敛,那么您可以逐步添加更多示例,或许可以发现是哪些示例导致损失曲线出现波动。
增加训练集中的示例数量。
这是一个诱人的想法,但极不可能解决问题。
提高学习速率。
通常,如果模型的学习曲线显示存在问题,请避免提高学习速率。
练习 2. 损失曲线出现急剧跳跃
以下哪两个陈述指出了导致图 22 中损失值爆炸的可能原因。
输入数据包含一个或多个 NaN,例如因除零而导致的值。
这种情况比您想象的要常见。
输入数据包含大量离群值。
有时,由于批处理的随机排序不当,一个批处理可能包含大量离群值。
学习速率过低。
学习率非常低可能会增加训练时间,但不是导致损失曲线异常的原因。
正则化率过高。
没错,过高的正则化可能会阻止模型收敛;但不会导致图 22 中显示的奇怪损失曲线。
练习 3. 测试损失与训练损失不一致
以下哪一项陈述最能说明训练集和测试集的损失曲线之间存在这种差异的原因?
模型过度拟合了训练集。
是的,可能确实是。可能的解决方案:
- 简化模型,可能需要减少特征数量。
- 提高正则化率。
- 确保训练集和测试集在统计上是等效的。
学习速率过高。
如果学习率过高,训练集的损失曲线可能不会像这样。
练习 4. 损失曲线卡住
以下哪一个说法最有可能解释图 24 中显示的异常损失曲线?
训练集包含重复的示例序列。
这是一种可能性。确保充分打乱示例。
正则化率过高。
这不太可能是原因。
训练集包含的特征过多。
这不太可能是原因。