✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

SFT、RM、PPO、DPO 这几个阶段的数据格式和损失函数分别是什么?它们之间如何衔接?如果跳过 SFT 直接做 DPO,会有什么问题?

创建时间:2026-09-18 更新时间:2026-09-18 阅读次数:1311 次 分类:微调与对齐技术

一、阶段概览

SFT、RM、PPO、DPO 是大模型对齐中的四个核心阶段,它们的数据格式、损失函数和衔接关系如下:

阶段 数据格式 损失函数 作用
SFT 指令-回答对 交叉熵 学会遵循指令
RM 偏好对 $(x, y_w, y_l)$ Bradley-Terry 负对数似然 学习人类偏好
PPO prompt + 在线采样 PPO clipped 损失 + KL 用奖励优化策略
DPO 偏好对 $(x, y_w, y_l)$ DPO 负对数 sigmoid 直接优化偏好

衔接关系:

$$ \text{预训练} \rightarrow \text{SFT} \rightarrow \text{RM} \rightarrow \text{PPO} $$

或者:

$$ \text{预训练} \rightarrow \text{SFT} \rightarrow \text{DPO} $$

一句话总结:SFT 教模型说话,RM 教模型判断好坏,PPO/DPO 让模型按偏好优化。


二、SFT 阶段

1、数据格式

SFT 数据是指令-回答对:

$$ (x, y) $$

其中:

  • $x$ 是指令或 prompt;
  • $y$ 是期望的回答。

常见格式:

{
  "instruction": "解释什么是过拟合",
  "input": "",
  "output": "过拟合是指模型在训练数据上表现很好..."
}

多轮对话格式:

{
  "conversations": [
    {"role": "user", "content": "你好"},
    {"role": "assistant", "content": "你好,有什么可以帮你?"}
  ]
}

2、损失函数

标准自回归交叉熵,通常只对回答部分计算:

$$ \mathcal{L}_{\text{SFT}} = -\sum_{t=1}^{T} \log \pi_\theta(y_t | x, y_{<t}) $$

如果只对回答计算 loss,则:

$$ \mathcal{L}_{\text{SFT}} = -\sum_{t \in \text{response}} \log \pi_\theta(y_t | x, y_{<t}) $$

3、作用

  • 让预训练模型学会遵循指令;
  • 学习回答的格式和风格;
  • 为后续 RM 和 RL 提供起点。

三、RM 阶段

1、数据格式

RM 数据是偏好对:

$$ (x, y_w, y_l) $$

其中:

  • $x$ 是 prompt;
  • $y_w$ 是更优回答(winner);
  • $y_l$ 是较差回答(loser)。

数据来源:

  • 用 SFT 模型对同一 prompt 生成多个回答;
  • 人工排序;
  • 转化为成对比较。

2、损失函数

Bradley-Terry 模型:

$$ P(y_w \succ y_l | x) = \sigma(r_\phi(x, y_w) - r_\phi(x, y_l)) $$

负对数似然损失:

$$ \mathcal{L}_{\text{RM}} = -\mathbb{E}_{(x, y_w, y_l) \sim \mathcal{D}} \left[ \log \sigma(r_\phi(x, y_w) - r_\phi(x, y_l)) \right] $$

其中 $r_\phi$ 是奖励模型。

3、作用

  • 学习人类偏好;
  • 给回答打分;
  • 为 PPO 提供奖励信号。

四、PPO 阶段

1、数据格式

PPO 的数据是在线采样的:

  • 输入 prompt $x$;
  • 策略模型生成回答 $y$;
  • 奖励模型打分 $r_\phi(x, y)$;
  • 不需要预先准备的偏好对。

2、损失函数

PPO 的优化目标:

$$ \max_\theta \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta} \left[ r_\phi(x, y) - \beta \cdot \text{KL}(\pi_\theta(y|x) | \pi_{\text{ref}}(y|x)) \right] $$

PPO clipped 损失:

$$ \mathcal{L}_{\text{PPO}} = -\mathbb{E} \left[ \min\left( \rho_t A_t, \text{clip}(\rho_t, 1-\epsilon, 1+\epsilon) A_t \right) \right] $$

其中:

  • $\rho_t = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}$;
  • $A_t$ 是优势函数;
  • $\epsilon$ 是裁剪范围。

3、作用

  • 用奖励信号优化策略模型;
  • 用 KL 约束防止偏离 SFT 模型;
  • 提升回答质量。

五、DPO 阶段

1、数据格式

DPO 数据也是偏好对:

$$ (x, y_w, y_l) $$

和 RM 阶段相同。

2、损失函数

$$ \mathcal{L}_{\text{DPO}} = -\mathbb{E}_{(x, y_w, y_l)} \left[ \log \sigma\left( \beta \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} \right) \right] $$

定义隐式奖励:

$$ \hat{r}_\theta(x, y) = \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)} $$

则:

$$ \mathcal{L}_{\text{DPO}} = -\log \sigma\left( \hat{r}_\theta(x, y_w) - \hat{r}_\theta(x, y_l) \right) $$

