理解机器学习中的 Training、Validation、Testing
——模型如何学习、优化与最终评估的完整指南**
在机器学习和深度学习的世界里,Training(训练)、Validation(验证)、Testing(测试) 是构建优质模型的三大核心步骤。
很多初学者经常混淆它们的作用,或者不知道为什么必须划分这三类数据集。
本指南将以清晰、系统的方式解释整个流程,让你彻底理解模型如何从“学习”走向“真正能用”。
🔥 第1部分 — Training(训练):模型真正学习的阶段
训练阶段是模型根据数据更新参数、学习规律的过程。
每个 Epoch 包含:
- Forward Pass:模型进行前向推理,给出预测
- Loss 计算:计算预测与真实值之间的误差
- Backpropagation(反向传播):计算梯度
- Optimizer 更新参数
- 重复上述步骤多轮训练
✔ 训练的目标
- 从数据中学习模式
- 更新权重,使模型更准确
- 降低训练损失
✔ 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
Related Posts
- 不可靠的“智能”系统所隐藏的真实成本
- The Hidden Cost of ‘Smart’ Systems That Don’t Work Reliably
- GPU vs LPU vs TPU:如何选择合适的 AI 加速器
- GPU vs LPU vs TPU: Choosing the Right AI Accelerator
- 什么是 LPU?面向中国企业的实践性解析与应用场景
- What Is an LPU? A Practical Introduction and Real‑World Applications
- 面向软件工程师的网络安全术语对照表
- Cybersecurity Terms Explained for Software Developers
- 现代网络安全监控与事件响应系统设计 基于 Wazuh、SOAR 与威胁情报的可落地架构实践
- Building a Modern Cybersecurity Monitoring & Response System. A Practical Architecture Using Wazuh, SOAR, and Threat Intelligence
- AI 时代的经典编程思想
- Classic Programming Concepts in the Age of AI
- SimpliPOSFlex. 面向真实作业现场的 POS 系统(中国市场版)
- SimpliPOSFlex. The POS Designed for Businesses Where Reality Matters
- 经典编程思维 —— 向 Kernighan & Pike 学习
- Classic Programming Thinking: What We Still Learn from Kernighan & Pike
- 在开始写代码之前:我们一定会先问客户的 5 个问题
- Before Writing Code: The 5 Questions We Always Ask Our Clients
- 为什么“能赚钱的系统”未必拥有真正的价值
- Why Profitable Systems Can Still Have No Real Value













