深度学习进阶文档深度页
深度学习过拟合与验证
结合训练/验证曲线判断欠拟合、过拟合和训练不稳定。
学习目标
- 读懂训练验证曲线
- 区分欠拟合与不稳定
- 设计数据划分
为什么需要这个概念
只看训练 loss 无法判断新数据表现。
- 保证可信泛化
- 防止测试集泄漏
学习前需要掌握
训练循环内容待补充数据划分内容待补充
背景与问题
只看训练 loss 无法判断新数据表现。
概念定义
过拟合表现为训练持续改善而验证恶化;验证集用于选择模型,测试集只最终评估。
直观理解
训练题越做越熟,但模拟考试开始退步,说明模型在记细节。
核心原理
验证损失最低点常比训练末尾更适合作为保存检查点。
解决方法包括代表性数据、合理增强、降低容量、权重衰减、Dropout 和早停。
数学表达
核心公式
λ 控制权重衰减强度。
变量含义
λ正则化强度L_data任务损失
计算步骤
- 1验证最低点在中间 epoch
代码对应位置
示例 1深度学习过拟合与验证 · PyTorch 示例:验证深度学习过拟合与验证的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
λ | 正则化强度 |
L_data | 任务损失 |
完整数值示例
曲线诊断
已知条件
- train loss:0.8→0.1
- val loss:0.9→0.4→0.7
- 1
验证最低点在中间 epoch
应保存 val loss=0.4 的模型
处理前后对比
计算与实现步骤
- 1
划分 train/val/test
- 2
每 epoch 记录两类指标
- 3
保存验证最佳
- 4
早停
- 5
最终测试一次
代码实现
示例 1
深度学习过拟合与验证 · PyTorch 示例
深度学习过拟合与验证 · PyTorch 示例
PyTorch
example_01.py用途:验证深度学习过拟合与验证的输入、计算和输出。
model.eval()
with torch.inference_mode():
val_logits=model(x_val)
val_loss=criterion(val_logits,y_val)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证深度学习过拟合与验证的输入、计算和输出。
model- 组合预处理和估计器的模型对象。
Step 1 · 1–4 行
计算当前预测误差,把模型表现压缩成可优化的标量损失。
model.eval()
with torch.inference_mode():
val_logits=model(x_val)
val_loss=criterion(val_logits,y_val)代码与数学原理
平方误差代码对应均方损失。
预期输出或运行结果
得到不更新参数的验证损失。
常见错误 · 4 条
- 训练好即泛化好
- 测试集调参
- 验证随机增强
- 正则过强
实际应用
- 模型选择
- 早停
常见错误
训练好即泛化好
测试集调参
验证随机增强
正则过强
文档来源
04_过拟合欠拟合与数据集划分原始文档
学习资料/deeplearning/04_过拟合欠拟合与数据集划分.md- §1 泛化
- §2–4 过拟合/欠拟合
- §5–7 数据职责
- §8 改善方法
常见问题
验证损失上升时一定停止吗?
应结合 patience、噪声和验证趋势。
测试集能否选 epoch?
不能,那会让测试集变成验证集。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。