2.4 微调的问题与挑战


2.4 微调过程中的问题与挑战

本节摘要:微调不是"跑了就完事",路上有四只拦路虎:灾难性遗忘、过拟合、数据质量、评估困难。本节逐个拆解每个问题的表现、成因与对策,并给出一套"先小规模实验再全量"的工程方法论。

本节导读

阅读完本节,你应当能够:

  1. 识别灾难性遗忘并给出对策
  2. 判断并缓解过拟合
  3. 建立微调数据的质量标准
  4. 设计微调效果的评估方法
  5. 用"小规模先行"规避失败

一、问题与直觉

微调失败的现场通常长这样:训练完损失挺低,一问通用问题"模型变傻了"(灾难性遗忘);或者模型把微调数据背得滚瓜烂熟,换句话就答错(过拟合)。微调不是"学新东西",是"在不忘旧东西的前提下学新东西"——这个"不忘"才是真正的难点。

二、核心原理

2.1 四只拦路虎

2.2 灾难性遗忘:最隐蔽的坑

微调用新数据大幅更新参数时,模型可能"忘掉"预训练学到的通用能力。表现:领域问题答得好,通用问题变差。

对策

  • 小学习率(微调 = 小幅调整)
  • 训练数据里混入少量通用数据("混学")
  • 早停(在遗忘开始前停止)

2.3 过拟合:数据太少的代价

领域数据通常不多,模型容易"背题"。表现:训练损失低、验证损失高。

对策:早停、数据增强、正则化、LoRA 等低容量方法。

三、工程实践要点

3.1 数据质量标准

维度 标准
数量 够训练(几百到几千条)
质量 干净、无错标
多样性 覆盖各种问法
均衡 各类别都有

💡 关键直觉:微调效果的上限由数据质量决定。与其增加数量,不如提升质量——"一千条高质量 > 一万条低质量"在微调里是铁律。

3.2 评估方法设计

微调效果怎么量化?三个层次:

层次一 自动指标:BLEU、准确率等(快速但不全面) 层次二 人工评测:人打分回答质量(慢但真实) 层次三 任务对比:微调前后在相同测试集对比(必备基线)

微调前先跑一次基线——拿原始模型在测试集上测,微调后再测,对比才有意义。

3.3 小规模先行的工程方法

第一步 小数据:取 10% 数据快速跑一轮 第二步 看趋势:损失是否下降、效果是否提升 第三步 再全量:趋势对了再上全部数据与更大模型

⚠️ 常见坑:直接全量开跑,跑完才发现方向错了。小规模先行能在半小时内验证"数据格式对不对、策略对不对"——这是微调工程最重要的习惯。

3.4 常见问题排查表

现象 可能原因 排查
损失不降 学习率太小/数据错 调大学习率、检查数据
损失震荡 学习率太大/批次太小 调小学习率、加大批次
训练好测试差 过拟合 早停、加正则
通用能力下降 灾难性遗忘 混入通用数据
效果没提升 任务与领域不匹配 重新评估是否该微调

3.5 防遗忘的"混学"做法

把"混学"落到代码上,就是在领域数据里按比例掺入通用数据。比例是经验值:常见做法是领域数据与通用数据按 8:2 到 9:1 混合,通用数据可以来自通用指令集或预训练语料的抽样:

import random domain_data = [{"input": "退货流程是什么", "output": "请您在订单页申请退货……"} for _ in range(800)] general_data = [{"input": "什么是光合作用", "output": "光合作用是植物利用光能……"} for _ in range(200)] mixed = domain_data + general_data random.shuffle(mixed) # 打乱,避免模型先学领域、后忘领域

混入通用数据的代价是训练成本略增、领域收敛略慢,但它能显著缓解灾难性遗忘——微调后模型回答通用问题依然正常。如果发现通用能力仍下降,可以进一步增大通用数据比例,或改用更小的学习率。反过来,如果领域效果不够好,说明通用数据占比可能偏高,按先领域效果、再通用能力的顺序逐步微调比例。

温故知新

  • 要点一:微调难在"不忘旧"——灾难性遗忘是隐蔽大坑
  • 要点二:小学习率、混学通用数据、早停是防遗忘三招
  • 要点三:过拟合靠早停、增强、正则与低容量方法
  • 要点四:数据质量决定上限,一千条高质量胜过一万条
  • 要点五:评估三层次——自动、人工、任务对比,先跑基线
  • 要点六:小规模先行是微调工程的第一习惯

第 2 章完结。第 3 章深入参数训练的细节——优化器、正则化、超参数与监控。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U