Jerry's Blog

Back

RL 对齐算法学习笔记:从 PPO 到 DAPO 的演进全景#

这份笔记不是为了记住算法定义,而是为了建立一套能讲清楚演进逻辑、说明白工程取舍的认知框架。


这份笔记要解决什么#

RL 对齐算法从 PPO 开始,几年内分化出 DPO、GRPO、GSPO、DAPO 等一系列方法。光看论文容易陷入碎片——每篇都在”改进”,但到底在改什么、为什么要改、工程上怎么选,不容易串起来。

这份笔记的目标是建立四层能力:

  1. 演进脉络——能解释为什么从 PPO 走向 DPO、GRPO、GSPO、DAPO。
  2. 系统对比——能从模型数量、训练对象、数据依赖、奖励设计、训练稳定性、显存成本、适用场景等维度比较主流方法。
  3. 工程判断——能回答”为什么选这个算法""两个算法混用合不合理""奖励函数怎么设计”这类工程问题。
  4. 知识表达——能把算法认知落到工程选型和项目叙述上,而不是停留在论文概念。

第一章:全景图——算法速查#

这一章解决”每个算法长什么样”。先背熟这张表,后面所有对比和演进都建立在它之上。

1.1 一览表#

算法模型数训练对象核心思路一句话定位
PPO4(Actor + Critic + RM + Ref)Actor + Critic显式 RLHF,完整训练链路经典方案,理论完整但工程重
DPO2(Policy + Ref)Policy隐式 RM,偏好对直接优化最简单稳定,依赖偏好数据质量
GRPO3(Policy + Reward 模块 + Ref)Policy去 Critic,group 内相对比较PPO 的轻量替代,保留 RL 风格
GSPO类似 GRPOPolicy序列级重要性采样替代 token 级GRPO 的方差和显存优化版
SPO类似 GRPOPolicygroup-free 设计摆脱 group 构造依赖
DAPO类似 DPOPolicy改进 loss + clip 机制DPO 的训练稳定性增强版
VAPO类似 DPOPolicyadvantage 估计变体DPO 系的性能上限优化

1.2 各算法基础配置#

PPO#

  • 典型配置:4 个模型——Actor、Critic、Reward Model(RM)、Reference Model(Ref)
  • 训练对象:主要训练 Actor,通常还需训练 Critic;RM 往往提前单独训练
  • 属于显式 RLHF 范式,流程完整但链路长、训练复杂、成本高

DPO#

  • 典型配置:2 个模型——Policy、Reference Model
  • 与 PPO 的区别:隐式 Reward Modeling,不再单独训练 RM 和 Critic
  • 训练简单稳定,但更依赖偏好数据质量

GRPO#

  • 典型配置:3 个模型——Policy/Actor、Reward 相关模块、Reference Model
  • 与 PPO 的区别:去掉 Critic
  • 通过 group 内部相对奖励替代显式 value 估计,降低了对 value model 的依赖

GSPO#

  • 可理解为对 GRPO 的优化
  • 关键改动:从 token 级重要性采样走向序列级重要性采样
  • 关注稳定性、显存占用、长序列训练效果

SPO#

  • 一类 group-free 思路,相比 GRPO 不再强依赖 group 构造
  • 关注样本组织方式、优势估计方式、训练效率与鲁棒性

DAPO / VAPO#

  • DPO 家族的进一步优化
  • 关注损失设计、clip 机制、advantage 估计改进、训练稳定性与上界控制

第二章:演进脉络——为什么会出现这些算法#

这一章解决”为什么”。每一代方法不是凭空出现的,都在解决上一代的具体痛点。

2.1 五条演进主线#

主线一:PPO——起点#

PPO 是经典 RLHF 代表。理论和流程完整,但问题明确:

  • 训练链路长(4 个模型协同)
  • 需要 RM 和 Critic
  • 训练不稳定,工程复杂度高
  • 成本高

主线二:PPO → DPO——绕开显式 RL#

DPO 试图绕开显式 RL 训练,把偏好优化转成更直接的目标函数优化。

  • 收益:去掉 RM 和 Critic,实现更简单,训练更稳定
  • 代价:更依赖偏好数据,对探索和在线反馈利用能力较弱

主线三:PPO → GRPO——保留 RL 但减负#

