从0训练LLM(旧版 · 存档中) · M5 阅读+实验 ≈ 75 分钟 页内实验 ×2

对齐与强化学习

SFT 教会了模型“回答问题”,但它只会模仿示范,不知道回答的好坏。对齐用强化学习,让模型按“人类更喜欢哪个”来优化。这一节的主线是一条清晰的“砍模型”演进:PPO → DPO → GRPO → RLVR,每一步都在砍掉一个昂贵的部件。
① 主线定位

从“会模仿”到“知好坏”

M4 让模型会回答,但它只是模仿示范。这一节让它按人类偏好优化。

SFT 有个根本局限:它只能让模型模仿示范里的回答,但示范总是有限的,而且没有负向信号——它只见过“好答案”,从没被告知“这个答案不好”。结果是模型会回答,但不知道两个回答里哪个更好。

对齐(alignment)用强化学习补上这一课:给模型的回答一个“好坏”的信号,让它朝“人类更喜欢”的方向优化。

🧭

上游: M4 的 SFT 模型(会回答,但不知好坏)。
本节: 用人类偏好训练,让模型的输出更符合人想要的。主线是 PPO → DPO → GRPO → RLVR 的演进。
下游: M6 讲训练好的模型怎么高效地跑起来(推理与现代架构)。

② 核心问题

怎么把“人类偏好”变成训练信号?

关键一步:不是让人打分,而是让人做“二选一”。

直接让人给回答打分(打几分)很不靠谱——每个人的尺度不一样。更可靠的是让人做成对比较:给两个回答,只问“哪个更好”。

这个洞察不是 LLM 时代发明的。早在 2017 年,OpenAI 就在 Atari 游戏和机器人行走上验证了:人对成对轨迹做偏好判断,就足以定义复杂目标,而且只需要对不到 1% 的交互给反馈。chosen / rejected 这个数据形态,从那时就定下来了。

💡

所以对齐的原料是一堆 (问题, 更好的回答, 更差的回答) 三元组。剩下的问题是:拿到这些偏好数据,怎么用它去更新模型?——不同的答法,就是 PPO、DPO、GRPO、RLVR 这条演进线。

③ 原理 · 直说

一条“砍模型”的演进线

理解这条线,就理解了整个现代对齐。核心问题是:要在显存里同时养几个大模型。

最早的做法 **RLHF(InstructGPT 用的 PPO 路线)分三段:① SFT;② 用偏好数据训一个奖励模型(Reward Model)**给回答打分;③ 用 PPO 这个强化学习算法,让模型朝高分方向优化,同时用 KL 惩罚防止它跑偏到奖励模型没见过的地方。

问题是这套很贵——PPO 训练时要在显存里同时塞 4 个大模型。后面的演进,就是一步步把这 4 个砍到 2 个。下面的可视化直接展示这条砍法。

演进 · PPO → GRPO → RLVR 各要养几个模型

那 4 个模型各自在公式里的位置,拆开 PPO 的目标函数就看清了——上面每个方框,都对应下面的一项:

PPO 目标函数(InstructGPT 用法:裁剪目标 + KL 锚点)
L(θ) = E[ min( , ) ] −
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
min(未裁剪, 已裁剪) 取悲观的那个——涨的时候按裁剪后的算(防激进),跌的时候按更狠的算(不护短)。而 Â 从哪来?PPO 用 Value model 估计基线——这正是 GRPO 要砍的(见下)。

公式里最抽象的是 clip 那一项——把它画出来、亲手拖一遍就清楚了:

拖点实验 · clip 就是刹车(真算术)
这个回答的优势:

🎯

三件事:① 把 ρ 从 1 往右拖过 1+ε,看曲线变平、梯度归零——好回答提得够多了,刹车;② 切到 Â=−1 往左拖过 1−ε——压差回答同样有刹车;③ 注意反方向没有刹车(虚线继续陡降):min 的”悲观取小”只防占便宜、不防吃亏。

⚠️

三个中文圈高频记错的事实,顺便纠正:
① GRPO 出自 DeepSeekMath(2024-02),不是 DeepSeek-R1——很多转载记错了。
② DPO 出自 Stanford(Rafailov、Manning、Finn 等),不是 Anthropic。
③ PPO 原文(2017)里没有 LLM、没有奖励模型、没有 KL——那是给 Atari/机器人设计的通用算法,复杂度是被 InstructGPT 搬过来的。理解这点,才懂后面为什么要拼命简化。

