Debug

本文最后更新于 2026年2月21日 下午

北京大学信息科学技术学院 生成模型基础(2025秋)的课程笔记

第四部分:Debug

这一讲的内容较为轻松但是很有趣,主要介绍了在机器学习训练中如何更有效地debug

一个机器学习研究者的日常belike:
找一份靠谱的代码(通常来自github/huggingface)
针对自己的问题做特定修改(修改模型结构/修改目标函数/接入新的下游任务/设计新的优化算法)
充分检查

然而debug通常是一件很麻烦的事情,这是由于:
深度神经网络复杂、不可解释
超参数非常多(模型结构,网络层数、宽度、学习率,batch size,优化器,dropout……)
非线性模型,没有优化方法可以收敛到全局最优

因此在训练和测试中就会遇到各种各样稀奇古怪的问题,下面我们将逐个击破

训练中的问题

情况一

如图所示,这里输入输出有明显关联,训练误差一开始也正常下降,然而一段时间过后误差却突然上升,判断很可能是某一次迭代出了问题,针对性进行解决

情况二

这次的情况甚至还不如上一种,因为模型压根就不收敛,训练误差从未降低(悲)
所以得全方位排查错误,可能是代码就出现问题,也可能是优化问题,可以采用较为简单的模型/任务进行验证,逐一排查

情况三

这次看起来倒是赏心悦目,误差初期降的很好,然而到后来误差开始上下抖动,甚至是规律的周期运动,令人疑惑()
猜测可能是学习率过大,或者数据未完全打乱

情况四

这一次除了损失函数不下降……貌似都没问题
然而一般最麻烦的问题就是看不出明显问题
所以要从模型的各种参数之中考虑,逐一排查,很是麻烦

测试中的问题

然而,经常是训练的时候风平浪静,一放到测试集上便风云突变,应该如何是好?

情况一

这里模型在测试集中表现的并不差,然而与训练集相比水平明显有下降,说明模型泛化能力可能不够

情况二

这种情况就比较惨了,测试集上损失函数要么很高,要么很低,但无论如何总是一马平川,和笔者的心电图一样(bushi)
推测是数据可能有问题,或者测试的代码不对

情况三

还有最后一种情况,测试集损失虽然下降,却降的很不稳定,起起伏伏,这显然也是无法接受的
但在训练集上曲线降的很平滑,推测是测试集数据量太小,有一定偶然性


Debug
http://example.com/2026/02/21/gen4/
作者
Yjy
发布于
2026年2月21日
更新于
2026年2月21日
许可协议