胡慧华
菜单
首页人工智能机器学习深度学习智能体项目实践关于我
跳至课程正文
← 返回深度学习课程

DEEP LEARNING · COURSE 06

训练得好,等于学得好吗?

通过训练曲线识别过拟合,建立验证与调参的基本流程。

进阶约 35–40 分钟7 个学习环节
训练误差下降而验证误差先降后升的评估曲线
本课学习重点
  • 训练集
  • 验证集
  • 测试集
01

先从一个具体问题出发

训练题全会,换一道题却答错

一个猫狗分类模型在训练图片上达到 99% 准确率,遇到新图片却只有 72%。它可能记住了训练图片的细节,没有学到能迁移到新图片的规律。
LEARNING TO LEARN

区分训练集、验证集和测试集,通过互动学习曲线理解过拟合、早停与调参。

这一课要回答:模型训练与评估:过拟合、验证集和调参
02

建立必要的基础概念

先认识三个关键词

先看每个概念负责什么,再把它们放回完整流程。无需先记公式,先建立直觉。
01 · 训练集

用来学习参数

模型反复查看这些带答案的样本,并根据损失更新权重。

02 · 验证集

用来选择方案

不参与参数更新,用于比较网络结构、学习率和训练轮数。

03 · 测试集

用来做最终检查

方案确定后再使用,避免反复查看造成乐观偏差。

03

把概念连接成流程

从数据到可信结果

按顺序走一遍,观察每一步的输入、动作与输出。
  1. 01

    先划分数据

    在训练前固定训练、验证和测试范围。

  2. 02

    只在训练集学习

    每轮更新参数并记录训练损失。

  3. 03

    用验证集选方案

    关注新数据表现,必要时早停或调参。

  4. 04

    最后使用测试集

    只报告最终确定方案的一次独立结果。

04

互动实验 · 动手建立直觉

拖动训练轮数,寻找合适停止点

训练损失通常持续下降;验证损失可能先降后升。两条曲线开始分离,是过拟合的重要信号。
训练损失与验证损失曲线训练轮数损失
训练损失 0.48验证损失 0.54

验证损失接近低点,这是较合适的停止区间。

05

知道模型能做什么,也知道不能做什么

三个容易忽略的边界

技术名词描述的是一种计算方法。真正用于产品时,还要检查数据、指标、成本与使用场景。
01

高训练分数不代表泛化

真正关心的是模型面对未见数据的表现。

02

验证集也会被间接适应

反复根据同一验证集调参,仍可能对它产生过拟合。

03

先排查数据泄漏

同一对象或未来信息进入不同数据集,会让评估虚高。

06

可选代码实践 · 逐行理解

记录训练与验证损失

代码只呈现本课最关键的计算路径。先根据注释理解每一步,再放进完整项目。
course-06.py
best_loss = float("inf")
for epoch in range(30):
    model.train()
    train_one_epoch(model, train_loader, optimizer)

    model.eval()
    val_loss = evaluate(model, val_loader)
    if val_loss < best_loss:
        best_loss = val_loss
        save_model(model)
  1. 步骤 1

    model.train() 开启训练状态,随后只使用训练数据更新参数。

  2. 步骤 2

    model.eval() 切换到评估状态,验证阶段不更新权重。

  3. 步骤 3

    只保存验证损失更低的模型,相当于保留当前最佳检查点。

07

知识检查与课程总结

确认你能把概念讲清楚

完成三个问题,再用五句话回顾本课主线。

已回答 0 / 3 题 · 当前答对 0 题

01验证集的主要用途是什么?
02训练损失下降、验证损失上升通常说明什么?
03测试集应该何时使用?
  1. 训练集学习参数,验证集选择方案,测试集做最终评估。
  2. 泛化能力比单纯的训练成绩更重要。
  3. 训练与验证曲线能帮助识别欠拟合和过拟合。
  4. 早停、正则化和数据增强可以缓解过拟合。
  5. 调参前应先检查数据划分和数据泄漏。

下一课 · COURSE 07

CNN:计算机如何看懂图片

进入计算机视觉,观察局部卷积窗口如何从像素中提取特征。

继续下一课 ↗