岔路一:DPO —— 干脆连奖励模型都不训

在 PPO 主线之外,还有一条更激进的岔路:DPO 发现——既然奖励模型和最优策略之间有数学上的对应关系,那根本不用先训奖励模型再做 RL,可以直接用偏好数据、一个类似分类的损失函数,一步到位地优化模型。它把整个 RLHF 塌缩成了一个简单的监督式损失:

DPO 损失(一对偏好数据 → 一次监督更新)
L = −E log [ β( − ) ]
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
β 控制偏离参考模型的代价(对应 PPO 的 KL 强度)。对比 PPO:没有采样、没有 RM、没有 value——4 个模型剩 2 个(π_θ 和 π_ref),且是纯监督训练,稳定得多。代价:只能从静态偏好数据学,学不了“边生成边探索”。

DPO 因为简单稳定,成了开源社区偏好对齐的默认选择。

岔路二回到主线:GRPO 砍掉 value model

PPO 的 4 个模型里,Value model(估计基线、用来算“优势”)最容易省。GRPO 的做法是:对同一个问题采样一组回答,直接用组内的相对好坏当优势——比组内平均好就是正优势,差就是负优势。这样就不需要单独养一个 Value model 来估“这题该得多少分”。下面的计算器让你亲手感受这个机制。

计算器 · GRPO 组内优势(真实算术)
问题:求 1+2+…+100 = ?(标准答案 5050)

把它写进目标函数,和 PPO 逐项对比——你会发现整个公式只换了一件事:

