强化学习与人类对齐

1. 介绍一下 PPO、DPO、GRPO 的定义、结构区别、优缺点及适用场景。

1. PPO

$$ L^{CLIP}=\mathbb{E}_t\Big[\min\big(r_t A_t,\ \text{clip}(r_t,1-\epsilon,1+\epsilon)A_t\big)\Big],\quad r_t=\frac{\pi_\theta(a_t|s_t)}{\pi_{old}(a_t|s_t)} $$
  • $r_t$ 是新旧策略的概率比:$r>1$ 表示新策略更倾向这个动作,$r<1$ 表示更不倾向。
  • $A_t$ 是优势:$A>0$ 表示这个动作比平均好,$A<0$ 表示比平均差。
  • clip 把 $r$ 限制在 $[1-\epsilon,1+\epsilon]$,$\epsilon$ 一般取 0.2。作用是一次更新不要偏离旧策略太远,防止某一批数据把策略改崩。

2. PPO 的 Clip 机制是什么?为什么公式里面 Clip 了外面还要计算一次 min?

先给公式

$$ L^{CLIP}=\mathbb{E}_t\Big[\min\big(r_t A_t,\ \text{clip}(r_t,1-\epsilon,1+\epsilon)A_t\big)\Big],\quad r_t=\frac{\pi_\theta(a_t|s_t)}{\pi_{old}(a_t|s_t)} $$
  • $r_t$ 是新旧策略的概率比:$r>1$ 表示新策略更倾向这个动作,$r<1$ 表示更不倾向。
  • $A_t$ 是优势:$A>0$ 表示这个动作比平均好,$A<0$ 表示比平均差。
  • clip 把 $r$ 限制在 $[1-\epsilon,1+\epsilon]$,$\epsilon$ 一般取 0.2。作用是一次更新不要偏离旧策略太远,防止某一批数据把策略改崩。

只用 clip 的话,它是双向截断:好的方向不让走太远(这是我们想要的),但坏的方向也不让纠正太多(这不是我们想要的)。加上 min 之后,取的是两者中更小、更悲观的那个,效果变成:只限制”继续往好处走”,不限制”把错误纠正回来”。

情况 含义 min 选中 梯度
$A>0,\ r>1.2$ 好动作,概率已经涨够了 clip 项 $1.2A$ 0,不再继续涨 ✅
$A>0,\ r<0.8$ 好动作,概率反而被压低了 原项 $rA$ 有梯度,把它拉回来 ✅
$A<0,\ r<0.8$ 坏动作,概率已经降够了 clip 项 $0.8A$ 0,不再继续降 ✅
$A<0,\ r>1.2$ 坏动作,概率反而涨了 原项 $rA$ 有梯度,把它压下去 ✅

3. Clip 可以限制分布差异,还有哪些方法可以做到?

  1. KL散度(PPO-Penalty)
$$ L=\mathbb{E}_t\big[r_tA_t\big]-\beta\,\mathrm{KL}\big(\pi_{\theta_{\text{old}}}\,\|\,\pi_\theta\big) $$

不做硬性截断,偏离越多扣分越多。自适应 KL 会动态调整 $\beta$:KL 太大就把 $\beta$ 调大,KL 太小就把 $\beta$ 调小。

  1. 早停

每个 epoch 都监控新旧策略的 KL,一旦超过阈值,这一轮就停止更新。实现简单,经常和 clip 一起用。

  1. 把 KL 加进奖励(RLHF 的标准做法)
$$ r'=r-\beta\log\frac{\pi_\theta(y\mid x)}{\pi_{\text{ref}}(y\mid x)} $$

前两种约束的是”新策略 vs 上一轮的旧策略“,管的是每一步更新的步长.这一种约束的是”当前策略 vs 参考模型“,也就是 SFT 之后的 Gemma,管的是整个训练过程中总共漂移了多远,防止 reward hacking 和遗忘

  1. TRPO(信赖域):把 KL 写成硬约束
$$ \max_\theta\ \mathbb{E}_t\big[r_tA_t\big]\quad \text{s.t.}\quad \mathbb{E}_t\big[\mathrm{KL}(\pi_{\theta_{\text{old}}}\,\|\,\pi_\theta)\big]\le\delta $$

4. PPO 和 GRPO 的结构区别,各自适用场景

对比维度 PPO GRPO
核心模型 四个模型:策略模型、参考模型(ref policy)、奖励模型(reward model)、评论家模型(critic) 三个模型:策略模型、参考模型、奖励模型(无 critic)
优势计算 依赖评论家模型估计状态价值 对组内多个答案的奖励做归一化,得到相对优势
计算开销 高,四个大模型同时运行,显存占用极大 较低,省去了 critic 的训练,但一次要生成多个答案,推理成本增加
适用场景 通用 RLHF,需要逐 token 的细粒度反馈,计算资源充足 数学、代码等有客观评判标准的任务,资源有限但能接受较高的推理成本

5. DAPO、GSPO 具体做了什么改进?

看项目有没有,暂时忽略

6. 介绍一下奖励函数的坍缩现象和问题

reward hacking现象:

  1. 奖励分布趋同:到训练后期,不管 prompt 是什么,奖励分布都变成同一种形状,和 prompt 本身无关了。本来”写一个故事”这种开放问题,好回答应该很多,分布比较分散;”1+1=?”这种确定问题,只有一个好答案,分布应该很集中。坍缩之后两者变得一样。
  2. 模式崩溃(mode collapse):输出集中到一种高频套路上,比如过度礼貌。
  3. 奖励饱和:分数逼近上限,但实际质量不再提升。
  4. 多样性丧失:生成内容千篇一律,缺少创造性。
  5. Reward Hacking:生成”看起来像高分回答”的内容,实际上是编造的,甚至有害,用来骗过奖励模型。

