深度学习核心 20% — 训练不收敛,先查这四件事
一句话:所有深度学习训练问题,都能落到四件事上——数据、损失、优化器、正则。而调参优先级永远是:学习率 > 数据质量 > 结构 > 其他超参。
🎯 这 20% 能解决哪些问题
| 常见困惑 | 本质 | 本页答案 |
|---|
| 损失不下降怎么办 | 学习率或数据问题 | 见「训练四要素」 |
| 训练集准 99% 测试集 60% | 过拟合 | 见「过拟合的四个信号」 |
| CNN、RNN、Transformer 该用哪个 | 数据类型决定 | 见「三种主干」 |
| 该不该自己设计网络 | 迁移学习几乎总更优 | 见「迁移学习五步」 |
| batch size 越大越好吗 | 与学习率耦合 | 见「超参优先级」 |
一、训练四要素
graph LR
A["数据<br/>质量与分布"] --> B["损失函数<br/>目标定义"]
B --> C["优化器<br/>怎么走"]
C --> D["正则<br/>防过拟合"]
D --> A
| 要素 | 关键选择 | 常见错误 |
|---|
| 数据 | 清洗、去重、标签一致性、分布覆盖 | 训练/测试同源泄漏 |
| 损失 | 分类交叉熵、回归 L1/L2、排序/对比 | 类别不平衡仍用普通 CE |
| 优化器 | AdamW 通用、SGD + 动量 泛化常更好 | 只调结构不调学习率 |
| 正则 | Dropout、权重衰减、数据增广、早停 | 正则过强导致欠拟合 |
二、超参优先级
| 优先级 | 超参 | 原因 |
|---|
| 1 | 学习率 | 差一个数量级就完全训不动 |
| 2 | 数据质量与增广 | 决定上限 |
| 3 | 网络规模/深度 | 与数据量匹配 |
| 4 | batch size | 与学习率联动(线性缩放规则) |
| 5 | 正则强度 | 在过拟合显现后再调 |
实用起点:AdamW + lr = 3e-4(大模型)/ 1e-3(小模型)+ 余弦退火 + 前 5% 步数 warmup。
三、三种主干
| 主干 | 归纳偏置 | 擅长 | 不擅长 |
|---|
| CNN | 局部性 + 平移等变 | 图像、局部模式 | 长程依赖 |
| RNN/LSTM | 序列顺序 | 短序列、流式 | 长依赖、难并行 |
| Transformer | 全局注意力 | 长依赖、多模态 | 数据需求大、算力高 |
判断口诀:数据是网格(图像/音频谱)→ CNN;是序列且要流式 → RNN;是序列/集合且数据量足 → Transformer。现代实践里,Transformer + 足够数据几乎总能追平或超过前两者。
四、过拟合的四个信号
| 信号 | 判断 | 应对 |
|---|
| 训练损失降、验证损失升 | 经典过拟合 | 早停、增广、权重衰减 |
| 训练集与验证集差距 > 10 个点 | 容量过大 | 减参数、加正则 |
| 换随机种子结果波动大 | 数据量不足 | 更多数据、交叉验证 |
| 线上效果远低于离线 | 数据泄漏或分布漂移 | 检查泄漏、按时间切分 |
反向判断(欠拟合):训练损失都降不下去 → 容量不足或学习率太小或标签有噪声。
五、迁移学习五步
| 步骤 | 动作 |
|---|
| 1 | 选同域预训练模型(图像选 ImageNet/CLIP 系,文本选 BERT/LLM) |
| 2 | 冻结主干,只训分类头,跑通流程 |
| 3 | 解冻后几层,用小学习率(1e-5 级)微调 |
| 4 | 数据量足够(> 万级)再考虑全量微调 |
| 5 | 对比”从头训练”基线,确认迁移真的有效 |
经验:90% 的工业视觉/文本任务,迁移学习 + 数据清洗就能超过自研结构的效果。
六、训练不收敛的排查顺序
| # | 检查项 | 具体做法 |
|---|
| 1 | 能否过拟合一个小批次 | 取 8–32 个样本,应能到接近 100% |
| 2 | 学习率是否合适 | 试 1e-2 / 1e-3 / 1e-4 |
| 3 | 标签是否错位 | 打印样本与标签对照 |
| 4 | 输入归一化 | 均值方差归一化、通道顺序 |
| 5 | 损失与任务是否匹配 | 多分类用 CE,回归看是否被离群值主导 |
| 6 | 梯度是否异常 | 监控梯度范数、是否 NaN |
“能否过拟合一个小批次”是最有价值的单步测试:连它都过不了,问题一定在数据、损失或代码,不在模型容量。
📋 一页速查
| 问题 | 答案 |
|---|
| 第一超参是什么 | 学习率 |
| 不收敛先做什么 | 尝试过拟合一个小批次 |
| 过拟合怎么判 | 训练降验证升 |
| 图像首选主干 | CNN 或 ViT(数据足够时) |
| 该自研结构吗 | 先用迁移学习 |
| 学到的第一件事 | 数据质量决定上限 |
🔗 相关链接