真实面经题目 · 原创解析
大模型基础训练阶段为什么不能直接用 SFT 代替预训练?
这题考基础预训练和 SFT 的目标差异,重点是预训练用海量多样语料学习通用能力,SFT 只是在已有底座上教指令格式和偏好行为。
真实面经题目 · 原创解析
这题考基础预训练和 SFT 的目标差异,重点是预训练用海量多样语料学习通用能力,SFT 只是在已有底座上教指令格式和偏好行为。
基础训练阶段不能直接用 SFT 代替预训练,因为两者解决的问题不同。预训练通常在海量、多领域、长尾覆盖很广的语料上做 next-token prediction,让模型学习语言规律、世界知识、代码、数学模式、推理片段、长上下文结构和泛化表示。它的目标不是学会某一种问答格式,而是建立通用生成和理解能力。SFT 使用的是规模小得多、质量更高但分布更窄的指令-回答数据,目标是让已经具备基础能力的模型学会听指令、按格式回答、遵守对话规范和模仿高质量示范。若从随机初始化或能力很弱的模型直接做 SFT,模型只会看到有限任务和有限答案,覆盖不了语言和知识空间,容易记模板、泛化差,也无法可靠处理 SFT 数据没有覆盖的长尾问题。正确流程是先预训练获得底座能力,再用 SFT 对齐交互方式和任务格式,后面再根据需要做 DPO、RLHF 或规则后训练。SFT 可以影响模型行为,但不能替代预训练承担通用能力和知识覆盖。
大模型的通用语言能力主要来自预训练。模型在海量文本中学习词法、句法、事实关联、代码结构、数学模式、常识和多任务泛化。没有这个底座,后面的指令数据只是少量示范,难以凭空生成广泛能力。
预训练常用 next-token prediction,在大量自然文本、代码、网页、书籍、问答和结构化内容上学习分布。它看似简单,但因为数据规模和多样性巨大,能让模型学到开放域表示和生成能力。
SFT 的数据通常是 instruction-response、对话、任务示范或人工整理答案。它更像是在已有能力上教模型如何把能力包装成用户想要的输出:遵循指令、回答完整、格式稳定、少说废话、按任务风格回应。
高质量 SFT 数据成本高,规模和覆盖远小于预训练语料。它会强化被标注任务和回答风格,但无法覆盖所有语言现象、领域知识和长尾问题。从零直接 SFT 容易得到一个会模仿样例但泛化很差的模型。
预训练让模型在广阔分布上形成丰富表示;SFT 则把输出收敛到人类示范格式。如果基础能力还没形成就强行 SFT,模型学到的是窄格式和局部模式,不具备支撑复杂推理、迁移和组合泛化的基础。
典型流程是预训练建立基础能力,SFT 教指令跟随和示范行为,偏好优化或 RL 再进一步优化人类偏好、安全和任务成功率。面试里要强调 SFT 是对齐和适配阶段,不是基础能力的完整替代。
少量知识可以被记住或强化,但 SFT 的主要作用是行为和任务格式对齐。系统性知识覆盖仍主要依赖预训练、检索或专门领域继续训练。
为了预测下一个 token,模型必须利用上下文、语义、事实、代码结构和推理模式。数据规模足够大时,这个目标会逼出通用表示和生成能力。
理论上可以训练出某些模式,但成本和数据覆盖会非常不经济。指令数据太窄,难以替代开放语料对基础语言和知识分布的覆盖。
SFT 模仿高质量示范,教模型怎么答;RLHF 或 DPO 等偏好优化比较多个答案,让模型进一步偏向人类更喜欢、更安全或更有效的回答。