图 1:本文封面,两个阶段的任务、数据与知识写入量对比。
先说明属性:这是一篇经典题解析,题目出自本地历史面试资料整理,与任何公司的当前招聘无关。「大模型的知识是预训练装的还是微调装的」看似二选一,真正考的是你能不能讲清两个阶段的训练目标与数据形态差在哪,以及由此推出的工程结论:想给模型灌新知识,该走哪条路。这个问题还直接连着幻觉治理——阶段分工搞错,后面所有优化都会找错方向。
一句话结论:知识主要在预训练阶段写入,微调教的是「怎么用」。
换个说法:预训练解决「知道什么」,微调解决「怎么表达」。一个基础模型其实「知道」很多东西,只是不会用对话的方式讲出来;SFT 做的主要工作,是把已经存在的知识调度成可用的回答形式。
预训练的目标函数是下一词预测:模型在海量无标注语料上反复预测下一个 token,为了把预测误差压下去,不得不把语料里的语言规律、事实关联、推理模式全部压缩进参数。2023 年发布的 LLaMA 技术报告给出的量级是数万亿 token 的公开语料——这个量级的文本覆盖了人类公开知识的相当大一部分,世界知识就在这个过程中被写进权重。监督微调(SFT)阶段的数据形态完全不同:通常只有几万到几十万条人工或机器构造的指令问答对,训练目标是让模型学会「像个助手一样回应」——听懂指令、按格式作答、知道什么该拒绝。数据量差了四到五个数量级,参数更新的幅度也小得多,它的产出是行为对齐,不是知识扩容。
为什么微调阶段硬灌新知识容易放大幻觉?
直觉上很多人会想:SFT 也是更新参数,往指令数据里塞新事实不就行了?2024 年发表的一项针对性研究(arXiv:2405.05904)用受控实验回答了这个问题,结论分两层。第一层:模型通过微调吸收新事实的效率很低——包含模型没学过的知识的样本,拟合速度显著慢于与已有知识一致的样本,说明预训练没打下的地基,微调很难补。第二层更关键:这些含新知识的样本一旦最终被学会,模型产生幻觉的倾向会随之线性上升。机制不难理解:SFT 的训练信号奖励的是「像专家一样流畅地给出答案」这个行为本身,而不是「答案是否有据」。当训练数据里反复出现模型其实不懂、却被要求肯定作答的例子,模型学到的元技能就是「不会也要说得像会」——这正是幻觉的行为模板。
想让模型掌握新知识,正确的入口在哪?
按知识形态分三条路。一是领域知识要进参数:用领域语料做继续预训练(continued pre-training),延续下一词预测的目标再跑一段,让新知识以预训练的方式写入,然后再接 SFT 做行为对齐——这是「预训练装知识、微调装规矩」的标准组合。二是时效性强、需要溯源的知识:根本不该进参数,走 RAG 把知识放在外部检索系统里,随查随用,还能给出出处。三是 SFT 的本职工作:定输出格式、语气风格、任务边界与安全策略,别让它背知识包袱。把这三条路分清,幻觉治理的方向就不会错:幻觉率高的系统,先查是不是把该走检索和继续预训练的知识硬塞给了指令微调。
图 2:两阶段分工、幻觉放大机制与新知识的三条正确入口。
面试现场的答题结构。
先给结论「知识主要在预训练写入,微调负责对齐行为」,然后用数据形态支撑:万亿 token 无标注语料加下一词预测,对比数万条指令问答加行为模仿,量级差四五个数量级。接着回答追问「那微调完全不能注入知识吗」:能,但效率低且有代价——引用上述研究的两层结论,学得慢、学会之后幻觉倾向线性上升。最后落到工程建议收尾:领域知识走继续预训练,时效知识走 RAG,SFT 只管格式与边界。答到「微调的训练信号奖励的是作答行为而非事实依据」这一层,就把机制讲透了。你在做领域模型时是怎么组合继续预训练和微调的?有没有踩过「微调灌知识反噬幻觉」的坑?欢迎聊聊。