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 数据是指令-回答对:
$$ (x, y) $$
其中:
常见格式:
{
"instruction": "解释什么是过拟合",
"input": "",
"output": "过拟合是指模型在训练数据上表现很好..."
}
多轮对话格式:
{
"conversations": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好,有什么可以帮你?"}
]
}
标准自回归交叉熵,通常只对回答部分计算:
$$ \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}) $$
RM 数据是偏好对:
$$ (x, y_w, y_l) $$
其中:
数据来源:
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$ 是奖励模型。
PPO 的数据是在线采样的:
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] $$
其中:
DPO 数据也是偏好对:
$$ (x, y_w, y_l) $$
和 RM 阶段相同。
$$ \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) $$
$$ \text{预训练} \rightarrow \text{SFT} \rightarrow \text{RM} \rightarrow \text{PPO} $$
$$ \text{预训练} \rightarrow \text{SFT} \rightarrow \text{DPO} $$
(1)SFT 到 RM
(2)RM 到 PPO
(3)SFT 到 DPO
(4)参考模型
SFT 不只是教格式,还:
(1)模型不会遵循指令
(2)缺乏参考模型
(3)偏好数据难以生成
(4)训练不稳定
(5)效果差
SFT 是 DPO 的必要前置步骤。
这是一道很好的大模型对齐面试题,适合考察候选人对 SFT、RM、PPO、DPO 全流程的理解。它既能考察各阶段的数据格式和损失函数,也能延伸到阶段衔接和跳过 SFT 的后果。如果候选人能把四个阶段的数据格式、损失函数、衔接关系以及跳过 SFT 的问题都讲清楚,基本可以判断其具备大模型对齐的扎实基础。
评论专区
评论加载中...登录后即可发表评论