跳到主要内容

预训练、监督微调与偏好优化

模型架构决定信息怎样流动,训练决定参数最终学会什么行为。两个使用同样 Transformer 架构的模型,也可能因为数据、目标和更新方式不同,表现得很不一样。理解训练阶段,可以先问:正确答案从哪里来,损失在奖励什么输出?

预训练从大量样本中学习

自回归语言模型根据前面的 token 预测下一个 token。把文本错开一个位置,就得到了输入和目标。对应的负对数似然为:

Lnext=tlogpθ(xtx<t).L_{\mathrm{next}}=-\sum_t\log p_\theta(x_t\mid x_{<t}).

假设分词结果为 the / lamp / is / blue,预测 blue 时使用的前文是 the / lamp / is。训练时通过因果注意力掩码,可以同时计算多个位置的损失;生成时还没有未来 token,只能逐个延长序列。自回归生成进一步解释这一区别。

Encoder 也可以通过上下文恢复被遮住的 token。BERT 原论文使用掩码语言建模预训练,再适配下游任务。这种双向表示可以服务分类或抽取,却不会自动变成听懂任意指令的助手。架构上的差异见 Encoder 与 Decoder 家族

自监督减少了逐条人工标注的需求,但学习过程中仍有目标和误差信号。数据来源、重复程度、语言比例和文档边界都会影响结果。文本预测损失低,也不能单独证明引用准确或工具调用正确,因为这些任务的评价目标不同。

监督微调明确期望输出

监督微调,通常简称 SFT,使用输入与目标组成的样本。聊天助手的输入可以是请求,目标是合适的回答;Encoder 分类器的目标可以是类别标签。SFT 描述训练阶段和数据形式,不要求模型一定采用聊天架构。

对条件文本生成,常见目标是根据提示词和前面的目标 token,预测回答中的后续 token。损失掩码可以排除提示词及填充位置。例如,一条训练记录有 80 个提示 token、20 个回答 token 和 28 个填充 token;若只计算回答部分的平均损失,分母应是 20,不是 128。混淆这一点,会悄悄改变长短回答在训练中的权重。

假设要训练一个 keepsummarizediscard 分类器。“已经保存过的笔记副本 → discard”教给模型的是具体决策。如果训练集只有容易识别的重复文本,它不会因此学会处理部分重复、部分新增的情况。应该收集边界样本和标注分歧,并避免同源样本分散到训练集与测试集。

InstructGPT 论文给出了一个具体流程:示范数据、人类比较、奖励模型和策略优化。论文支持的是该流程如何实现,不能据此认定所有后来的模型都必须经过完全相同的步骤。

偏好数据比较多个答案

示范数据说“请产生这个答案”,偏好数据说“对同一输入,A 比 B 更好”。两者传递的信息不同。两个回答可能都正确,只是一个更符合格式;也可能都错误,只是一个听起来更有说服力。

奖励模型流程先用比较数据训练评分器,再通过策略优化提高评分,通常还约束模型不要偏离参考策略太远。直接偏好优化 DPO在其参考策略建模下,直接使用胜出与落败回答更新策略,省掉单独训练奖励模型和在线策略优化的环节。偏好收集与行为验证仍然要做。

下面是虚构的标注意图,不是实测模型结果:

输入更好的回答较差的回答这对样本在教什么
只返回一个标签keepI would choose keep because…输出格式
处理两个互相冲突的日期指出冲突并查证无依据地确定其中一个如何处理不确定性
解读看似危险但不执行的代码样本解释给定代码只因一个关键词就拒绝理解实际任务

如果数据大量来自第一行,格式遵循可能改善,事实推理却未必变化。因此,偏好标签应对应清楚的评价规则,不能只写含糊的“这个更好”。

InstructGPT 的三个阶段:用人工示范监督微调、用排序比较训练奖励模型、用 PPO 优化策略。查看清晰大图

从左向右看:人工示范训练 SFT 策略,回答排序训练奖励模型,奖励分数再指导 PPO 更新。这是 InstructGPT 在预训练之后采用的具体流程;上文介绍的 DPO 使用另一种偏好优化方式。

损失降低具体说明了什么

假设正确下一个 token 的概率从 0.20.2 提高到 0.50.5,自然对数损失从 log0.21.609-\log0.2\approx1.609 降到 log0.50.693-\log0.5\approx0.693。目标奖励模型给观测到的 token 更多概率,并没有另行检查整句话是否真实。

同样,提高偏好回答的相对概率,也可能学到意外捷径:更长的答案更容易赢、自信语气更容易赢,或者只学会某位标注者的风格。如果使用场景同时关心事实性、任务成功率、格式和成本,就应分别评估。测试集需要按提示家族或原始文档与训练隔开,具体见数据划分与泄漏

根据问题选择训练阶段

领域术语学得不好,继续预训练可以让模型接触该领域的文本分布;理解了输入却总用错输出结构,监督示范可能更直接;多个有效答案的实用程度不同,偏好数据可以教它如何选择。这些都是需要与基线比较的假设,不是必须依次执行的大型训练计划。

假如助手缺的是今天更新的文档,更新权重很难替代实时检索证据。假如本地小分类器反复错分一个常见类别,补一批针对性标签可能比换大生成模型更合适。检索流程迁移学习分别解释这两类方案。

针对更窄目标训练,也可能损害之前会做的事情。除了新任务成绩,还应测保留能力,再用验证结果选检查点。Base、instruct、aligned 这些标签概括了训练经历,具体用途仍需要直接评估。

探索关联打开关联网络