返回首页

Roadmap
更新于 2026年10月28日 全文 1185 字未阅读

过拟合:解读损失曲线#

训练模型的时候,损失曲线是最忠实的那面镜子——模型状态好不好,它一清二楚。如果说要是所有损失曲线都长得像下面这张图,那机器学习就会简单得多。

图 20. 一张理想的损失曲线。纵轴标着 Loss,横轴标着 Steps,一条蓝色曲线从左上角的高位出发,先陡峭下降,斜率逐渐变小,最后趋近一个平缓的最低点。
图 20. 理想的损失曲线

从图20可以看出,此时损失先高后低、一路收敛到某个值附近,这就是教科书上想让你记住的样子。可惜真实的曲线很少这么听话:它可能剧烈振荡,可能突然跳升,可能训练集和测试集各走各的,也可能干脆卡在某个位置反复横跳。

所以这一节我们不打算再往你脑子里塞新公式,而是换一种练法,四张真实的损失曲线,四道判断题。每一道题都先给你一条曲线,再问你这曲线出了什么问题、可能是什么原因。你需要做的,是把前面几节学过的直觉(数据脏了、学习率不合适、模型过拟合、批次没打乱……)调动起来,用它们去解读一条你从没见过的曲线。

练习1:振荡的损失曲线#

先看第一条。曲线没有往下降,反倒像心电图一样剧烈起伏:

图 21. 一张振荡的损失曲线。纵轴 Loss,横轴 Steps,蓝色曲线在高位与低位之间剧烈地上下起伏,振幅始终不收敛,看不到任何变平的迹象。
图 21. 振荡的损失曲线

第1题: 面对图 21 这条曲线,你可以尝试做哪些事来改善它?

  • A. 按数据模式(schema)检查数据,找出坏样本并从训练集中移除

  • B. 降低学习率

  • C. 把训练集缩到极少量可信样本

  • D. 增加训练集里的样本数量

  • E. 提高学习率

练习2:损失曲线突然跳升#

第2条曲线更干脆:本来好好的,突然就炸了。

图 22. 一张损失突然跳升的曲线。纵轴 Loss,横轴 Steps,蓝色曲线先平缓下降到最低点,接着几乎垂直地陡升到高位,并在高位剧烈抖动。
图 22. 损失突然跳升

第2题: 下面哪些项能解释图 22 中这条突然爆掉的损失曲线?

  • A. 输入数据里含有 NaN——比如某个除零操作算出来的值

  • B. 输入数据里混进了一批离群值

  • C. 学习率太低

  • D. 正则化率太高

练习3:测试损失与训练损失背离#

第三条曲线要更细看一点,它有两条线:

图 23. 训练损失与测试损失背离的曲线。纵轴 Loss,横轴 Steps,蓝色的 Train 曲线与红色的 Test 曲线起初重合着一起下降,之后蓝线继续往下走,红线却触底后开始回升;右上角有蓝色 Train、红色 Test 的文字图例。
图 23. 验证损失陡升

第3题: 下面哪些项最能解释训练集与测试集的损失曲线为什么会出现这种差异?

  • A. 模型对训练集过拟合了

  • B. 学习率太高

练习4:损失曲线卡住#

最后一条曲线,前半段看起来还挺正常,后半段却陷入了奇怪的节奏:

图 24. 一条卡住的损失曲线。纵轴 Loss,横轴 Steps,蓝色曲线先陡降下来,随后进入一段反复的方波状抖动,一段平一段翘,始终没有收敛成一条平滑的线。
图 24. 训练到一定步数后损失陷入混乱

第4题: 下面哪一项最可能解释图 24 中这条反复横跳的损失曲线?

  • A. 训练集没有充分打乱

  • B. 正则化率太高

  • C. 训练集里特征太多


关键术语:

  • 批次
  • 样本
  • 特征
  • 学习率
  • 损失曲线
  • 离群值
  • 过拟合
  • 正则化
  • 正则化率
  • 测试集
  • 训练集
  • 验证集
阅读 --