GRPO 保留 RL 风格,但不再训练 Critic,用 group 内部相对奖励替代显式 value 估计。

  • 收益:降低复杂度,减轻 value 误差问题
  • 代价:group 构造敏感,奖励方差、采样成本、训练噪声仍可能较大

主线四:GRPO → GSPO / SPO——更稳更省更强#

GSPO 针对 GRPO 的训练效率、方差、显存等问题继续优化。SPO 进一步尝试摆脱 group 依赖。关注点从”能不能训”转向”训得更稳、更省、更强”。

主线五:DPO → DAPO / VAPO——精细化优化#

DAPO、VAPO 等方法聚焦于损失函数细节、裁剪机制、正负样本优化不对称性,更细粒度地控制训练稳定性和收益上界。

2.2 一段话串起全部#

PPO 是最完整的 RLHF 方案,但需要 Actor、Critic、RM、Ref 四个模型,训练链路长、成本高。DPO 通过偏好优化绕开显式 RL,训练最简单,适合高质量离线偏好数据场景。GRPO 介于两者之间,保留 RL 优化方式但去掉 Critic,通过 group 相对比较来估计优势。之后 GSPO、SPO 主要在 GRPO 系方法上继续解决方差、显存和 group 依赖问题,而 DAPO、VAPO 则是对 DPO 损失和裁剪机制的进一步优化。

思考题#

  • PPO、GRPO、DPO、DAPO、GSPO 的发展流程怎么讲?每一代想解决什么问题?
  • 这些方法分别需要几个模型?需要训练哪些模块?
  • 为什么工业界会从”完整 RLHF”逐渐走向”更轻量、更稳定、更省资源”的方案?
  • 各自主要的工程局限是什么?

第三章:基石算法深度对比#

这一章解决”三大基石怎么选”。PPO、DPO、GRPO 是所有后续方法的出发点,它们之间的对比是最高频的知识模块。

3.1 PPO vs DPO#

分析维度#

维度PPODPO
是否显式 RL
是否需要 RM是(单独训练)否(隐式建模)
是否需要 Critic
是否需要在线采样
训练复杂度
数据依赖奖励信号偏好对数据
训练稳定性较低较高
工程成本
探索能力

核心要点#

  • PPO 更像完整闭环 RLHF,DPO 更像基于偏好对的直接优化
  • PPO 更灵活但更复杂,DPO 更稳定但更依赖离线偏好数据
  • 在工程上,DPO 常作为更高性价比的第一选择
  • 需要更强探索能力和在线反馈时,PPO 仍有不可替代的价值

3.2 GRPO vs PPO#

分析维度#

维度PPOGRPO
是否需要 Critic
优势函数估计通过 Criticgroup 内相对比较
训练方差来源value 估计误差group 构造和采样
算法复杂度
显存开销高(4 模型)中(3 模型)

核心要点#

  • 最大变化是去掉 Critic,避免 value 估计误差带来的不稳定
  • 训练链路更短,在 group 相对比较明确的任务上更有优势
  • 但仍然依赖 group 设计与奖励构造

3.3 DPO vs GRPO#

这是”离线偏好优化”和”轻量 RL 优化”的核心对比。

分析维度#

维度DPOGRPO
数据形式偏好对多候选打分/排序
奖励来源隐式建模显式 reward 信号或可排序信号
探索能力
训练成本
工程复杂度
在线反馈利用强于 DPO

3.4 工程中的混用逻辑#

一个常见的工程套路是:

  1. SFT 把模型训到可用
  2. DPO 做离线偏好对齐,快速获得稳定收益
  3. GRPO 针对复杂目标继续提升

混用动机:

  • DPO 适合先打基础——训练简单、收敛快、成本低
  • GRPO 适合继续利用 reward 信号做更细致优化
  • 两者在数据形式和优化目标上互补

是否合理,最终要靠 ablation 验证:单独 DPO、单独 GRPO、DPO → GRPO、不同奖励设计下的 GRPO,比较最终 helpfulness、harmlessness、格式遵循率、推理正确率、人评胜率等指标。

思考题#

  • PPO 和 DPO 你更倾向用哪个?为什么?
  • GRPO 比 PPO 强在哪?
  • 为什么用 DPO 而不是 PPO?GRPO 效果怎么样?
  • 为什么要用 DPO?用 GRPO 不行吗?强行用 GRPO 的话,奖励函数怎么设计?
  • DPO 和 GRPO 在数据、指标、训练方式上有什么区别?
  • 项目里同时用了 DPO 和 GRPO,为什么要这么做?有没有实验验证混用的合理性?

