第 03 课 · 教它选择

偏好对齐:DPO 家族

会模仿标注里的平均水平。要对齐「更好」,需要,而不是更多模仿。

KTOORPO

Archify · workflow

DPO:用偏好对教模型选择

SFT 过关后才上 DPO。数据是 chosen / rejected,不是再模仿一遍。

  1. SFT 检查点
  2. 偏好对
  3. DPOTrainer
  4. 更会选的模型

输入

对齐

产出

数据

SFT 检查点

第 1 课 adapter

偏好对

chosen > rejected

UltraFeedback

TRL

参考模型

冻结的 πref

DPOTrainer

β ≈ 0.1

loss_type=dpo

更会选的模型

再跑 10 条压测

显存紧

SimPO

无参考模型

β ≈ 2.0

  • 偏好对 → 成对数据
  • 参考模型 → KL 约束
  • 偏好对 → 显存不够

跟上第 3 课

  • 必须先有过关的 SFT
  • β 从 0.1 起,一次只改这一个数

不要做

  • 没有偏好对就不要上 PPO
  • 4090 把 max_length 降到 512

为什么只做 SFT 不够

同一个问题,两种回答

SFT 不知道哪一句更好

标注里既有出色回复,也有啰嗦、讨好、带一点有害的回复。交叉熵会把它们一视同仁地模仿。人类偏好本质是比较:「A 比 B 好」,不是「A 的每个字都该提高概率」。

Bradley-Terry:用分数差表示「更好」的概率

FORMULA

P(y_w ≻ y_l | x) = σ( r(x,y_w) − r(x,y_l) )

胜者分数比败者高得越多,人们越可能选它。 整套数学都站在这一个 sigmoid 上。

两条路

经典 RLHF

  • 先训
  • 再用 优化策略
  • 四个模型同时驻留
  • 稳,但贵且脆

DPO

  • 不训
  • 不跑 RL 采样循环
  • 策略 + 冻结参考,共两份
  • 一条分类损失

DPO 四步,不必怕公式

每一步都在消掉一个「麻烦」

  1. 1

    写出 RLHF 目标

    提高奖励,同时用 · 拉住,防止、模式坍缩、语言退化。

  2. 2

    求出闭式最优策略

    最优策略 ∝ 参考策略 × exp(r / )。奖励高的回复,概率被指数放大。

  3. 3

    反过来用策略表达奖励

    r(x,y) = log(π / π_ref) + 配分函数。奖励不再需要单独网络。

  4. 4

    代回 Bradley-Terry

    配分函数相减抵消。剩下:拉高胜者相对参考的对数概率,压低败者。

DPO 损失

FORMULA

L = −log σ( β [ log π_θ(y_w|x)/π_ref(y_w|x) − log π_θ(y_l|x)/π_ref(y_l|x) ] )

括号里是「胜者比参考更被当前模型喜欢」减去「败者……」。 约 0.1:太大则不敢动,太小则跑飞。

一对偏好,如何改概率

选哪一句是更好的。 要做的,就是把绿的相对参考抬起来,把红的压下去。

用户问:用一句话解释过拟合。

DPO 不要求胜者完美,只要求相对更好。两个回复越接近,越能教会细选择。

变体:按你缺什么来选

同一家人,约束不同

方法还要参考模型吗数据形态一句话
要成对胜负最正统,两份模型
不要成对胜负用平均 logprob + 长度惩罚 γ,≈2.0
KTO通常要单条好/坏没有成对数据时用
ORPO不要成对 + 一边学说话一边学选择
IPO要成对胜负平方损失,更抗过拟合偏好

显存紧、不想载入:先看 。只有点赞/点踩:KTO。想 和对齐一起做:ORPO。

第 3 课带走的话

  1. 01 模仿, 选择。
  2. 02 不是装饰,是防模型走火入魔的绳子。
  3. 03 从 0.1 试起,看边界(margin)而不是只看 loss。
  4. 04没有成对数据,不要硬上 。
  5. 05对齐之后必须做安全回归:10 条有害请求的拒绝率。

本课两道小题

第 3 课

DPO 相对经典 RLHF + PPO,最关键的简化是什么?

它直接在偏好对上训练。

第 3 课

β 太大或太小会怎样?

它控制「离参考模型有多远」。