对齐和后训练
在预训练阶段,基础模型从海量文本中学习文本内蕴含的语义知识,从而学会合理地预测下一个token。 经过预训练后,基础模型能够自发地生成下一个token(比如你输入一个“我”,模型会自动预测接下来可能的token,直到预测到的token是特殊的表示终止的token)。此时模型已经学会了语义理解、表示等能力,但这离人们需要的能力(处理特定任务的能力)还差得比较远,因此需要一种对齐的过程。个人理解后训练做的就是对齐(LLM的能力和人们对具体任务的需要)。
监督微调SFT
监督微调(Supervised Fine-tuning,SFT)的核心是让基础模型(一开始训练得到的初始文本生成模型)能够依照人类指令生成预期的回答。
基础模型通过对问答对的学习,能够习得一种模仿指令的能力,使得基础模型能够更好地在各类任务中,依据人类指令,输出更符合需要的回应。
因此这个阶段的数据集,往往是由明确的指令和标签/具体清晰的回应组成的。比如“你的身份是?”“某某模型”......“请按顺序输出26个英文字母。”“ABCDEFG......XYZ”
SFT通过最小化回应的交叉熵损失来训练模型。
SFT的数据
SFT 的效果高度依赖于数据质量,因为SFT使得模型会对数据进行强模仿。常用的数据策划方法包括:
- 蒸馏:用更强的指令模型生成回复,再训练小模型去模仿这些回复,把强模型的能力迁移到弱模型上。
- Best‑of‑K / 拒绝采样:针对同一提示生成多个候选回复,再用奖励函数选出最好的作为训练数据。
- 过滤:从大型 SFT 数据集中挑选出回应质量高且提示多样性好的样本,形成精简的高质量数据集。
数据集的核心是“质量比数量重要”。
全参数微调和参数高效微调
- 全参数微调:对每一层加入一个完整的权重更新矩阵 Δ W ,即修改所有参数。这可以显著提升性能,但需要大量存储和计算资源。
- 参数高效微调:例如 LoRA(低秩适配)通过在每层引入小的低秩矩阵 A 和 B 来调整模型参数。这减少了可训练参数的数量,节省显存,缺点是学习和遗忘都更有限,因为更新的参数更少。