GRPO 目标函数(对照上面 PPO 的公式看)
L(θ) = E[ min( ρ·
👆 公式里带下划线的每一项都可以点——点哪项,讲哪项。
这也是资料里 RL Explainer 那个「公式 diff 视图」会显示的差异——现在你不用打开它也知道 diff 在哪了。

主线终点:RLVR 砍掉奖励模型

最后一跳最漂亮。GRPO 还留着一个学出来的奖励模型,而学出来的奖励模型有个致命问题:会被“钻空子”(reward hacking)——模型学会说服评估者而不是真的答对,所以 RLHF 只能跑几百步就得停。

RLVR 的洞察是:数学、代码这些领域有标准答案,直接用规则验证器判对错(二元反馈),根本不需要学出来的奖励模型。而且规则验证器不会被 hack,所以能一直训下去。DeepSeek-R1 就是靠 RLVR + GRPO,让推理能力(自反思、自验证)自发涌现出来。

🔍 Bradley-Terry 是什么

把“A 比 B 好”变成一个概率模型:每个回答有个隐含的“实力分”,A 打赢 B 的概率是两者实力的 sigmoid。这和国际象棋的 Elo 是同一套数学。奖励模型训练、以及 DPO 的损失函数,本质都是在拟合这个 Bradley-Terry 概率——DPO 正是把它反解出了闭式最优策略。

它值得比一句话更多的篇幅:奖励模型和 DPO 共用的就是这一个公式。下面把它整个拖一遍——尤其是那个「整体 +2」按钮,它一次性解释了两件事:为什么奖励模型给出的绝对分数没有意义,以及为什么 DPO 的损失里只出现对数比的差。

曲线实验 · Bradley-Terry:偏好的数学地基(真算术)
rl
rw
−50+5
横轴 = 实力差 Δ = rw − rl,纵轴 = P(chosen 胜) = σ(Δ)。整条曲线只认差值——两个分一起平移,点纹丝不动。

把同一个 Δ 交给 DPO:σ(β·Δ)

DPO 说:隐式奖励 r = β·log πθ/πref。所以上面那个 Δ 换个读法——它是模型相对参考模型的对数比之差,要先乘 β 才是实力差,再进同一个 sigmoid。β 于是成了曲线的陡峭度旋钮:

灰色是 β=0.05 / 0.5 / 1.0 的参照曲线,紫色是你当前的 β。β 越大曲线越陡:偏离参考模型一点点,sigmoid 就到顶了。

🎯

试三件事:① 把两个实力分拖到差 6 分以上——胜率冲进 99% 的饱和区,曲线贴平、梯度几乎消失,这就是「已经分得很开的偏好对学不到东西」;② 点**「整体 +2」,两个分一起右移而胜率一位小数都不动**——只有差值进 sigmoid,所以奖励模型的绝对分数(和棋手的 Elo 绝对值一样)本身毫无意义;③ 调 β:调大 → 曲线变陡 → 模型只要偏离参考模型一点点损失就到底、梯度归零 = 强锚定;调小 → 曲线变平 → 必须把对数比拉开很多才算达标 = 允许大幅偏离。

④ 亲手实验

两个可视化,串起整条主线

砍模型看成本,组内优势看机制。

  1. RL 流水线:在 PPO / GRPO / RLVR 之间切换,数一数每种要在显存里养几个大模型(4 → 3 → 2),看每步砍掉了谁、为什么能砍。
  2. GRPO 组内优势:拖动每个回答的奖励,看优势 Â =(r−mean)/std 怎么变。体会“只要组内相对排名,就不需要 value model”。
真公式 · 逐项拆解 11 个 RL 算法(含 PPO↔GRPO diff 视图)

RL Explainer 把 REINFORCE / PPO / RLHF / DPO / GRPO / DAPO 等 11 个算法的真实公式逐项做成可点击——点公式里任何一项看它是什么、为什么在那。最有用的是公式 diff 视图:直接高亮 PPO 和 GRPO 的数学差异,正好回答”GRPO 相对 PPO 到底改了哪一项”。中英双语一键切换。

👀

看什么: ① 切到 diff 视图对比 PPO vs GRPO——你会看到 value model 那一项被组内均值替换,正是上面第二个实验算的东西;② 训练 pipeline 可视化对照上面的”砍模型”图。(社区项目非官方,公式细节以本地论文库原文为准。)

⑤ 项目推进 · 从 0 搭

给我们的模型做一次偏好对齐

小模型上,DPO 是性价比最高的起点。

本模块的项目任务单

步骤你的决策 / 动作说明
1. 准备偏好数据收集 (prompt, chosen, rejected) 三元组成对比较比打分可靠
2. 选方法小模型/资源少 → DPO(不用训 RM、稳)想上推理能力再看 GRPO/RLVR
3. 让 AI 写训练用 TRL 的 DPOTrainer偏好数据格式 prompt/chosen/rejected 查 TRL 文档
4.(进阶)RLVR若做数学/代码任务,用规则验证器 + GRPO有标准答案的领域才适用
5. 验收对比对齐前后:同一问题,回答是否更符合你的偏好更有用/更简洁/更少胡说就成功
⚠️

reward hacking 是这一节的暗礁: 只要奖励是“学出来的”,模型就可能学会钻空子——挑拣证据、编造支撑来“说服”奖励模型,而不是真的变好。即使代理奖励和真实目标正相关,钻空子照样会发生。这就是为什么有标准答案的 RLVR 是一个重要方向:规则不会被说服。

⑥ 坑与带走

常见的坑 + 该带走的

坑症状怎么办
让人直接打分尺度不一致,信号噪声大用成对比较 chosen/rejected
没有 KL 惩罚策略跑偏到奖励模型没见过的分布加 KL,锚回参考模型
盲信奖励模型reward hacking,越训越会狡辩有标准答案就用 RLVR;否则限制训练步数
以为 GRPO 是 R1 发明的记错源头GRPO 出自 DeepSeekMath 2024-02
以为 DPO 是 Anthropic记错源头DPO 出自 Stanford 2023
以为 PPO 天生为 LLM 设计不理解为什么要简化PPO 2017 是通用 RL,复杂度是搬过来的

这一模块你应该带走的

🔭

概念索引(本模块登场): RLHF · 奖励模型 RM · PPO · KL 惩罚 · 参考模型 · 成对偏好 chosen/rejected · Bradley-Terry · DPO · 闭式解 · GRPO · 组内相对优势 · value model · RLVR · 可验证奖励 · reward hacking · 涌现推理

💬

有不明白的? 随时在对话里问我,我会记到 05-问答记录/M5-对齐与RL-问答.md。

深入这一模块

想往下钻,按你愿意花的时间选

本模块概念最密集。两个关键推导(DPO 跳过 RM、GRPO 去掉 value)需要交叉来源。

🎮 想更直观 10–30 分钟

先建立 RLHF 三段式和演进线的整体图
20 min中文(官方)需联网
RLHF 三段式(预训练→RM→PPO)完整流程,明确解释 KL 惩罚是“防止策略跑偏到奖励模型没见过的分布”。
图解精准不靠比喻,官方翻译术语一致。⚠️ HF 在 GitHub issue #1292 挂了勘误表,读前对照一眼。
交互中英需联网 194 stars
11 个算法公式逐项可点击,有“公式 diff 视图”直接看 PPO 和 GRPO 的数学差异,训练 pipeline 可视化。
直接对应 PPO→DPO→GRPO 演进主线的交互需求。diff 视图正好回答“GRPO 相对 PPO 改了哪一项”。社区项目,公式细节对照论文核验。
25 min英文需联网
“为什么 SFT 不够”的最佳单一来源:列了三个假设,并诚实指出 InstructGPT 里 RLHF 其实让幻觉变差了。
切中“只会模仿、不知好坏”的痛点,讲“为什么”而非“是什么”的范本。

🔬 想吃透原理 1–3 小时

Raschka 那篇把整条砍法串成线,单篇价值最高
约 15000 词英文需联网 免费
直击两个推导:GRPO 用组内采样算 advantage 替代 value model;RLVR 一次砍掉 reward+value 两个模型。含 PPO 伪代码走查和数值例子。
本模块单篇价值最高。把整条砍法逻辑串成一条线,正是主线骨架,且诚实标注分析空白。
1h07m中文需联网 28.9 万播放
逐节精读 SFT→RM→PPO 三阶段范式的动机、标注流程、RM 怎么训、PPO 怎么接。
已验证可用。作为“原始范式”锚点最合适。
60% 概念英文需联网
给出组内 advantage 归一化完整公式 Â=(r−mean)/std、KL 的 Schulman 近似式,并讲 DAPO/Dr.GRPO 各变体在修什么毛病。
可直接用来讲原理(不同于纯 API 文档)。归一化公式建议直接进讲稿;“为什么能不要 value model”的动机用 Raschka 那篇补。
40 min英文需联网
Bradley-Terry 成对比较概率模型及其与 Elo 的联系,由此推到 DPO 损失函数。
BT 和“DPO 为什么等价”其实是同一条推导的两端,这篇讲得最连贯。
万字英文需联网
reward hacking 成因;关键反直觉:即使代理奖励与真实奖励正相关,hacking 依然会发生;三类 reward 的区分。
reward hacking 的权威且唯一必读来源,是理解“为什么需要 KL / 为什么 RLVR 重要”的前置。

📄 想读原文 按需

PDF 已在本地 01-论文库/,按演进顺序读
2017-06
人类对成对轨迹做偏好即可定义复杂目标,仅需不到 1% 交互给反馈。
讲“为什么是成对比较而非打分”必须回到这篇——chosen/rejected 是 2017 年就验证过的形态。
2017-07
裁剪目标的策略梯度,约 12 页。
⚠️ 里面没有 LLM、没有 RM、没有 KL——那些都是 InstructGPT 加的。看它是给 Atari/机器人设计的,才懂 GRPO 的简化动机。
2023-05 · NeurIPS
通过对奖励模型重参数化,最优策略可闭式解出,整个 RLHF 塌缩成一个分类损失。
“DPO 为什么能跳过奖励模型”的原始答案。标题即论点。⚠️ 有资料误记为 Anthropic,是错的。
2024-02
GRPO 定义:PPO 的变体,在提升数学推理的同时优化显存占用。7B 在 MATH 上达 51.7%。
⚠️ GRPO 不是 R1 发明的,是早一年的 DeepSeekMath。从出生就和“数学有标准答案”绑定。
2025-01 · Nature
纯 RL(无人工标注推理示例)即可发展出推理能力,自反思、自验证自发涌现。
主线终点。已发表于 Nature (2025),引用用 Nature 版更有分量。
🚫

我替你排除了什么: CSDN/知乎大量“DPO vs PPO vs GRPO 完全指南”(同质化转载、标题党、只贴公式不讲动机)· 多数 R1 解读(复述型,且常把 GRPO 误记为 R1 发明)· “通俗讲解神奇算法”速通向 · 纯 API 的 Unsloth GRPO 教程 · 各类内容农场 SEO 站。
另注:李沐的 GRPO/R1 精读大概率不存在(多次检索未找到);中文 GRPO 深度缺口,用 RL Explainer 中文模式 + Raschka 英文组合填补。

← M4 SFT 指令微调 M6 推理与现代架构 →