微调常见问题有哪些?

微调三大坑:遗忘、过拟合、幻觉
你吭哧吭哧搞了三天数据,清洗了上万条样本,终于微调出一个像样的模型。
结果一测——它把之前会的代码能力忘光了。
我第一次遇到这事的时候完全懵了,反复确认代码没写错、参数没配错。最后才发现,是模型自己"学歪了"。
这就是微调的残酷现实:学新东西的同时,原来的本事可能正在悄悄消失。今天就聊聊我踩过的这些坑。
微调不是简单的"塞知识"
很多人以为微调就是往模型里塞新知识。
你想多了。
微调的本质是在两件事之间找平衡:保留旧能力 + 学会新技能。
这就像教一个学霸学新东西,他可能有三种"发病"状态:
忘掉旧知识、死板照搬、瞎编答案。
对应到模型世界,就是今天要说的三个问题:
灾难性遗忘、过拟合、幻觉。
这三种问题长得完全不一样,解决思路也完全不同。
你不能指望用同一套方法搞定所有问题。
灾难性遗忘:为什么模型越训越"傻"
概念距离决定遗忘程度
你有没有过这种体验?
学英语学到一定程度,中文反而开始退化。
这就是概念距离——新旧知识越不一样,互相干扰越严重。
模型也一样。
研究发现,微调任务和预训练数据的差异越大,遗忘原有能力越厉害。
具体数据很吓人:指令遵循任务的遗忘幅度超过20%。
什么概念?你原来能完美回答"写一个Python函数",现在可能连"帮我格式化日期"都听不懂了。
三类任务的遗忘程度排名
不是所有任务都平等地"危险"。
遗忘程度从高到低是这样排的:
指令跟随 > 常识问答 > 领域医疗
指令跟随最容易遗忘,因为它跟预训练的"说话方式"差太远。
医疗任务相对温和,因为医学知识和预训练的常识有重叠。
这给你什么启示?
如果你要微调模型做指令类任务,得格外小心原有能力的保留。
为什么越专注越容易忘
一个反直觉的现象:模型越专注于某个任务,其他能力丢得越快。
这叫"任务冲突"。
模型参数总量是固定的,学新东西必然会挤占旧知识的空间。
就像你的手机内存,开太多APP,原来的就得被杀掉。
我之前给客服机器人做微调,加了销售话术数据集后,原本的退换货流程它就开始乱答。查了很久才发现是这个问题。
过拟合:学"歪"了的模型
怎么判断模型过拟合了
过拟合的本质很简单:背答案背疯了,遇到新题就完蛋。
模型在训练数据上表现炸裂,验证集上却拉胯。
具体表现:
训练准确率99%,验证准确率60%。
这个差距就是过拟合的信号。
你可能会问:训练和验证用的数据不是差不多吗?
问题就在这儿——模型根本没学"规律",它把训练集背下来了。
学生背题库的教训
想象一个学生,期末考试前把教材所有题目背下来了。
原题一做,100分。
换了个问法,60分。
换个数字,50分。
这个学生就是"过拟合"了。
模型也一样——它可能根本没理解知识,只是在记忆训练数据。
更可怕的是,这种"记忆"你从训练曲线上很难发现。
因为训练loss一直在降,看着很正常。
怎么救
过拟合的应对方法很成熟:
早停法是最简单有效的——每轮训练后看验证集表现,不涨了就停。
增加数据多样性也很关键。模型见过更多情况,才不会死记硬背。
正则化相当于给模型加约束,不让它"用力过猛"。
还有一点被很多人忽视:控制训练轮次。
很多新手以为训练越久越好,结果越训越歪。
幻觉:AI的一本正经的胡说八道
模型为什么爱编造
这个问题最让人头疼。
模型明明不知道答案,却能给你一个听起来非常专业、逻辑严密的胡说八道。
比如你问它:"薛定谔的猫是哪个品种?"
它可能会认真分析猫的品种特征、性格特点,最后推荐你养孟加拉猫。
这不是开玩笑,真实的对话中经常出现这种情况。
原因是:模型太擅长"构造答案"了。
它本质上是个文字接龙机器,给它开头,它总能编出合理的下一句。
当知识边界模糊时,它就会开始"填坑"——用看似合理的词填满空白。
幻觉的三种触发条件
训练数据质量不高——数据里有错,模型学错了。
知识边界模糊——它不确定自己知不知道,干脆瞎猜。
缺乏事实核查——没有机制让它说"这个我真不知道"。
更糟糕的是,模型往往对自己的胡说八道非常自信。
你问它"秦始皇统一六国是哪年",它可能面不改色地说"公元前2213年"。
它根本不知道自己错了。
我之前让模型写产品文档,它把不存在的API接口描述得有模有样,差点直接用到代码里。幸好同事review的时候发现了。
怎么缓解
好消息是,幻觉是可以缓解的。
RAG(检索增强生成) 是目前最流行的方案。
让模型先检索知识,再生成答案,而不是单靠"记忆"输出。
设置安全响应也很有效——明确告诉模型"不确定就说不知道"。
还有一种思路是增加事实校验层,让模型自己检查生成的答案是否可靠。
但必须说清楚:幻觉无法完全消除,只能降低到可接受范围。
实战指南:如何优雅地微调
数据准备:质量>数量
这是最容易被低估的一步。
很多人觉得数据越多越好,疯狂爬取、批量清洗。
结果呢?garbage in, garbage out。
好的微调数据要满足三点:
质量高——标注准确,没有噪声。
多样性强——覆盖各种场景和表达方式。
代表性好——能反映真实使用情况。
与其用一万条凑合的低质量数据,不如用一千条精心标注的高质量样本。
训练策略:渐进式学习
别一上来就全量微调。
先用小样本、快速迭代,找到合适的配置。
然后再扩大规模。
LoRA 这种轻量化微调方法强烈推荐。
它只更新少量参数,保留原模型大部分能力,从根本上减少遗忘。
我第一次用LoRA的时候,只用了全量微调十分之一的显存,效果居然差不多。现在基本上是首选方案了。
验证体系:多维度评估
很多人只关注新任务的表现。
这不够。
你得同时监控三个指标:
新任务准确率、原任务保持率、幻觉率。
任何一项崩了,都要停下来分析原因。
迭代优化:小步快跑
大厂做微调都是小规模实验 -> 验证 -> 放大。
不要一上来就跑全量训练。
跑一轮可能需要几天,错了就浪费大量时间和算力。
先跑个小数据集,验证思路对了再放大。
工具推荐:这些方法帮你避坑
LoRA:保留能力的利器
LoRA最近火得不行。
原理很简单:不做全量更新,只训练一小部分"适配器"参数。
效果是:原模型能力基本不变,新任务也能学会。
适合场景:大多数微调需求,尤其是你不想折腾太久的时候。
早停法+验证集:防过拟合标配
这个组合用了这么多年,从不过时。
每轮训练后,在验证集上评估。
验证损失连续N轮不下降,立刻停。
简单粗暴,但有效。
RAG:对付幻觉的杀手锏
如果你发现模型经常瞎编,RAG几乎是必选项。
它让模型在回答前先查资料,保证答案有据可依。
代价是响应速度会慢一些,架构也更复杂。
混合训练:对抗遗忘的妙招
把新任务数据和原任务采样数据混在一起训练。
这样模型在学习新知识的同时,也在复习旧知识。
遗忘问题会缓解很多。
缺点是数据准备更麻烦,训练成本也更高。
三大问题对照表
| 问题 | 症状 | 根源 | 应对思路 |
|---|---|---|---|
| 灾难性遗忘 | 原有能力退化 | 任务冲突 | 轻量化微调、混合训练 |
| 过拟合 | 泛化能力差 | 训练过度 | 早停、正则化、增加数据 |
| 幻觉 | 瞎编答案 | 知识不足 | RAG、安全响应 |
微调不是一锤子买卖。
你学会了识别这三大问题,已经比80%的微调开发者领先一步。
但问题来了——
微调适合所有场景吗?什么时候该用微调,什么时候用Prompt或RAG就够了?
这就是下篇要聊的内容了。
