大模型要在某个领域变专业,常见做法是继续预训练:拿领域语料接着训。但这里有个反复出现的坑——训完领域能力上去了,原本的通用问答、写作、推理却明显退步,老用户一问就发现「换了个模型」。行业里管这个叫忘本。本文按机制层思路,讲清它怎么发生,以及混旧数据这套配方怎么配。
忘本是怎么发生的
先看来路。继续预训练的梯度全部朝着领域分布推,通用语料的分布信号被稀释到极低比例,模型在通用任务上的行为模式被逐步改写。和微调的灾难性遗忘相比,续训的「忘」更慢但更彻底,因为语料规模大、训练步数长,方向的偏斜有足够时间固化。领域语料越窄、步数越多,忘得越干净。判断有没有忘本,不能凭感觉,要跑通用基准:拿续训前的模型和续训后的模型各答同一套通用题,逐项对比,掉分的项就是被冲掉的能力。
配方一:新旧数据按比混训
第一味料是混比。把领域语料和原始预训练分布的语料按比例掺着训,常见做法是旧数据占到两三成起步,按评估结果上下调。进来的是一份领域语料和一份通用回放集,按权重采样混合成训练流;出去的是两头都不塌的模型。比例没有标准答案,靠反复试验收敛,思路和语料配比是怎么调出来的一致。采样时还要注意别让领域数据「霸榜」,常见做法是按 epoch 交替:这个 epoch 领域为主,下个 epoch 新旧混半,让通用能力周期性回补。
配方二:旧数据从哪来
第二味料是旧数据的来源。最理想是留一份原始预训练语料的高质量子集,按领域无关的原则抽样,保证通用覆盖面。拿不到全量时,退而求其次用公开通用语料或基座模型生成的合成样本,精度打折但有用。更轻的做法是把通用能力写成评估基准,每次续训后跑一遍,掉分就补旧数据。旧数据也不是越全越好,留得太杂会稀释领域信号,通常按「覆盖广、质量高、和领域弱相关」三条筛。
配方三:分阶段与小学习率
第三味料是节奏。学习率要比预训练峰值小,通常按微调档位取,避免大步冲垮旧能力;也可以分阶段走:先领域为主冲一段,再新旧混合回补一段,让通用能力有个恢复窗口。灾难性遗忘怎么防讲的两条路在这里同样适用,微调时学习率为什么比预训练小解释了力度背后的账。另外续训的 warmup 也要重做,直接接着大学习率起步,头几百步就容易把旧能力冲掉一块。
三味料各管一头,配法和边界逐条对一遍。
| 配方 | 具体怎么配 | 边界与注意 |
|---|---|---|
| 混比 | 领域语料和原始预训练分布的语料按比例掺着训,旧数据占到两三成起步 | 比例没有标准答案,按评估结果上下调;按 epoch 交替,这个 epoch 领域为主,下个 epoch 新旧混半 |
| 旧数据来源 | 留一份原始预训练语料的高质量子集,按领域无关的原则抽样 | 拿不到全量就用公开通用语料或基座模型生成的合成样本,精度打折;留得太杂会稀释领域信号 |
| 节奏 | 学习率比预训练峰值小,按微调档位取;先领域为主冲一段,再新旧混合回补一段 | warmup 要重做,直接接着大学习率起步,头几百步就容易冲掉一块旧能力 |
配套的监控不能省:通用基准和领域基准要同时跑,只看一头必然翻车。领域语料本身从哪来、怎么整理,见领域微调的数据从哪来;用模型自己扩量时怎么防分布坍缩,见自我训练是怎么回事。平时我们判断一个模型「还是不是原来那个它」,也常用 DeepSeek 和豆包各问一套固定问题,答两份对比着看。
- 根因:梯度全推领域分布,通用信号被稀释固化
- 混比:旧数据两三成起步,按双基准反复试验调
- 旧料:优先留高质量子集,退而求其次用合成补
- 节奏:小学习率加分阶段,给通用能力恢复窗口
- 监控:通用和领域两套基准同时跑,只看一头必翻车
聊聊混旧数据的常见疑问
- 旧数据越多越稳妥吗?:不是,旧占比过高领域能力上不去,目标是两头都过线,不是一头拉满。
- 忘本了还能补回来吗?:可以,用混合数据再训一段通常能拉回大部分,但完全回到续训前很难,所以事前留旧料最省事。
- 合成旧数据和真实旧数据差别大吗?:有差距,合成样本带基座分布,补得回「像」,补不全「全」,关键基准还得靠真实数据守住。


