真实面经题目 · 原创解析
模型训练不收敛时怎么办?
模型训练不收敛要按数据、标签、特征、损失、优化器、学习率、初始化和梯度状态逐层排查,先定位现象再改参数。
出现于:美团 · 算法
真实面经题目 · 原创解析
模型训练不收敛要按数据、标签、特征、损失、优化器、学习率、初始化和梯度状态逐层排查,先定位现象再改参数。
我会先看 loss 曲线和指标,确认是不下降、震荡、发散还是验证集不提升。然后检查数据和标签是否错、特征是否归一化、样本是否极度不平衡、损失函数是否匹配任务。训练侧重点查学习率、优化器、batch size、初始化、梯度爆炸/消失、正则过强、网络结构和数值稳定。排查时用小样本过拟合测试、梯度统计、参数分布和 ablation 实验逐步定位。
不收敛可能是 loss 不降、loss 发散、指标震荡、训练集能学但验证集不升,或者训练早期正常后突然崩。不同现象对应不同排查方向。
标签错位、样本重复、数据泄漏、训练验证分布差异、类别极不平衡和输入异常,都会让模型无法学到稳定规律。先验证数据比盲目调参更高效。
数值特征未归一化、缺失值处理不当、文本截断错误、损失函数和任务不匹配,都会导致梯度信号差或目标错误。
学习率过大可能发散,过小可能几乎不动;初始化不当、激活饱和、梯度爆炸或消失、batch size 不合适都会影响收敛。
可以做小样本过拟合测试、打印梯度范数、观察参数分布、固定随机种子、简化模型和逐项 ablation,确认问题来自数据、模型还是训练策略。
如果模型连很小训练集都拟合不了,通常说明代码、损失、标签或优化过程有问题。
观察 loss 是否发散或下降过慢,尝试 learning rate range test、warmup 和调度策略。
可以用梯度裁剪、降低学习率、归一化、残差结构和更合适的初始化。