3、作用

  • 直接用偏好数据优化策略;
  • 不需要奖励模型;
  • 不需要在线采样;
  • 更简单、更稳定。

六、四个阶段如何衔接

1、RLHF 流程

$$ \text{预训练} \rightarrow \text{SFT} \rightarrow \text{RM} \rightarrow \text{PPO} $$

  • 预训练模型提供基础能力;
  • SFT 教模型遵循指令;
  • RM 学习人类偏好;
  • PPO 用 RM 的信号优化策略。

2、DPO 流程

$$ \text{预训练} \rightarrow \text{SFT} \rightarrow \text{DPO} $$

  • 跳过 RM 和 PPO;
  • 直接用偏好数据优化。

3、衔接关键点

(1)SFT 到 RM

  • RM 用 SFT 模型生成回答;
  • 人工排序;
  • 训练 RM。

(2)RM 到 PPO

  • PPO 用 RM 打分;
  • RM 质量直接影响 PPO 效果。

(3)SFT 到 DPO

  • DPO 用 SFT 模型作为参考模型;
  • 偏好数据可以是 SFT 模型生成的,也可以是外部的。

(4)参考模型

  • PPO 和 DPO 都需要参考模型;
  • 参考模型通常是 SFT 模型;
  • 用于 KL 约束或概率比。

4、数据流

  • SFT 数据:指令-回答对;
  • RM 数据:偏好对;
  • PPO 数据:在线采样;
  • DPO 数据:偏好对。

七、跳过 SFT 直接做 DPO 会有什么问题

1、SFT 的作用

SFT 不只是教格式,还:

  • 让模型学会遵循指令;
  • 让模型学会对话;
  • 让模型输出符合人类期望;
  • 建立基本的回答模式。

2、跳过 SFT 的问题

(1)模型不会遵循指令

  • 预训练模型只会续写;
  • 不会回答问题;
  • DPO 的偏好数据无法有效利用。

(2)缺乏参考模型

  • DPO 需要参考模型 $\pi_{\text{ref}}$;
  • 通常参考模型就是 SFT 模型;
  • 没有 SFT,参考模型只能是预训练模型;
  • 预训练模型和策略模型差异大,KL 约束不合理。

(3)偏好数据难以生成

  • 偏好数据通常由 SFT 模型生成;
  • 没有 SFT,生成的回答质量差;
  • 偏好对区分度低。

(4)训练不稳定

  • 预训练模型输出分布和偏好数据不匹配;
  • DPO 损失难以优化;
  • 可能崩溃。

(5)效果差

  • 即使训练成功,效果也远不如 SFT + DPO;
  • 模型可能输出格式混乱;
  • 指令跟随能力差。

3、实证

  • 原始 DPO 论文明确使用 SFT 模型作为起点;
  • 社区实践也表明 SFT 是必要的;
  • 跳过 SFT 通常效果很差。

4、例外情况

  • 如果基座模型已经经过指令微调;
  • 比如用已经 SFT 过的开源模型;
  • 可以直接做 DPO;
  • 但本质上还是有 SFT 阶段。

5、结论

SFT 是 DPO 的必要前置步骤。


八、简单评价这道面试题

1、这道题的价值

  • 这是大模型对齐中非常核心的一道题;
  • 一道题能考察四个阶段的数据格式、损失函数、衔接关系和跳过 SFT 的后果;
  • 区分度好,初级可能只知道 SFT 和 RLHF,中级能说清四个阶段,高级能讲清衔接和跳过 SFT 的问题;
  • 贴近实战,做对齐必然要理解这些阶段。

2、这道题的不足

  • 题目偏综合,如果没有实际训练经验,容易答得空泛;
  • 没有涉及具体超参数和实现细节;
  • 对 DPO 和 PPO 的对比可以更深入;
  • 没有涉及 RLAIF、GRPO 等新方法。

3、建议的追问方向

  • SFT 的 loss 为什么只对回答计算?
  • RM 的损失函数怎么推导?
  • PPO 的 KL 系数怎么调?
  • DPO 的参考模型可以换吗?
  • 跳过 SFT 直接用 DPO 会怎样?
  • SFT、DPO、PPO 的数据量比例大概是多少?

4、总体评价

这是一道很好的大模型对齐面试题,适合考察候选人对 SFT、RM、PPO、DPO 全流程的理解。它既能考察各阶段的数据格式和损失函数,也能延伸到阶段衔接和跳过 SFT 的后果。如果候选人能把四个阶段的数据格式、损失函数、衔接关系以及跳过 SFT 的问题都讲清楚,基本可以判断其具备大模型对齐的扎实基础。


📌 面试天下网:一款便捷的大模型学习口袋书,让富士康流水线的打工人也能摸到改命逆天的机会!
📌 网站公告:【悬赏 200 元/篇】寻找“大模型面试战场”的一手回忆录
📌 网站公告:【大模型/Agent面试陪练1V1指导】正式启动......

评论专区

评论加载中...