本课程已过时,我们将于 2024 年 7 月移除此课程。
如果第一次训练模型时,所有损失曲线都如下所示,则可以轻松进行机器学习:
但实际上,理解曲线损失并非易事。通过理解损失曲线来回答以下问题。
1. 我的模型无法训练!
您的好友 Mel 和您继续一起开发独角兽外观预测器。这是您的第一条损失曲线。
描述问题以及 Mel 可以如何解决此问题:
点击加号图标可展开此部分以显示答案。
模型未收敛。请尝试执行以下调试步骤:
- 按照模型调试中的步骤检查您的特征能否预测标签。
- 对照数据架构检查数据,以检测错误样本。
- 如果训练看起来不稳定(如此图所示),请降低学习速率,以防止模型在参数空间内弹跳。
- 将数据集简化为模型可以预测的 10 个样本。经过缩减的数据集的损失非常低。然后,基于完整的数据集继续调试模型。
- 简化模型并确保模型的效果优于基准组合。然后逐步为模型添加复杂性。
2. 我的损失爆炸了!
Mel 显示了另一条曲线。出了什么问题?她该如何解决这个问题?
请在下方输入您的答案。
:
点击加号图标可展开此部分以显示答案。
损失大幅增加通常是由输入数据中的异常值导致的。可能的原因如下:
- 输入数据中的 NaN。
- 因异常数据导致的爆炸梯度。
- 除以 0。
- 对数为零或负数。
如需解决爆炸式损失,请检查批量和工程数据中是否存在异常数据。如果异常情况出现问题,请调查原因。否则,如果异常情况看起来像是异常数据,请通过重排数据来确保离群值在各批次之间均匀分布。
3. 我的指标相互矛盾!
梅尔希望您再尝试一条曲线。出了什么问题?她该如何解决这个问题?请在下方输入您的答案。
描述问题以及 Mel 可以如何解决此问题:
点击加号图标可展开此部分以显示答案。
召回率会停留在 0,因为您样本的分类概率绝不会高于正分类的阈值。这种情况通常发生在类别不平衡较大的问题上。请注意,机器学习库(如 TF Keras)通常使用默认阈值 0.5 来计算分类指标。
请尝试以下步骤:
降低分类阈值。
检查阈值不变的指标,例如 AUC。
4. 测试损失太高!
Mel 向您展示训练和测试数据集的损失曲线,并询问“出了什么问题?”。请在下方输入您的答案。
描述问题以及 Mel 可以如何解决此问题:
点击加号图标可展开此部分以显示答案。
您的模型与训练数据过拟合。请尝试以下步骤:
- 降低模型容量。
- 添加正则化。
- 检查训练和测试拆分在统计上是否等效。
5. 我的模型遇到问题
几天后,Mel 又回来了,又开始了另一条曲线,你有耐心。这里出了什么问题?如何解决 Mel 的问题?
描述问题以及 Mel 可以如何解决此问题:
点击加号图标可展开此部分以显示答案。
您的损失显示出重复的类似步骤。模型看到的输入数据本身很可能存在重复行为。确保重排操作会从输入数据中移除重复行为。
大功告成!
“目前一切正常!”马六大声说。她成功地靠在椅子上,长长地叹气。曲线看起来很棒,您用成就来传输。Mel 和您花点时间讨论以下用于验证模型的附加检查。
实际指标
基准
回归问题的绝对损失
分类问题的其他指标