第四章:GRPO 系改进——GSPO、SPO、SAPO#

这一章解决”GRPO 还有什么痛点,后续方法怎么改”。

4.1 GSPO:从 token 级到序列级#

核心改动#

GSPO 出现的原因是 GRPO 在实际训练中暴露了几个问题:

  • token 级重要性采样带来的方差问题
  • 长序列下显存占用偏高
  • 训练效率有优化空间

GSPO 的关键改动是从 token 级重要性采样走向序列级重要性采样

理解 GSPO 的切入点#

  • GRPO 的方差问题具体在哪里?
  • token 级重要性采样有什么局限?
  • 为什么序列级重要性采样会更合理?
  • 实际训练里效果和显存占用有什么变化?

4.2 SPO:group-free 的尝试#

SPO 试图摆脱 GRPO 对 group 构造的依赖。核心问题是:group 的大小、组成方式会显著影响训练效果,这是一个不够鲁棒的设计。

SPO 的思路是在样本组织方式上做改变,不再要求构造 group,而是用其他方式估计优势。

4.3 SAPO:正负样本不对称设计#

SAPO 在 GSPO 基础上进一步优化,引入了正负样本的不对称处理。

为什么要不对称?因为在对齐任务中,“学好样本”和”远离坏样本”的重要性和梯度贡献往往不对等,统一处理会导致优化效率损失。

4.4 这一章的核心认知#

  • GRPO 的问题不是”能不能用”,而是”怎么更稳定、更节省、更高效”
  • GSPO 是在采样和优化粒度上做改进
  • SPO 是在样本组织方式上进一步摆脱 group 约束
  • SAPO 则开始针对正负样本、优化目标做更精细控制

思考题#

  • GSPO 是什么?解决什么问题?
  • GSPO 和 GRPO 的区别是什么?gap 怎么理解?
  • 为什么 GSPO 效果更好?显存占用有什么变化?
  • SPO 系列算法想解决什么?
  • SAPO 相对 GSPO 又做了什么优化?为什么要做正负样本不对称设计?

第五章:DPO 系改进——DAPO 与 VAPO#

这一章解决”DPO 虽然简单,还能怎么优化”。

5.1 DAPO:损失与裁剪的精细化#

核心改动#

DAPO 相比 DPO 主要改了两个地方:

  1. 损失函数设计——更精细地控制正负样本的梯度贡献
  2. 裁剪机制(clip-higher)——限制过大的策略偏移

理解 clip-higher#

clip-higher 的直觉是:当策略在某个方向上偏离太远时,即使这个方向看起来”更好”,也应该限制住。这是在追求收益和保持训练稳定性之间做平衡。

不加裁剪,策略可能在少数样本上过度优化,导致整体分布偏移。clip-higher 本质上是一种保守更新策略。

5.2 VAPO:advantage 估计的变体#

VAPO 与 DAPO 的关系:同属 DPO 改进家族,但切入点不同。

  • DAPO 侧重 loss 和 clip
  • VAPO 侧重 advantage 估计方式的改进

两者都在追求更稳的训练动态和更好的性能上限。

5.3 这一章的核心认知#

  • DPO 虽然简单稳定,但也有优化空间
  • DAPO / VAPO 主要是在损失设计、裁剪、优势估计等细节上做增强
  • 本质上是在追求更稳的训练动态和更好的性能上限

思考题#

  • DAPO 相比 DPO 改了什么?为什么要改 loss?
  • 如何理解 DAPO 中的 clip-higher?
  • DAPO 还有哪些提高的地方?
  • VAPO 和 DAPO 的区别是什么?

第六章:工程选型——如何选对齐算法#

这一章解决”实际项目里怎么选”。不是理论最优,而是工程最优。

6.1 八个选型维度#

1)数据形态#

  • 只有偏好对数据 → DPO 系
  • 有多候选排序数据 → GRPO 系
  • 有可学习奖励 → PPO / GRPO
  • 有在线交互反馈 → PPO

2)奖励可得性#

  • 是否容易设计 reward
  • reward 是否稳定
  • reward 是否容易被 hack

3)训练成本#

  • 模型数量、显存开销、采样成本、训练轮数

