继续预训练和领域微调有什么区别?
简化版
继续预训练通常在大量领域原始文本上继续做 next-token prediction,主要补充术语、知识和领域语言分布;领域微调通常用较少的指令—回答或任务标注数据,主要教输出格式、任务行为和交互方式。知识缺口优先考虑继续预训练,行为缺口优先 SFT,实践中常先 DAPT 再 SFT,并混入通用数据防遗忘。
详细版
两者的损失和数据形态不同。继续预训练沿用预训练目标,可吃论文、病历或代码仓库,数据规模大且标注成本低;领域 SFT 对 prompt 后的回答 Token 计算监督损失,需要高质量示范,能快速塑造“如何答”。SFT 不是可靠的海量知识数据库,少量示范也无法替代领域语料覆盖。
选择前先用基准拆分术语理解、事实知识、任务遵循与格式正确率。DAPT 需要较小学习率、通用 replay、Tokenizer/OOV 检查和 checkpoint 回归;SFT 要关注模板、loss masking 与示范多样性。最终以领域提升、通用能力损失、幻觉、成本和部署兼容共同验收。
| 维度 | 继续预训练 | 领域微调/SFT |
|---|---|---|
| 数据 | 无标注领域语料 | 指令—回答/任务标签 |
| 目标 | next-token 全文 | 多只监督回答部分 |
| 主要改变 | 知识与表示 | 行为与格式 |
| 典型规模 | 大 | 相对小 |
完整版教学
一、先区分知识与行为
模型不知道领域术语、文档风格和长尾事实,属于知识/表示缺口;模型知道事实却不会按 JSON、诊断步骤或企业口吻回答,属于行为缺口。继续预训练更擅长前者,SFT 更擅长后者。若不先诊断,容易用昂贵方法解决错误问题。
例如基础模型能解释心电图概念,但面对内部病历缩写频繁误解,可用领域原文继续预训练;如果它已能理解,却无法输出医院要求的结构化字段,则几十万条优质指令微调可能更直接。
二、训练目标有何不同
继续预训练通常对序列所有有效 Token 计算自回归损失:
L_DAPT = - Σ_t log p(x_t | x_<t)
SFT 把系统提示、用户问题和回答拼接,但常只在回答区域计算 loss。它用示范告诉模型在条件输入下采取什么输出行为。若错误地把用户问题也算入 loss,模型会花容量复现 prompt,且可能影响对话边界。
记忆钩子:继续预训练在教模型“这个领域通常怎样写、有哪些知识”,SFT 在教“用户这样问时应该怎样答”。
三、数据建设成本和规模
DAPT 可利用未标注语料,规模可达数十亿 Token,但清洗、去重、许可和隐私处理仍昂贵。SFT 数据量较小,却要求答案正确、格式一致、覆盖真实任务,单条制作成本更高。二者的瓶颈一个偏数据管线,一个偏专家标注。
| 数据问题 | DAPT 后果 | SFT 后果 |
|---|---|---|
| 文档重复 | 隐式过权、记忆 | 某种回答模式过拟合 |
| 事实过时 | 学到旧知识 | 示范直接给错答案 |
| 领域太窄 | 通用遗忘 | 任务外拒答或格式僵化 |
| 隐私信息 | 可能被复现 | 输出示范泄密 |
无论哪种都需保留数据版本和来源,不能把“无需人工标签”误解为无需治理。
四、为什么常采用 DAPT 再 SFT
先 DAPT 让模型建立领域词汇、概念关系和文体表示,再用 SFT 把这些能力组织成任务答案。顺序反过来后继续预训练,模型可能淡化刚学到的指令行为,因为新的目标不再强调问答格式。若必须反向训练,应在最后再做短 SFT 恢复行为。
一个流程可用 20B 领域 Token 做 DAPT,混入 30% 通用 replay,再用 100K 条指令做 SFT。数字不是固定配方,关键是每阶段设独立 checkpoint 和评测,确认提升来自何处。
五、灾难性遗忘怎么控制
领域分布过窄会使通用验证 loss 上升,语言流畅性和常识能力下降。可降低学习率、减少训练 Token、混入通用数据、冻结部分层或采用参数高效方法。通用 replay 的比例由回归实验决定,不能假设 5% 或 20% 永远够。
监控时同时看领域与通用曲线。如果领域 loss 继续下降而通用任务急剧退化,继续训练的边际价值已变差。早停点应以多目标 Pareto 为依据,而不是只看领域 loss 最低。
六、知识注入为何不总可靠
继续预训练可以提高领域知识,但模型参数不是可精确更新的数据库;事实可能互相干扰,也无法保证回答引用最新来源。频繁变化、需要证据和权限控制的知识,更适合 RAG 或工具查询。DAPT 适合稳定术语、推理模式和广泛领域分布。
SFT 中重复几十遍一个事实可能让模型记住,却会与行为模板绑定,更新和删除困难。选择方案时应把稳定知识、动态知识和输出行为分开:参数学习前两者中的稳定模式,外部系统承载动态事实。
七、如何设计对照实验
建立四组:基础模型、仅 DAPT、仅 SFT、DAPT+SFT。保持最终评测提示一致,分别测领域语言建模、闭卷知识、任务成功、格式遵循、通用回归与安全。还应加入给定正确证据的测试,判断知识缺口还是推理缺口。
若 DAPT 把领域准确率从 55% 提到 70%,SFT 提到 66%,组合到 78%,说明两者互补;若 DAPT 只提高 1% 却成本巨大,可能领域语料质量或问题定义有误。部署还需检查 Tokenizer、模型结构和推理框架是否兼容新 checkpoint/adapter。
八、常见误区与追问
- 误区:继续预训练就是把 SFT 多跑几个 epoch。 二者数据形态、loss mask 和目标都不同。
- 误区:SFT 可以可靠写入所有领域事实。 参数记忆难更新、难引用,动态知识更适合检索。
- 误区:领域指标提升就代表适配成功。 还需测通用遗忘、安全和真实任务格式。
- 追问:只有少量原始语料怎么办? 防止重复过拟合,可优先 RAG、SFT 或较小学习率的 PEFT 实验。
- 追问:为什么 DAPT 常在 SFT 前? 最后的训练阶段更直接塑造最终行为,SFT 放后面可恢复指令遵循。
- 追问:何时选择 RAG? 知识经常变化、需要引用、权限隔离或可删除时。
九、加强记忆
区别可记成“原文补知识,示范塑行为”:DAPT 用大量领域原文延续 next-token 目标,SFT 用少量高质问答教任务输出。诊断知识还是行为缺口,必要时按 DAPT→SFT 排序,用通用 replay 控遗忘,并把动态事实留给 RAG。通过四组消融而不是术语判断,才能选对适配路线。