训练监控与诊断
本节定位
很多训练失败并不是“模型不够强”,而是:
- 数据有问题
- 学习率不对
- 训练过程在悄悄崩
所以训练时最关键的能力之一不是“会开训”,而是:
看得懂训练过程到底出了什么问题。
学习目标
- 理解训练监控应该看哪些关键信号
- 学会区分过拟合、欠拟合、学习率异常等常见问题
- 通过可运行示例建立训练曲线诊断直觉
- 学会把问题定位到数据、优化器或模型结构层
一、为什么训练诊断这么重要?
1.1 因为训练失败很少会直接报“真正原因”
你更常看到的是:
- loss 不降
- 验证集突然变差
- 准确率卡住
但这些只是现象,不是根因。
1.2 真正的诊断要回答
- 是学习率问题?
- 是数据问题?
- 是过拟合?
- 还是模型容量不够?
二、先看一个最常见的诊断入口:训练曲线
history = [
{"epoch": 1, "train_loss": 0.95, "val_loss": 0.98},
{"epoch": 2, "train_loss": 0.72, "val_loss": 0.81},
{"epoch": 3, "train_loss": 0.51, "val_loss": 0.79},
{"epoch": 4, "train_loss": 0.35, "val_loss": 0.92},
]
for row in history:
print(row)
2.1 这个例子里最明显的信号是什么?
train_loss一直下降val_loss先降后升
这通常非常像:
- 过拟合
2.2 为什么训练曲线是第一入口?
因为它是最早暴露问题的地方,
而且很多问题都能先从曲线形状看出端倪。