理解机器学习中的 Training、Validation、Testing

——模型如何学习、优化与最终评估的完整指南**

在机器学习和深度学习的世界里,Training(训练)、Validation(验证)、Testing(测试) 是构建优质模型的三大核心步骤。
很多初学者经常混淆它们的作用,或者不知道为什么必须划分这三类数据集。

本指南将以清晰、系统的方式解释整个流程,让你彻底理解模型如何从“学习”走向“真正能用”。


🔥 第1部分 — Training(训练):模型真正学习的阶段

训练阶段是模型根据数据更新参数、学习规律的过程。

每个 Epoch 包含:

  1. Forward Pass:模型进行前向推理,给出预测
  2. Loss 计算:计算预测与真实值之间的误差
  3. Backpropagation(反向传播):计算梯度
  4. Optimizer 更新参数
  5. 重复上述步骤多轮训练

✔ 训练的目标

  • 从数据中学习模式
  • 更新权重,使模型更准确
  • 降低训练损失

✔ PyTorch 示例

model.train()
for x, y in train_loader:
    optimizer.zero_grad()
    preds = model(x)
    loss = criterion(preds, y)
    loss.backward()
    optimizer.step()

训练是模型“变得更聪明”的过程。


🔍 第2部分 — Validation(验证):选择最佳模型的过程

验证阶段 不会更新模型权重
这一步的目的是检查模型在未见过的数据上的表现,并用于:

  • 判断是否过拟合
  • 调整超参数(learning rate、dropout、网络结构等)
  • 选择最佳模型

验证时我们会:

  • 使用 model.eval()
  • 使用 torch.no_grad()(不计算梯度 → 不训练)
  • 计算验证损失
  • 跟踪验证指标(如 accuracy、F1-score)

✔ PyTorch 示例

model.eval()
with torch.no_grad():
    for x, y in val_loader:
        preds = model(x)
        val_loss += criterion(preds, y).item()

✔ 为什么验证非常重要?

  • 防止模型过拟合训练集
  • 帮助调整超参数
  • 找到训练过程中性能最佳的模型(Best Checkpoint)

⭐ 第3部分 — “每个 Epoch 都验证 → 保存最佳模型”

每训练完一轮(epoch),就用验证集评估模型。

如果当前验证指标比之前最好成绩更优,就保存该模型:

Epoch Train Loss Val Loss 操作
1 0.50 0.42 保存
2 0.40 0.36 保存
3 0.32 0.30 保存
4 0.28 0.35 不保存
5 0.26 0.31 不保存

最佳模型来自 第3轮,即便后面的训练轮数更多。

这样可以避免最终模型被“过拟合后的结果”覆盖。


⚙️ 第4部分 — Early Stopping:自动停止训练避免浪费时间

Early Stopping(早停)用于在验证集长期不再提升时提前终止训练。

例如:

patience = 5

含义:

👉 如果连续 5 个 epoch 验证效果没提升 → 停止训练

优点:

  • 避免过拟合
  • 节省训练时间
  • 自动找到最佳收敛点

🧪 第5部分 — Testing(测试):最终性能评估

测试集用于对最终模型做一次“期末考试”。

特点:

  • 只使用一次
  • 不能参与训练或调参
  • 用于评估最终泛化能力

测试阶段使用的是:

👉 验证表现最好的模型(Best Checkpoint)

测试集告诉我们:

  • 模型在真实世界能否表现良好
  • 模型是否泛化
  • 是否达到生产要求

📊 第6部分 — 完整工作流程(Mermaid.js 图)

flowchart TD

    A[Dataset] --> B["划分:训练集 / 验证集 / 测试集"]

    B --> C["Training Loop<br>前向传播 + 反向传播 + 更新参数"]
    C --> D["Validation Loop<br>仅前向传播,无梯度"]

    D --> E{"验证效果更好吗?"}
    E -->|"是"| F["保存最佳模型"]
    E -->|"否"| G["不保存"]

    F --> H["继续训练"]
    G --> H["继续训练"]

    H --> I{"训练完成<br>或 Early Stopping?"}
    I -->|"否"| C
    I -->|"是"| J["加载最佳模型"]

    J --> K["测试集评估"]
    K --> L["最终性能指标"]

🧠 总结

阶段 作用 是否学习?
Training(训练) 通过数据更新模型权重 ✔ 是
Validation(验证) 选模型、调参、检测过拟合 ❌ 否
Testing(测试) 最终评价模型性能 ❌ 否

✨ 标准工作流程:

训练 → 验证 → 保存最佳模型 → 测试(一次)

这是确保模型既能学习得好,又能泛化得好的黄金流程。


Get in Touch with us

Chat with Us on LINE

iiitum1984

Speak to Us or Whatsapp

(+66) 83001 0222

Related Posts

Our Products