标准回答
怎么识别过拟合
最可靠的信号是:训练集 loss 持续下降,但验证集 loss 开始回升(两条曲线分叉)。其他征兆包括模型对训练样本能近乎逐字复述、在训练集风格上表现极好但稍微换个问法就崩、生成变得刻板。要发现它,前提是始终留一个验证集做监控。
缓解手段(按优先级组合使用)
更多、更多样的数据 + 数据增强:过拟合的根因常是数据太少或太单一。扩充数据量、增加任务/措辞多样性,或对现有样本做改写、回译等增强,是最治本的办法。
早停(Early Stopping):按验证集指标监控,一旦 eval loss 不再下降甚至回升就停止训练,并回退到验证集最优的 checkpoint。
降低 epoch 数:LLM 微调通常 1~3 个 epoch 就够,盲目多轮极易过拟合。
降低学习率:过大的学习率会让模型快速死记训练样本,适当调小更新更平稳。
Dropout:在训练时随机丢弃部分激活,迫使模型不依赖个别神经元,提升泛化。
Weight Decay(L2 正则):惩罚过大的权重,限制模型复杂度。
用 PEFT 限制容量:LoRA 等方法可训练参数远少于全参数微调,容量天然受限,不易记住噪声;进一步可减小 LoRA rank 来更强地约束容量。
标签平滑(Label Smoothing):避免模型对目标 token 过度自信,软化标签分布,提升泛化与校准。
实践组合
典型做法是:留验证集 + 早停 + 1~3 个 epoch + 适中学习率 + LoRA,必要时再叠加 weight decay 和数据增强。核心原则是「用尽量小的容量和尽量短的训练,配合验证集监控,刚好学会任务但别学进噪声」。
常见误区
⚠️ 常见踩坑
不留验证集、只盯训练 loss 下降就以为模型在变好,结果训练越久线上越差。也别指望单靠加大 epoch 把指标「磨」上去——过拟合往往正是训练过头造成的,验证集才是判断该不该继续训练的唯一标尺。
追问
追问 1:为什么减小 LoRA 的 rank 能缓解过拟合?
LoRA 的 rank 决定了低秩增量矩阵的容量——rank 越大,可训练参数越多,表达能力越强,也越容易记住训练样本的噪声。减小 rank 等于压缩模型在微调阶段能改动的自由度,逼它只学到数据中最主要的规律而非细节噪声,从而提升泛化。代价是 rank 太小可能欠拟合,需要在验证集上权衡。
追问 2:早停时应该监控什么指标?只看 loss 够吗?
验证集 loss 是最通用的早停信号,但对生成任务它不一定完全对齐最终效果。更稳妥的做法是同时监控与业务对齐的指标,例如任务准确率、生成质量评分、或用一个评测集跑端到端表现,并兼顾通用能力是否退化。综合多个指标判断,能避免「loss 还在降但实际生成已开始变差」的盲区。
追问 3:过拟合和灾难性遗忘是一回事吗?
不是,但常常同时发生且诱因相近。过拟合是「对训练集记得太死、对新样本泛化差」;灾难性遗忘是「学了新任务、丢了原有的通用/旧能力」。两者都容易被「训练步数过多、学习率过大、数据分布过窄」放大,因此早停、降学习率、PEFT、混入通用数据等手段往往能同时缓解二者。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习