缓解方法:

  1. 多个奖励模型集成:取多个 RM 的平均分或最低分,单个 RM 的漏洞更难被钻。
  2. 多样性奖励:额外奖励和其他回答不同的输出。
  3. 熵约束:在 loss 里加熵正则,防止输出分布塌缩到少数几个 token 上。
  4. 定期刷新 RM:用当前策略生成的新回答重新标注、重新训练 RM,补上被钻的漏洞。

7. 多目标优化奖励函数冲突怎么处理

1. 加权求和

$$R_{\text{total}}=\sum_i \lambda_i R_i$$
  • 优点:最直接,合成一个奖励后按单目标训练就行。
  • 缺点:权重 $\lambda_i$ 很难定;各个奖励的量纲不同,直接相加会让数值大的那项占主导。比如”正确性”是 0 或 1,”长度分”是 0 到 10,加起来以后,模型基本只在乎长度。

2. GDPO(多目标版的 GRPO)
专门解决上面”量纲不同”的问题。做法分三步:

  1. 对每个奖励分量分别在组内做归一化;
  2. 把归一化后的各个分量加起来;
  3. 最后再做一次 batch 级归一化,让数值范围稳定。

和 GRPO 的区别:GRPO 是先加总、再归一化,数值大的分量会盖过其他分量;GDPO 是先拆开、各自归一化、再加总,每个目标对优势的影响是对等的。

3. 分层 / 条件优化
先排优先级,满足重要目标之后,再优化次要目标。原文的例子:先要求安全分高于阈值(无害),满足之后再最大化有帮助分。对 Gemma 来说就是:开锁这类请求,只要安全分不达标,再有帮助也不给分。

4. 帕累托优化
不追求单一的最优解,而是寻找一组非支配解(帕累托前沿):这些解在某个目标上更好,就必然在另一个目标上更差,互相之间没法比出绝对的高低。最后再按需要从前沿上挑一个。

8. 离线强化学习和在线强化学习有什么区别?RLHF 属于哪一种?

  • 在线 RL:模型一边和环境交互一边学。数据由当前策略实时生成,生成后马上用来更新,属于 on-policy。
  • 离线 RL:只从一个事先收集好的固定数据集里学,训练过程中不再和环境交互,属于 off-policy。
对比维度 在线 RL 离线 RL
和环境的关系 实时交互 不交互,只读固定数据集
数据来源 on-policy,由当前策略产生 off-policy,由别的策略或人产生
优点 数据新鲜,和当前策略的分布一致 数据可以反复用,训练安全、便宜
缺点 采样成本高,训练慢 对数据集外的动作估值不准(OOD 问题)

RLHF 属于哪种?原文的答案是:混合型

  • 训练奖励模型:用固定的人类偏好数据集训练,属于离线。
  • PPO 微调:Gemma 不断针对 prompt 生成新回答,冻结的奖励模型实时打分,再马上用这些新数据更新 Gemma,属于在线。

9. 为什么要用 Reference Model?为了解决什么问题?

Reference Model 是 RL 起点模型的冻结副本,通过 KL 约束策略不要偏离太远,

一是防止灾难性遗忘、保持语言流畅和多样,二是防止 reward hacking,避免模型钻奖励模型的漏洞生成无意义的高分内容。

10. KL 散度公式是什么?有几种估计方法?

$$ \mathrm{KL}(P\,\|\,Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)}=\mathbb{E}_{x\sim P}\Big[\log\frac{P(x)}{Q(x)}\Big] $$

两个性质:非负(两个分布完全相同时才等于 0),不对称($\mathrm{KL}(P|Q)\neq\mathrm{KL}(Q|P)$)。

LLM 用的是反向 KL

正向 KL $\mathrm{KL}(\pi_{\text{ref}}|\pi_\theta)$ 反向 KL $\mathrm{KL}(\pi_\theta|\pi_{\text{ref}})$
从谁那里采样 参考模型 当前策略
行为 mass-covering:要覆盖参考模型所有高概率的区域 mode-seeking:集中在参考模型的某个高概率峰上
用在 LLM 上 要从冻结模型额外采样,贵,而且分布会漂移 直接用 PPO/GRPO 已经采到的样本,还能防 reward hacking(不去参考模型概率很低的区域)

三、三种估计方法(k1 / k2 / k3)
整句的 KL 没法枚举所有序列来算,所以对每个采样出来的 token 做蒙特卡洛估计。记 $r=\frac{\pi_{\text{ref}}}{\pi_\theta}$,样本从 $\pi_\theta$ 采:

估计器 公式 无偏? 方差 非负?
k1 $-\log r=\log\frac{\pi_\theta}{\pi_{\text{ref}}}$ ✅ 高 ❌ 单个样本可能是负的
k2 $\frac12(\log r)^2$ ❌ 低 ✅
k3 $r-1-\log r$ ✅ 低 ✅

11. on-policy distillation(OPD)的 loss function 是什么?如果不考虑全词表计算 KL 散度,可否将其写为 ratio × advantage 的形式?

看项目有没有,暂时忽略

站内搜索

没有找到内容!