面试题:大模型sft为什么第二个epoch的时候loss会突然下降
我整理好的1000+面试题,请看
大模型面试题总结-CSDN博客
或者
https://gitee.com/lilitom/ai_interview_questions/blob/master/README.md
最好将URL复制到浏览器中打开,不然可能无法直接打开
-------------------------------------------------------------------------------------------------
好了,我们今天针对上面的问题,
训练多个epoch呈现的train loss的变化趋势如下所示:
可以看到loss的变化呈现阶梯状,且随着微调的epoch变大,train loss会变得越来越小,但是eval loss却保持上升,暗示了过拟合。这里说一句,虽然eval loss的增加不能完全断定下游任务差(有可能会好),但现象就是现象,我们要为此找一个解释。
论文:Entropic Distribution Matching in Supervised Fine-tuning of LLMs: Less Overfitting and Better Diversity也指出了:当前主流的大语言模型(LLM)在用 Cross Entropy (CE) loss 进行监督微调(SFT)时,虽然可以很好地拟合训练数据,但往往会“过拟合 + 输出缺乏多样性”。 换句话说,CE-based 微调倾向让模型变得 “过于自信 + 重复训练数据分布中的模式/输出”,这削弱了模型生成多样、富有创造性或泛化的能力。总的来说:就是大模型在学习一个epoch之后,就记住了数据,等到第2个epoch的时候,会继续学习去增强这部分的记忆。
此外,fast ai也做了一波实验来解释这种现象,ast.ai 的实验(Kaggle 科学考试题)观察到非常反常的训练损失曲线:1. 训练损失在每个 epoch 结束处突然跳降→ 表明模型看到数据第二遍时瞬间几乎全部记住。2. 验证损失不稳定,甚至变差,因为模型记忆训练集 → 预测变得过度自信→ 自信的错误 = 损失被极大惩罚,所以验证 loss 上升。3. 多位开源开发者在不同框架中均观察到类似现象,不局限于 HuggingFace Trainer,不局限于 LoRA 或全参,是现象级一致观察
更多推荐
所有评论(0)