4)训练稳定性#

  • 是否容易崩、是否依赖超参、是否对采样分布敏感

5)探索需求#

  • 需不需要在线探索、需不需要持续更新策略

6)场景类型#

  • 通用聊天、数学/代码/推理、Agent 任务、安全对齐、格式跟随

7)效果目标#

  • 提升人类偏好、提升任务成功率、提升推理正确率、降低有害输出

8)工程复杂度#

  • 链路是否长、是否容易落地、是否容易监控与调参

6.2 选型的工程思维模板#

先看数据形态和奖励信号。如果只有高质量偏好对数据,而且希望快速稳定迭代,优先考虑 DPO;如果任务里有比较明确的 reward 信号,或者希望进一步利用多候选采样做相对优化,考虑 GRPO 类方法;如果希望做更完整的 RLHF 闭环,并且资源足够、需要更强探索能力,PPO 仍然有价值。

进一步地,如果训练中遇到 GRPO 的方差、显存或 group 组织问题,关注 GSPO、SPO 这类改进方法;如果当前路线以 DPO 为主,但希望继续优化 loss 和训练稳定性,考虑 DAPO、VAPO 一类方法。

思考题#

  • 对 RL 算法的选择有什么考虑?
  • 不同数据形态下应该怎么选?
  • 如何设计 ablation 验证选型是否合理?
  • 如何解释成本、稳定性和收益之间的权衡?

第七章:知识卡片模板#

这一章提供一个统一模板。后续每个算法都可以按这六个栏位填充,从大纲逐步扩展为完整的学习手册。

每个算法统一补充这六项:

1)核心思想#

一句话说清算法本质。

2)优化目标#

它到底在优化什么,和前一代方法的差别在哪。

3)模型配置#

需要几个模型,哪些冻结,哪些训练。

4)优点#

训练稳定性、性能、成本、落地难度上的优势。

5)缺点#

依赖什么前提,在哪些场景容易失效。

6)适用场景#

更适合聊天、推理、Agent,还是安全对齐。


第八章:学习路径#

按下面顺序推进,不要一上来就啃前沿论文。

第一轮:搭骨架#

目标:建立全局认知。

  • PPO、DPO、GRPO 分别是什么
  • 各自几个模型,各自训练什么
  • 三者核心差异是什么

第二轮:攻对比#

目标:能讲清三组核心对比。

  • PPO vs DPO
  • PPO vs GRPO
  • DPO vs GRPO
  • DPO + GRPO 混用的工程逻辑

第三轮:补 GRPO 系前沿#

目标:形成进阶认知。

  • GSPO 原理与优势
  • SPO / SAPO 家族演化

第四轮:补 DPO 系前沿#

目标:增强论文跟进能力。

  • DAPO 的 loss 和 clip 改动
  • VAPO 的 advantage 估计变体

第五轮:沉淀工程表达#

目标:能把算法选择讲成项目故事。

  • 不同任务场景如何选型
  • 数据和奖励不同怎么选
  • 如何设计 ablation 验证路线
  • 如何解释成本、稳定性和收益之间的权衡

极简目录#

最后压缩成一页速查:

RL 对齐算法学习笔记

1. 全景图
   PPO(4 模型) → DPO(2 模型) → GRPO(3 模型)
   → GSPO(序列级采样) → SPO(group-free) → DAPO/VAPO(loss 优化)

2. 演进脉络
   五条主线:PPO 起点 → DPO 绕开 RL → GRPO 去 Critic
   → GSPO/SPO 更稳更省 → DAPO/VAPO 精细化

3. 基石对比
   PPO vs DPO | GRPO vs PPO | DPO vs GRPO | 混用逻辑

4. GRPO 系改进
   GSPO(token→序列级) | SPO(去 group) | SAPO(正负不对称)

5. DPO 系改进
   DAPO(clip-higher) | VAPO(advantage 变体)

6. 工程选型
   数据形态 × 奖励设计 × 成本 × 稳定性 × 场景 × 目标

7. 学习路径
   骨架 → 对比 → GRPO 前沿 → DPO 前沿 → 工程表达
plaintext
RL 对齐算法学习笔记:从 PPO 到 DAPO 的演进全景
https://jerry609.github.io/blog/rl-alignment-algorithms-study-guide
Author Jerry
Published at April 15, 2026
Comment seems to stuck. Try to refresh?✨