LLM 算法岗 | 八股问答(3)· 强化学习与 RLHF

完整题库链接:LLM 算法岗 | 面试常问的 LLM 八股题目汇总

目录

  • [1. 介绍一下 PPO、DPO、GRPO 的定义、结构区别、优缺点及适用场景。](#1. 介绍一下 PPO、DPO、GRPO 的定义、结构区别、优缺点及适用场景。)
  • [2. PPO 的 Clip 机制是什么?为什么公式里面 Clip 了外面还要计算一次 min?](#2. PPO 的 Clip 机制是什么?为什么公式里面 Clip 了外面还要计算一次 min?)
  • [3. Clip 可以限制分布差异,还有哪些方法可以做到?](#3. Clip 可以限制分布差异,还有哪些方法可以做到?)
  • [4. PPO 和 GRPO 的结构区别,各自适用场景?](#4. PPO 和 GRPO 的结构区别,各自适用场景?)
  • [5. DAPO、GSPO 具体做了什么改进?](#5. DAPO、GSPO 具体做了什么改进?)
  • [6. 介绍一下奖励函数的坍缩现象和问题。](#6. 介绍一下奖励函数的坍缩现象和问题。)
  • [7. 多目标优化奖励函数冲突怎么处理?](#7. 多目标优化奖励函数冲突怎么处理?)
  • [8. 离线强化学习和在线强化学习有什么区别?RLHF 属于哪一种?](#8. 离线强化学习和在线强化学习有什么区别?RLHF 属于哪一种?)
  • [9. 为什么要用 Reference Model?为了解决什么问题?](#9. 为什么要用 Reference Model?为了解决什么问题?)
  • [10. KL 散度公式是什么?有几种估计方法?](#10. KL 散度公式是什么?有几种估计方法?)
  • [(夹带私货)为什么 DPO 现在不火了?](#(夹带私货)为什么 DPO 现在不火了?)

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

这三种算法是目前大模型对齐(Alignment)阶段最主流的基于 RL 的方法,可以理解为让模型从"会说话"进化为"说好话"的不同训练策略。

PPO (Proximal Policy Optimization,近端策略优化)

\[\max ~ J(\theta) = \mathbb{E} \left[ \min \left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] \]

个人思考总结:

  • ratio \(r_t = \pi(a|s) / \pi_\text{ref}(a|s)\),π ref 是参考模型,没有梯度,相当于一个常数;所以经典的策略梯度项 \(\nabla\pi = \pi\nabla\log\pi\) 就包含在这个 ratio 里面。
  • \(A_t\) 是 GAE 所估计的 advantage,\(A = \sum_{l=0}^\infty (\gamma\lambda)^l\delta_{t + l}\),而 \(\delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)\)。
    • 当 λ = 0 时,advantage 相当于单步 TD-error,方差小但 bias 大;λ = 1 时则相当于无穷步的蒙特卡洛估计 \([\sum_{l=0}^\infty \gamma^l r_{t+l}] - V(s_t)\),方差大但 bias 小(关于 bias 和方差,我也不确定真的是这样)。
    • 这个式子如何推出来:one-step 权重 (1-λ)、two-step 权重 λ(1-λ)、three-step 权重 λ²(1-λ)、... 这样累加起来。
  • 关于 clip:
    • 像一种"见好就收"的思想;
    • 当 ratio > 1 + ε 且 A > 0 或 ratio < 1- ε 且 A < 0,则这个 clip 会生效(min 后也取到 clip),即包含策略梯度的 ratio 项被 clip 成了 1 + ε 或 1 - ε;
    • 如果 min 后取到了 clip 值,则没有策略梯度,可以理解为,现在更新的已经很好了,不需要继续向这个方向学了。

PPO 介绍:

  • 定义 :一种基于强化学习 的经典对齐算法。它通过在优化过程中引入裁剪(Clip)机制,限制新旧策略的差异,确保模型稳定更新,避免一步迈得太大导致训练崩溃。
  • 结构 :需要同时维护四个模型,结构最复杂:
    1. 策略模型(Actor):即我们要训练的目标模型,负责生成回答。
    2. 参考模型(Reference Model):策略模型的初始副本,参数冻结,用于约束策略模型不要偏离初始分布太远(通过KL散度惩罚)。
    3. 奖励模型(Reward Model):给模型生成的完整回答打分。
    4. 评论家模型(Critic):在生成每个 token 时给出即时反馈,用于计算优势函数(Advantage),辅助稳定训练。
  • 优点:效果上限高,训练稳定,对模型的约束精细。
  • 缺点资源消耗巨大(需要加载四个模型),训练流程复杂,超参数多,调参难度大。
  • 适用场景:追求极致效果、计算资源充足、需要对模型行为进行精细控制的情况(如 OpenAI 早期的大模型对齐)。

DPO (Direct Preference Optimization,直接偏好优化)

\[\max ~J_{DPO} = \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) \]

其中,\(y_w\) 是 win 的回答,\(y_l\) 是 lose。\(\sigma(x) = 1/(1+e^{-x}) = e^x/(1+e^x)\) 是 sigmoid。推导请参见:CSDN | DPO 核心理论推导:参考策略距离约束下的最优策略 + 损失函数设计

  • 定义 :一种将 RLHF 的复杂流程简化为直接分类问题的算法。它通过数学推导,直接让模型在人类偏好的"好答案"上增加概率,在"坏答案"上降低概率。
  • 结构 :结构非常简单,只需两个模型:
    1. 策略模型:正在学习的模型。
    2. 参考模型:策略模型的初始副本,参数冻结。
  • 优点训练高效、资源消耗少(只需两份模型显存),无需复杂的奖励模型和强化学习循环,稳定性好。
  • 缺点 :对数据质量要求极高,需要精心构建大量的"好vs坏"答案对;如果偏好数据质量不佳,模型容易学偏。
  • 适用场景:计算资源有限,但能获取高质量偏好数据的情况。

GRPO (Group Relative Policy Optimization,组相对策略优化)

\[A_i = \frac{r_i - \text{mean}(\{r_1,...,r_G\})}{\text{std}(\{r_1,...,r_G\})} \]

GRPO 的公式跟 PPO 一样,只是 advantage 用以上的公式算。G 一般取 8。

  • 定义 :由 DeepSeek 团队提出的 PPO 改进版本。它舍弃了评论家模型,通过对同一个问题的多个采样答案进行组内比较来估计优势,从而大幅降低训练成本。
  • 结构 :只需三个模型,但需多次采样:
    1. 策略模型:正在学习的模型(含待更新的权重)。
    2. 参考模型:策略模型的初始副本,冻结参数。
    3. 奖励模型:给生成的回答打分。
  • 优点:无需训练评论家模型,显存占用比 PPO 低;通过组内比较产生训练信号,对数据标注要求比 DPO 低。
  • 缺点 :需要一次生成多个答案(如 8 个),推理成本较高;如果基础模型能力太弱,生成的全是坏答案,组内比较就失去了意义。
  • 适用场景:数学、代码等有明确评判标准的客观任务,如 DeepSeek-R1 的数学推理训练。

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

Clip 机制是什么?

Clip 机制是 PPO 稳定训练的核心。公式如下:

\[L^{CLIP}(\theta) = \mathbb{E} \left[ \min \left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] \]

其中概率比 r_t(\\theta) = \\frac{\\pi_{\\theta}(a_t\|s_t)}{\\pi_{\\theta_{\\text{old}}}(a_t\|s_t)} 表示新旧策略在同一个动作上的概率比值。Clip 机制就是将这个比值强行限制在 \([1-\epsilon, 1+\epsilon]\) 区间内(ε 通常为 0.2),防止策略一步更新过大。

为什么 clip 了外面还要计算一次 min?

PPO 的 min 确保了 clip 目标函数是真实目标函数的一个保守估计,即,它一定 ≤ 未 clip 过的原始目标函数。

这样,如果 r 过大 / 过小且 advantage 为负 / 为正,min 之后,仍然会取到有梯度的 原始目标函数,从而达到"修正往反方向跑的过远的策略"的效果。


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

除了 PPO 的 Clip 机制,限制分布差异的常见方法还有:

  1. KL 散度惩罚:在目标函数中直接加入新旧策略之间 KL 散度的惩罚项。TRPO 和 PPO 的另一种变体(Adaptive KL Penalty)就是采用这种方法,通过控制 KL 散度的大小来限制更新幅度。
  2. 还可以 Early Stopping,KL > 阈值时停止更新。
  3. 可以在 reward 里加入 KL,\(r' = r - \beta\log\frac{\pi_\theta}{\pi_\text{ref}}\) 。
  4. 信赖域约束(TRPO):通过引入 KL 散度的硬约束,要求每次更新的新旧策略差异必须在某个阈值内。这需要计算共轭梯度和二阶导数,计算量巨大,PPO 正是为了简化 TRPO 而提出的。
  5. 自然梯度法:使用 Fisher 信息矩阵来调整梯度方向,使得参数更新在"流形"上步长可控,也是一种限制分布差异的思路。(这个我不知道是什么)

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

对比维度 PPO GRPO
核心模型 四个模型:策略、参考(ref policy)、reward model、critic 三个模型 :策略、参考、奖励(无 critic
优势计算 依赖评论家模型估计状态价值来计算优势 通过对同一个问题的组内多个答案的奖励进行归一化来计算相对优势 \\hat{A}_i = \\frac{r_i - mean(r)}{std(r)}
计算开销 ,需同时训练/推理四个大模型,显存占用极大 较低,省去了评论家模型的训练开销,但需一次生成多个答案,推理成本增加
适用场景 通用 RLHF,需要精细的逐 token 反馈,对计算资源不敏感的场景 数学、代码等客观任务(评判标准明确),希望通过采样多样性产生训练信号,资源有限但可接受高推理成本的场景

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

这些是近期针对 GRPO / PPO 的优化变体,旨在解决长思维链(Long-CoT)训练中的具体问题。

DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization)

由字节跳动提出,主要解决长思维链推理训练中的问题。

  • Clip-Higher(解耦裁剪) :发现 PPO / GRPO 的对称 Clip 会抑制低概率 Token 的探索,导致熵坍塌。DAPO 提出放宽上界、保持甚至收紧下界,让低概率 Token 有更大提升空间,促进多样性。
  • 动态采样(Dynamic Sampling) :训练中,太简单或太难的 prompt 产生的优势为 0,导致梯度消失。DAPO 会过采样并过滤,只保留那些"既不是全对也不是全错"的样本进入 batch,确保每个样本都有有效梯度,提升训练效率。好像具体实现是,直到采到让一个 group 内的 reward 有非零的方差,才停止对同一个 prompt 采回答。

GSPO (Generalized Preference Optimization,广义偏好优化)

  • 核心思想:将PPO、DPO、GRPO等统一到一个框架下。通过设计通用的损失函数形式,可以在不同算法间平滑插值,结合各自的优点。
  • 【】

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

**奖励坍缩(Reward Collapse / Hacking)**是指在 RLHF 训练奖励模型时,模型通过寻找人类标注的"捷径"来获得高分,而不是真正理解并遵循人类的意图。

现象:

  • 分布趋同 :在训练后期,无论输入 prompt 是开放性的还是确定性的,奖励模型给出的奖励分布都变得完全相同。例如,对于"写一个故事"(应均匀分布)和"1+1=?"(应两点分布)这两种 prompt,奖励分布都趋向于同一个固定的、与 prompt 无关的形态。
    • 模式崩溃:输出趋向单一高频模式(如过度礼貌)
      奖励饱和:分数趋于上限,质量停滞
      多样性丧失:创造性急剧下降
  • 奖励黑客(Reward Hacking):模型学会生成"看起来像高分回答"但实际上是胡编乱造或包含有害内容的文本,以欺骗奖励模型。

问题:

  • 对齐失败:奖励模型无法准确反映人类偏好,导致策略模型在强化学习阶段被误导,优化到一个错误的方向。
  • 模型退化:模型输出变得千篇一律,缺乏针对具体 prompt 的多样性,或者产生看似流畅但实则无意义的文本。

解决:

  • 多 RM 集成、多样性奖励、熵约束、定期刷新 RM。

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

当需要同时优化多个目标(如"有帮助"且"无害"且"翔实")时,奖励函数可能互相冲突。

  • 加权求和:最直接的方法,为每个目标分配一个权重 \\lambda_i ,组合成单一奖励 R_{total} = \\sum \\lambda_i R_i 。难点在于权重难以确定,且不同目标的量纲不同。
  • MO-GRPO (Multi-Objective GRPO) :一种专门解决 GRPO 在多目标问题中"奖励黑客"现象的方法。它会根据每个目标奖励值的方差自动重新加权,确保所有目标对损失的贡献是均匀的,避免模型只优化某个容易获得高分的单一目标而牺牲其他目标。【】这个学一下,跟我的项目也有关。
  • 分层 / 条件优化:设定优先级。例如,首先必须满足"无害"(安全得分高于阈值),在这个前提下再最大化"有帮助"得分。
  • 基于 Pareto 前沿的多目标优化:寻找一组非支配的解,让模型在多个目标之间达到帕累托最优状态。

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

区别

  • 在线强化学习 :智能体(Agent)实时与环境交互 ,生成数据并立即用于策略更新。数据是 on-policy 的,由当前策略产生。优点是数据新鲜、与当前策略分布一致;缺点是采样成本高、训练慢。
  • 离线强化学习 :智能体只从固定的、预先收集好的数据集 中学习,不再与环境交互。数据是 off-policy 的。优点是数据可复用、训练安全(无需实际环境交互);缺点是存在分布外动作的估值偏差问题。

RLHF 属于哪一种?

RLHF 是一个混合体 ,但核心的 PPO 阶段属于在线强化学习

  1. 奖励模型训练阶段 :属于离线学习。使用人类标注的、固定的偏好数据集来训练奖励模型。
  2. PPO 微调阶段 :属于在线学习。策略模型不断地生成新的回答(与环境交互),由固定的奖励模型实时打分,然后立即用这些新数据更新自己。研究证明,这种在线采样对于模型的生成质量至关重要,是离线对齐算法无法完全替代的。

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

Reference Model 主要用于解决强化学习训练中的模式坍塌奖励黑客问题。

  1. 防止遗忘(对抗灾难性遗忘):RL 目标只关心得分,可能导致模型为了高分而忘记预训练阶段学到的语言能力。Reference Model 提供了原始的、流畅的语言分布,通过 KL 散度惩罚,强制新模型不要偏离原始语言能力太远,保持输出的流畅性和多样性。
  2. 防止 reward hacking:如果没有约束,模型会疯狂地生成那些能让奖励模型打高分的词,哪怕这些词组合在一起毫无意义(例如,重复"好"字一万遍)。Reference Model 通过 KL 惩罚,让模型为这种作弊行为付出巨大的代价,从而引导模型在"说人话"的基础上去追求高分。

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

KL 散度公式

KL 散度(Kullback-Leibler Divergence)衡量两个概率分布 P 和 Q 之间的差异。在 RLHF 中,P 通常指参考模型 的分布,Q 指策略模型的分布。公式为:

\[D_{KL}(P || Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} \]

重要性质

  • 非负性 D_{KL} \\ge 0 ,当且仅当 P 和 Q 完全相同时为 0。
  • 不对称性 D_{KL}(P \|\| Q) \\neq D_{KL}(Q \|\| P) ,这反映了犯错的代价取决于以谁为基准。

在 RLHF 中的估计方法

由于无法直接获得所有可能序列的概率,实践中通常使用蒙特卡洛采样进行近似估计。

  1. 逐 token 近似 :对于采样生成的一个具体回答 \(y\),可以计算其近似的 KL 散度惩罚项:

    \[\text{kl\penalty} \approx \log \pi{\theta}(y|x) - \log \pi_{ref}(y|x) \]

    这等价于计算当前策略和参考策略在生成这个具体序列时的对数概率差,作为 KL 散度的一种低方差估计。

  2. 更精确的估计(如 GRPO 中的实现)

    除了简单的对数差,有时会使用更复杂的公式来获得无偏估计,例如:

    \[\exp(\log \pi_\text{ref} - \log \pi_{\theta}) - (\log \pi_\text{ref} - \log \pi_{\theta}) - 1 \]

    这种方法可以更好地估计两个分布之间的差异。

总结:在代码实现中,KL 散度通常不是直接计算整个词汇空间的积分,而是通过对实际生成的那些 token 的概率进行比较来近似,作为损失函数中的一个正则项。


(夹带私货)为什么 DPO 现在不火了?

DPO 不 work,主要是因为比较 offline ,导致 preference 数据如果跟 policy 的分布差的比较远,就会有 OOD 的问题。师兄说这是最核心的问题。相当于我们现在有一个问题,对回答的 preference 是 A 比 B 好,但模型想输出的答案是 C,模型没有机会输出答案 C。

PPO 使用 reward model,基本可以保证是 on-policy 的,这样性能就可以持续提升。

并且 DPO 对负样本造成挤压效应,会让原本就最容易输出的那句话(最置信的回答 C)概率变得进一步更高,提高幅度甚至比 A 的提高幅度还要高。有一篇 ICLR 2025 best paper,learning dynamics of LLM finetuning。

【】online DPO