目录

1. 检查训练参数

2. 检查数据问题

3. 控制变量实验

4. 监控训练动态

5. 工具辅助诊断

6.总结判断流程


1. 检查训练参数

1.1 学习率问题

  • 现象:损失剧烈波动或长期不下降。
  • 验证方法
  1. 尝试更小的学习率(如 1e-5)或学习率调度(如余弦退火)。

学习率调度:指在深度学习训练过程中动态调整学习率的技术,通过在不同训练阶段采用不同策略优化模型性能。

学习率:控制每次迭代更新中梯度下降步幅大小的参数, 深度超过10层的模型)建议初始值设为1e-5以下, 初期可设为0.01左右,若损失值下降过快则减半;若下降缓慢则逐步增加; 使用SGD等传统优化器时,学习率需更谨慎调整;使用Adam等自适应优化器时,学习率范围可适当放宽

  1. 观察损失曲线:若学习率过高,损失可能爆炸(NaN);过低则下降缓慢。
  • 结论:若调整后损失正常,则原问题由学习率不当引起。

1.2 批次大小(Batch Size

  • 现象:大批次导致梯度更新方向过于平均,可能陷入局部最优。
  • 验证方法:尝试减小批次大小(如从 256 降到 32),观察模型是否收敛更快。

1.3 正则化参数

  • 现象:过拟合(训练集表现好,验证集差)或欠拟合。
  • 验证方法

增加权重衰减(如 weight_decay=1e-4)或 Dropout 比率。

若验证集表现提升,则原问题可能因欠正则化导致过拟合。

权重衰减(weight_decay)是一种正则化技术,用于防止过拟合,它在损失函数中添加了L2正则化项, 保持权重在一个较小在的值,避免梯度爆炸

1.4 模型复杂度

  • 现象:简单模型在训练集上表现差(欠拟合)。
  • 验证方法:增加层数或参数量,若训练集表现提升,则原模型可能过于简单。

2. 检查数据问题

2.1 数据质量

  • 标签噪声
  1. 验证方法:随机检查部分样本的标签是否正确,或计算标签一致性。
  2. 影响:标签错误率高(如 >5%)会导致模型难以学习真实规律。
  • 输入数据异常
    • 验证方法:统计像素/特征值的分布(如均值、方差),检查是否存在异常值或缺失值。

2.2 数据分布

  • 训练-测试分布差异
    1. 验证方法:对比训练集和验证集的统计特征(如均值、方差、类别比例)。
    2. 示例:若训练集 90% 是类别 A,而验证集均匀分布,偏差可能来自数据不平衡。
  • 数据泄露

验证方法:检查是否意外将验证集数据混入训练集(如时间序列数据未按时间划分)。

2.3 数据增强

  • 验证方法:关闭数据增强(如随机裁剪、旋转),观察训练集表现。

若关闭后训练集准确率上升,则增强可能过度破坏了原始信息。

3. 控制变量实验

3.1 使用合成数据

  • 步骤
    1. 生成简单的线性可分数据(如 sklearn.datasets.make_classification)。
    2. 用相同参数训练模型。
  • 结论
  1. 若在合成数据上表现良好,则原问题可能来自数据
  2. 若仍表现差,则问题可能来自参数或模型结构。

3.2 简化模型

  • 步骤:用单层线性模型训练原数据。
  • 结论

若简单模型表现合理,则原复杂模型可能参数配置不当;

若简单模型也表现差,则数据可能存在问题(如特征与标签无关)。

4. 监控训练动态

4.1 损失曲线分析

  • 数据问题

训练损失持续震荡:可能数据噪声大或学习率过高。

训练损失不下降:可能特征与标签无关,或数据预处理错误(如未归一化)。

  • 参数问题

验证损失早于训练损失上升:过拟合(需调整正则化或早停)。

4.2 梯度检查

  • 方法:统计每层梯度的均值和方差(如使用 torch.nn.utils.clip_grad_norm_)。
  • 结论
    1. 梯度接近 0:可能是学习率过低或初始化问题;
    2. 梯度爆炸:可能是学习率过高或未归一化数据。

5. 工具辅助诊断

  • 可视化工具

TensorBoard/PyTorch Lightning:监控损失、准确率、权重分布。

SHAP/LIME:分析模型对特征的依赖是否合理。

  • 统计检验

KS 检验:比较训练集和验证集的特征分布差异。

假设检验:检查标签分布是否显著不同(如卡方检验)。

6.总结判断流程

  1. 先验检查:确保数据预处理(归一化、缺失值处理)和模型实现正确。
  2. 参数实验:调整学习率、批次大小等超参数,观察变化。
  3. 数据实验:简化数据(如用子集或合成数据)验证模型能力。
  4. 结果对比

若参数调整能解决问题参数问题;

若更换数据后解决数据问题。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