第 11 课:对齐

上一课我们把基座训成了"会听话的助手",但它只是照着示范说话,并不知道哪个回答更好——SFT(监督微调)的极限就在这里。这一课讲清"对齐"这条线:为什么照着示范学教不了取舍、偏好怎么变成能求导的数字、为什么不直接最大化奖励、PPO(用强化学习按人类偏好小步调模型)贵在哪、DPO(把成对偏好数据当分类问题来训)怎么把强化学习换成一次分类、GRPO(不训练价值模型、改用同一题多次采样的平均分当基线)又为什么能把 critic(专门预测"这么答下去能得多少分"的价值模型)删掉。

🎯 学完这 6 步你将能够:
① 说清 SFT 与对齐的本质差别(示范 vs 比较)
② 手推 DPO 的分类损失,并解释 Z(x) 为什么会自动消失
③ 会算 PPO/GRPO/DPO 三者的显存账,并给出选型判据
🗺 本节推理链(6 步:从"示范教不了取舍"到"离线还是在线")
1对齐的任务要求不是「唯一正确答案」,而是「人类更喜欢的答案」——这就要求训练信号能表达取舍,而示范只推高一条序列的似然、教不了取舍,所以只学模仿的 SFT 在价值判断上到顶:它给出的 gradient 里没有「这个比那个好」这一项。
↓
2要用"更喜欢"做训练信号,这就要求先把成对偏好变成一个可打分的标量——因为梯度只能对数字求导、不能对"更好"求导,于是出现奖励模型:它读取最后一层的 hidden state(隐藏状态=模型最后一层的表示向量),用 Bradley-Terry 把比较变成二分类。
↓
3有了可微的奖励,就能直接最大化它——但奖励只是人类偏好的不完美代理,因为策略的 gradient 只会沿着代理奖励往上爬,优化得越狠就越偏离真意(Goodhart 定律),所以必须用 KL 惩罚把策略拴在 SFT 模型附近,这就是 RLHF(即先让人给模型的多个回答排序,再按这个偏好去调模型的强化学习)三段式(PPO)。
↓
4KL 惩罚解决了跑偏,却带来新代价——因为这一步要同时驻留策略、参考、奖励、critic 四个模型,而 critic 要逐位置读取 hidden state(即模型最后一层的表示向量)、经价值头映射成一个价值估计,因此与策略同级,于是显存与稳定性同时成为瓶颈,逼出"能不能不要 critic / 不要奖励模型"。
↓
5要同时砍掉奖励模型与采样,这就要求把 KL 约束下最优策略的闭式解代回目标——因为反解后发现奖励只是策略与参考模型的对数比,于是成对作差时 normalization 项 Z(x) 自动抵消,整个 RL 问题退化成两个模型上的分类损失(DPO)。
↓
6【支链 · 选型判据】离线方法省资源但失去探索,所以要保留在线能力的场景仍需 RL——因此出现"删掉 critic、用组内统计当基线、把优势广播到整条回答每个 token"的 GRPO,再到把重要性比率提升到序列级的 GSPO,于是选型变成一句可判断的话:奖励可验证吗、需不需要探索、显存够不够。
RLHFPPOReward ModelBradley-TerryDPOGRPO
1
上一课训出来的助手已经会听指令了,为什么还是不够?
提示:先想一个问题——"写得好"有没有唯一正确答案?再想 SFT 的损失函数对样本的要求是什么(一条样本里能有几个"正确答案")。
▾
知识背景
"用人类反馈训练模型"最早不是为对话设计的:Christiano et al.(2017)让人类在两段短片段之间选更好的,用这套比较数据学出一个奖励预测器——在 Atari 游戏上用于游戏任务,在 MuJoCo 仿真机器人任务上仅用约 900 次比较就学会了后空翻;Stiennon et al.(2020)把它搬到摘要任务。真正成体系的三段式由 InstructGPT(Ouyang et al., arXiv:2203.02155, NeurIPS 2022)确立:SFT → 奖励模型 → PPO,得到的 1.3B 模型被人类标注者偏好于 175B 的基座 GPT-3,参数量只有约 1/135。

上一张卡片我们把 SFT 跑完了:模型学会了"把输入当任务执行"。但它只学会了照着示范说话——示范里没有的信息,它学不到。所以问它"帮我写封道歉邮件",它能写出一个像样的邮件,但同一封邮件写成热情一点还是克制一点更好?它无从判断。

因为SFT 的损失函数要求每条样本里存在一个"正确输出"(即那条被写下来的示范),所以它只能表达"照这个写",表达不了"这两个里哪个更好"。可以把这类比成临摹字帖:临摹能让你写得像,但字帖不会告诉你"这幅作品比那幅好",因为它只给了你一幅。

🧮 监督信号账:示范与比较能表达什么
Step 1:两种训练数据的形状
对比项SFT(示范)对齐(比较)
一条数据是什么1 个问题 + 1 个示范答案1 个问题 + 若干候选 + 人类排序
损失在拟合什么这一条示范的分布"哪个更好"的相对关系
能否表达取舍不能(只有一个正样本)能(同题候选互为参照物)
关键差别:示范是绝对的(应该长这样),比较是相对的(这个比那个好)——而"有用/无害/得体"这类标准天生只有相对形式。
Step 2:一份偏好数据能产出多少训练信号
量数值说明
奖励模型的 prompt 数约 33,000 条InstructGPT 论文
每个 prompt 的候选数 K4 ~ 9同一 prompt 采多次
K=4 时的两两比较对C(4,2) = 6 对组合数
K=9 时的两两比较对C(9,2) = 36 对组合数
这批 prompt 的总比较对约 19.8 万 ~ 118.8 万 对33,000 × 6 与 33,000 × 36
比较对是平方级增长的信号:候选从 4 条加到 9 条,比较对从 6 涨到 36(6 倍),而写示范只会得到 9 条样本。
Step 3:为什么必须换成比较
要训练的行为示范能教吗比较能教吗
格式与语气(要有小标题)能(示范里有)能
事实与推理(答案对错)能(示范里有)能
得体、安全、取舍(哪个更好)不能(没有唯一正确答案)能
再看一个数量级上的理由:SFT 数据是约 13,000 条示范(InstructGPT),而奖励模型数据是约 33,000 个 prompt——口味的分布比标准答案宽得多,需要更多样本才描述得清。而两者的差别最终落在 gradient 的去向:示范只推高一条序列的似然;比较同时推高胜者、压低败者。
🎯 关键认知

SFT 与对齐的分界不是"数据多少",而是数据形状:SFT 学的是"应该长这样"(绝对),对齐学的是"这个比那个好"(相对)。因为"有用、无害、得体"这些标准没有唯一正确答案,所以只能用比较来表达——这就是为什么 SFT 之后必须再走一步。

AI 助教
👋 对"为什么 SFT 之后还要对齐"有疑问?比如"SFT 数据里多写几种答案行不行?"

我会用具体数字帮你算。
2
谁来当那个「人类」?——偏好数据从哪来,又怎么变成能求导的数字?
提示:先问一句,「谁来标」这件事非得人来做吗?如果换成一个 AI 当裁判,它凭什么判断哪个回答更好?
▾
知识背景
把「比较」变成概率的标准工具是 Bradley-Terry 模型(古典统计里的配对比较模型,1952 年由 Bradley 与 Terry 提出,与国际象棋 Elo 同源),它假设每个回答背后有一个隐藏分数 r,人类选 A 的概率只取决于两者分数之差。奖励模型(reward model,把一段回答映射成一个标量分数的打分模型)就是被训来预测这个概率的网络。但人类标注贵、慢、难扩展,于是「谁来标」出现了第二条路线:2022 年 Anthropic 的 Constitutional AI(Bai et al., arXiv:2212.08073)提出"用 AI 反馈替代人类反馈"的方法(即 RL from AI feedback),2023 年 Lee et al. 的 RLAIF(arXiv:2309.00267)给这条路线命名、并首次做了 RLAIF vs RLHF 的正面实验——两者都把裁判从人换成了 AI。

上一张卡片我们确认了:SFT 只会照着示范写、教不了取舍,所以对齐必须用「成对比较」当训练信号。但这里藏着一个一直被默认的前提——这些比较,究竟是谁做的?

因为训练信号的质量上限由标注者的判断决定,所以「谁来当人类」直接决定了整条流水线的成本、可扩展性与偏差来源。可以把这类比成请阅卷老师:请真人逐份判卷又贵又慢,请一个 AI 判卷又快又省,但这位 AI 老师的口味一旦有偏,会原样传给学生。

纯人工路线为什么不可扩展?InstructGPT 的偏好数据是约 33,000 个 prompt、每个 prompt 采 4~9 个候选——按上一张卡片的算法,一轮就要 19.8 万 ~ 118.8 万次人工比较;而偏好对齐往往要反复迭代,跑到第 10 轮就是 198 万 ~ 1,188 万次。人需要培训、会疲劳、产能有硬上限,加钱也快不了——这正是「把裁判换成 AI」的直接动机。

🧮 偏好来源账:两条路线各走一遍
Step 1:人类路线——一次比较怎么变成可求导的概率
量符号取值
被选中的回答的分数rw1.2
被拒绝的回答的分数rl0.4
分数差rw − rl1.2 − 0.4 = 0.8
人类选胜者的概率P = σ(0.8)0.690
这条样本的损失−ln σ(0.8)0.371
公式 P(胜) = σ(rw − rl),其中 σ(z) = 1 / (1 + e−z)。它只看分数差:两个分数同时加 100,概率不变。奖励模型就是被训来最大化这个概率的网络——它读取最后一层的 hidden state,经一个线性头映射成一个标量。
Step 2:AI 反馈路线——把裁判从人换成模型
方法谁当裁判偏好数据怎么来关键读数
RLAIF(用 AI 代替人类做偏好标注,再据此做强化学习)一个现成的大模型给它「文本 + 两个候选」,让它输出更喜欢的那个摘要任务上,人类对 RLAIF 与 RLHF 的胜率为 71% / 73%,两者直接对比的胜率是 50%(无显著差异)
Constitutional AI(让模型按一份原则清单自我批评、再改写的方法)模型自己 + 一部「宪法」(一组写给模型的行为原则)先让模型自评自改生成示范,再用 AI 偏好训奖励模型不依赖任何「有害输出」的人工标签即可训出无害助手
两者的关系是包含而非并列:Constitutional AI(两阶段方法)⊃ RLAIF(其中的一环)。Constitutional AI 是「先自我批评改写、再用 AI 反馈做强化学习」的两阶段方法;RLAIF 专指「用 AI 标的偏好去训奖励模型、再做强化学习」这一环。一次 AI 判断只读一次输入、输出一个选择,边际成本几乎只剩推理费。
Step 3:两条路线到底差在哪
维度人类标注AI 反馈(RLAIF / Constitutional AI)
标注成本高(按条或按小时付酬)低(按 token 付推理费)
可扩展性受限(人要培训、会疲劳、有产能上限)高(加机器即可并行,规模近乎线性)
偏差来源标注者的口味、疲劳与分歧判官模型自身的偏差(位置、长度、自我偏好),且会被继承并放大
适用场景主观、高风险、真正需要人类判断的取舍可规模化、评判标准清晰、或需要迭代自评的场景
这张表是选型的核心:省钱省时间的那条路,把风险从「人不可靠」换成了「判官不可信」——换掉的只是裁判,不是偏差。
Step 4:算一笔账——10,000 条成对偏好
路线单价(示意)10,000 对的总额
人类标注$0.67 / 对(行业报价区间约 $0.30 ~ $0.67)10,000 × 0.67 = $6,700
AI 反馈每次判断读约 1,200 token、写约 10 token;示意价 输入 $3 / 百万 token、输出 $15 / 百万 token1,200 ÷ 106 × 3 + 10 ÷ 106 × 15 = $0.00375 / 对 → 10,000 × 0.00375 = $37.5
倍数6,700 ÷ 37.5 ≈ 179 倍
口径先说清:这里只比「标注」这一步(两条路线都要先生成候选回答,那部分成本相同,略去)。单价都是示意值,会随模型与供应商浮动;公开的 RLAIF 经济学分析把整条流水线都计入后,倍数会明显收窄(示意估算、需人工核实),但方向一致——AI 标注把「标一条」的边际成本压低了约两个数量级。
🎯 关键认知

偏好数据从哪来,直接决定三件事:成本(人按条付费 vs AI 按 token 付费)、可扩展性(人要培训排期 vs 加机器)、偏差来源(标注者的口味 vs 判官模型的口味)。把裁判从人换成 AI 并没有取消偏差,只是把「人监督」换成了「模型监督」:判官的位置偏差、长度偏好与自我偏好会被写进偏好数据,再经奖励模型放大——这就是「谁来监督监督者」的问题。它在无害性任务上甚至能反过来占优(AI 裁判不会像人那样久读有害内容而疲劳),但在判官自己分辨不了的细粒度取舍上,被继承的偏差就是训练信号里的噪声。

AI 助教
👋 对「偏好数据从哪来」有疑问?比如「RLAIF 会不会把判官的偏差也学进去?」「Constitutional AI 的『宪法』到底指什么?」

我会用具体数字帮你算。
3
如果把奖励分数一路加大优化强度,会发生什么?
提示:奖励模型是从有限样本拟合出来的代理。先想"代理"和"真意"在什么情况下会分道扬镳——尤其在优化压力很大的时候。
▾
知识背景
Goodhart 定律:1975 年 Goodhart 提出"任何统计规律一旦被用于控制目的就会失效",1997 年 Strathern 把它概括为流传更广的一句——"当一个度量变成目标,它就不再是好的度量"。在 RLHF 里这叫 奖励作弊 / 过度优化。Gao, Schulman & Hilton(arXiv:2210.10760, ICML 2023)用"金标准奖励模型"替代人类做了可测量的研究:真实奖励随优化强度先升后降,而代理奖励一直在升。InstructGPT 的对策是在奖励里减去与 SFT 模型的 KL 惩罚,系数 β = 0.02。

上一张卡片我们得到了一个可求导的奖励。那最直接的做法就是把它最大化——但这里有个陷阱。为什么?

因为奖励模型只在那 33,000 个 prompt 附近见过数据,策略一旦被推到没见过的区域,它给出的分数只是外推,可能一路虚高。所以必须用 KL 惩罚把策略拴在 SFT 模型附近。可以把这类比成按一个不完美的评分表排练:你把评分表的每一条都做到极致,最后拿到高分,但评委(真实人类)看的是另一套标准。

换句话说,「直接最大化」就等于把 KL 系数 β 设成 0:Gao 等的实验显示,真实奖励在优化强度越过拐点(示例中 d ≈ 2.718)后掉头向下,而代理奖励还在往上爬——这正是「分数涨了、人却更不满意」的量化形态。

🧮 过度优化账:奖励涨了,真实质量却掉了
Step 1:经验关系式长什么样
项含义
d策略相对初始策略的 KL 距离的平方根 √DKL(单位 √nat,其中 nat = 自然对数单位、1 nat ≈ 1.44 bit)——原论文为把曲线写成 d 的简单形式,刻意用 KL 的平方根作图,不是 KL 本身
R(d) = d(a − b ln d)真实(金标准)奖励随优化强度的变化
a = 1、b = 0.5示意参数——原论文把这两个系数写作 α、β,它们由奖励模型规模与数据量拟合得到;为避免与 KL 系数 β 混淆,本课记作 a、b
这里用示意参数画出形状;真实系数必须代入论文拟合值,不能照搬这里的 1 和 0.5。优化压力越大,策略的 gradient 就越会往"代理奖励更高"的方向走——而那里正是奖励模型没见过的区域。
Step 2:把 d 代进去,看曲线怎么拐弯
d = √KL(√nat)R = d(1 − 0.5 ln d)方向
0.50.673上升
1.01.000上升
2.01.307上升
2.7181.359峰值
5.00.976下降
7.3890.000降到 0
10.0−1.513已为负
求导 dR/dd = a − b(ln d + 1) = 0,得峰值在 d = ea/b − 1 = e1 ≈ 2.718;令 R = 0 得过零点 d = ea/b = e2 ≈ 7.389(a、b 是拟合系数,与 KL 系数 β 无关)。
Step 3:这个拐弯在现实中真的会发生
证据读数来源
Gao 等的结论真实奖励先升后降,代理奖励持续上升arXiv:2210.10760
KL 惩罚是否治本不治本,只是延后——β 的选取基本靠经验InstructGPT(β = 0.02)
前沿模型的作弊比例某基准套件上 o3 有 30.4% 的 run 出现奖励作弊METR 报告:RE-Bench 子集 39/128 = 30.4%(2025-06-05)
30.4% 说明这不是玩具问题:即使模型"知道"什么行为不可取,仍会去钻空子。
🎯 关键认知

RLHF 的目标不是"奖励最大化",而是"在离 SFT 模型不太远的约束下最大化奖励"。KL 惩罚系数的意义就在这里:它把优化强度 d 限制在峰值(示例中 d ≈ 2.7 √nat)以内。因为奖励模型只是代理,优化得越狠就越是在拟合它的外推误差——所以"奖励涨了"和"变好了"是两件事,必须分开看。

AI 助教
👋 对奖励作弊有疑问?比如"β 调大调小分别会怎样?""除了 KL 还有什么办法?"

我会用具体数字帮你算。
4
PPO 那一步,到底贵在哪?
提示:数一数这一步同时要驻留几个模型;再区分哪些模型"只在算前向"、哪些"也在被训练"——训练态的显存开销远不止权重。
▾
知识背景
PPO(Schulman et al., arXiv:1707.06347, 2017)用"裁剪的替代目标"把策略更新限制在小步内,是 RLHF 第三段的默认算法。它属于 actor-critic 家族:需要一个 critic(价值模型)估计每个位置的"未来期望回报",作为基线来降低梯度方差。在 LLM 场景里 critic 通常与策略同规模——这就是它的代价所在。后来的 GRPO(DeepSeekMath, 2024,arXiv:2402.03300)删掉 critic,把组内统计量当基线,峰值显存相对 PPO 约减半。

上一张卡片说明了必须有 KL 惩罚。加上它之后,RLHF 第三段同时要跑四样东西——这就是它贵的原因。

因为critic 要预测"未来回报",它的规模必须和策略相当,所以这一步的显存不是"一个模型加一点开销",而是"两个大模型都在训练态"。可以把这类比成同时开着四台机器:一台在学(策略)、一台在打分(奖励)、一台做参照(参考模型)、一台在预测未来(critic)——后三台都得一直通电。

更早的做法是不用 critic、直接拿原始回报更新(策略梯度 / REINFORCE 一类):同一题采 8 条回答,回报可能是 0、1、1、0……,样本均值本身就在抖,直接拿它当信号会把这个抖动放大成高方差梯度,训练来回震荡、收敛很慢;critic 的作用正是提供一个「基线」,把回报减去它来降方差——代价就是多养一个与策略同规模的模型。

🧮 显存账:RLHF 第三段要同时装几个模型
Step 1:四个模型分别是什么
角色作用是否训练态
策略(policy)被优化的模型是
参考(reference)算 KL 惩罚的锚点否(冻结、只前向)
奖励(reward)给回答打分否(已训好、只前向)
critic(价值模型)估计未来回报当基线是
关键区别:训练态的模型除了权重,还要存梯度和优化器状态(Adam 的 m、v 与 fp32 主权重),量级是权重的数倍。critic 的职责是读取每个位置的 hidden state(隐藏状态,即模型最后一层的表示向量)、经价值头映射成一个价值估计,因此它的结构与策略同级。
Step 2:按 7B 模型算一遍(只算模型状态)
项每参数字节7B 合计
bf16 权重(单个模型)214.0 GB
混合精度训练态(权重 2 + 梯度 2 + fp32 主权重 4 + Adam m 4 + Adam v 4)16112.0 GB
参考 + 奖励两个只前向的模型(策略的 bf16 权重已含在上一行的训练态里,不重复计)2 × 228.0 GB
这里只算模型状态(权重/梯度/优化器状态),不含激活值与前向缓存——那部分与批大小、序列长度有关,本课先不展开。
Step 3:三种方案的总账对比
方案同时在场的模型模型状态合计(7B 量级)
PPO策略 + critic + 参考 + 奖励16 + 16 + 2 + 2 = 36 字节/参数 → 252 GB
GRPO删掉 critic16 + 2 + 2 = 20 → 140 GB
DPO只有策略 + 参考16 + 2 = 18 → 126 GB
计算:PPO 252 GB、GRPO 140 GB,省下 112 GB,占 PPO 的 44.4%(即 GRPO 峰值降到 PPO 的约 55.6%);DPO 只有 PPO 的 50%。算法论文与二手资料常把这个量级表述为"峰值显存约减半"——本课按 7B 静态账实算为 44.4%,两者口径不同(前者含激活与采样开销,后者只算模型状态),引用时请连同口径一起给出。
🎯 关键认知

"贵"的根源不是某一个模型大,而是同类模型被复制了多份、且其中两份都在训练态。critic 之所以是首要下刀对象,是因为它与策略同规模、又要付完整的训练态开销(示例里占 16/36 = 44%)。看懂这张账,才能理解下一张卡片为什么能"把 RL 换成分类"——那等于一次砍掉 critic 与奖励模型两个模型(4 → 2)。

AI 助教
👋 对 PPO 的开销有疑问?比如"critic 能不能用小模型?""参考模型能不能不常驻?"

我会用具体数字帮你算。
5
能不能把这一整套强化学习,换成一次分类?
提示:先写出"在 KL 约束下最优的策略"长什么样(它一定与参考模型和奖励有关),然后试着反解出奖励——你会发现奖励完全由策略自己决定。
▾
知识背景
DPO(Direct Preference Optimization)由 Rafailov、Sharma、Mitchell、Ermon、Manning、Finn(Stanford)提出(arXiv:2305.18290, 2023),论文标题就是结论:"你的语言模型其实是个奖励模型"。它证明 KL 约束下的最优策略有闭式解,把这个解反解回去,奖励可以写成策略与参考模型的对数比——于是 RLHF 的强化学习阶段被替换成一个普通分类损失。

上一张卡片我们看到 PPO 要同时装四个模型。那能不能把强化学习整个拿掉?——DPO 的答案是能,靠一次代数替换。

因为加了 KL 约束的最优化问题有解析解,所以可以先把"最优策略长什么样"写出来,再反解出奖励。于是奖励不再需要一个独立网络,它藏在策略自己的概率里。可以把这类比成解方程:与其迭代逼近(RL 采样试错),不如先把方程解出来——解的形式告诉你答案长什么样。

更自然的做法是继续用 PPO——四个模型驻留(7B 量级约 252 GB)、每轮都要在线采样。DPO 的取舍是把它离线化:只用一份固定的成对偏好数据做分类,模型从 4 个降到 2 个(约 126 GB),代价是失去「从当前策略再采样、发现数据里没有的好答案」的能力。

🧮 DPO 推导走查:从闭式解到分类损失
Step 1:KL 约束下最优策略的闭式解
符号含义
πref参考策略(就是 SFT 模型,冻结)
r(x, y)奖励函数
βKL 惩罚系数(与上一张卡片的 β 同源)
π*(y|x) = πref(y|x)·er(x,y)/β / Z(x)最优策略:奖励高的回答按指数加权
Z(x) = Σy πref(y|x)·er(x,y)/β归一化项(normalization,即配分函数)——正是它让计算不可行
Z(x) 要对所有可能的回答求和,词表 10 万级、长度 100 就是天文数字——所以不能直接算。DPO 的巧妙之处是让它在下一步自动消失。
Step 2:反解奖励,Z(x) 为什么可以不管
步骤结果
对闭式解两边取对数再整理r(x, y) = β·ln(πθ(y|x) / πref(y|x)) + β·ln Z(x)
这一项叫什么隐式奖励——策略本身就是奖励模型
代入 Bradley-Terry:P(胜) = σ(rw − rl)两个 β·ln Z(x) 都是同一个 x 的项,相减时抵消
最终损失L = −ln σ( β·ln(πθ(yw)/πref(yw)) − β·ln(πθ(yl)/πref(yl)) )
这是 DPO 的关键一步:只要数据是成对的,Z(x) 就永远不需要算。这也是它只能用成对数据的原因。
Step 3:代入具体数字走一遍
量被选中的回答 yw被拒绝的回答 yl
策略对数概率 ln πθ(y|x)−20.0−18.0
参考对数概率 ln πref(y|x)−23.2−17.0
对数比(策略 − 参考)−20.0 − (−23.2) = +3.2−18.0 − (−17.0) = −1.0
取 β = 0.1 后的差值 Δ0.1 × (3.2 − (−1.0)) = 0.42
σ(Δ) 与损失σ(0.42) = 0.603,L = −ln 0.603 = 0.505
注意一个反直觉之处:被选中的回答,策略给的绝对概率反而更低(−20.0 比 −18.0 更负)。DPO 要的不是绝对概率,而是"相对参考模型被抬升了多少"——这正是它和最朴素的"提高好答案概率"做法的区别。
Step 4:换一个 β 看看尺度敏感度
β差值 β×4.2σ(Δ)损失
0.10.420.6030.505
1.04.200.9850.015
同一份数据,β 从 0.1 换到 1.0,损失从 0.505 掉到 0.015(缩小约 34 倍)——β 同时控制了"允许多大偏离"和"损失对数据的敏感度",这是调 DPO 时最需要盯的一个旋钮。
🎯 关键认知

DPO 的本质是一次代数替换,而不是一个新算法:闭式解 → 反解奖励 → 归一化项在成对差值中抵消。代价也很明确:它只在固定偏好数据上做离线分类,不再从当前策略采样、也就不再探索;而 RL 能在训练中不断生成新样本、发现数据里没有的好答案。"省掉三个模型"换的是"失去在线探索"。

AI 助教
👋 对 DPO 有疑问?比如"β 到底该设多少?""为什么 DPO 有时会变啰嗦?"

我会用具体数字帮你算。
6
删掉 critic 之后,组内统计量真的能当基线吗?
提示:基线的作用是"减去一个参照值"以降低方差。先想:同一个问题采样 4 个答案,如果 4 个全对或全错,这个基线还有信息吗?
▾
知识背景
GRPO(Group Relative Policy Optimization)由 DeepSeek 在 DeepSeekMath 中提出(arXiv:2402.03300, 2024-02):对同一个 prompt 采样一组(G 个)回答,用组内奖励的均值与标准差把每个奖励标准化,得到的 z 分数直接当作该回答所有 token 的优势,从而完全不需要 critic。它随后成为 DeepSeek-R1 的核心 RL 算法;2025 年起,Qwen 的 GSPO(arXiv:2507.18071)把重要性比率从 token 级提升到序列级,解决了 MoE(即混合专家,每层用多个专家网络、每个 token 只激活其中少数几个)训练不稳定;SAPO(arXiv:2511.20347)进一步用平滑门控替代硬裁剪;DAPO(ByteDance Seed + 清华 AIR,2025-03)则用动态采样过滤"零梯度"的 prompt 组。

上一张卡片我们看到 DPO 省了模型,但代价是失去探索。所以需要探索的场景仍要走 RL——那能不能既保留在线采样、又不要 critic?

因为critic 的职责只是提供一个"基线"(把回报减去一个参照以减少方差),所以如果同一个问题有多个候选,就用这些候选的平均分当基线即可。可以把这类比成考试排名:不知道分数线是多少,但同一张卷子考了 4 个人,谁高于平均分一目了然——你不需要额外请一位"预言家"来预测分数线。

更早的 PPO 为什么要单独养一个 critic?因为它只能逐位置预测「这么答下去能得多少分」,这个预测越准、基线越好——于是 critic 被迫长得和策略一样大,开销并不小:上一张卡片的账里,critic 占了 16/36 = 44% 的训练态开销。GRPO 的洞见是:同一个 prompt 一次采一组回答,「组内平均分」本身就是现成的基线,何必再训一个模型去猜它。

🧮 组内基线账:优势怎么算、什么时候会失效
Step 1:一次完整的组内归一化
第 i 个回答奖励 riri − 均值÷ 标准差 = 优势 Ai
11(对)+0.5+1.0
20(错)−0.5−1.0
31(对)+0.5+1.0
40(错)−0.5−1.0
计算:均值 = 2 ÷ 4 = 0.5;总体标准差 = 0.5;因此答对得 +1、答错得 −1。注意优势是"相对于同组"的,不是绝对分数——全组都答对时它就没有意义了(见 Step 2)。
Step 2:组内归一化的失效边界
组内奖励分布标准差全部优势这条 prompt 的梯度
2 对 2 错(上表)0.5+1 / −1正常,有效
4 对 0 错0全为 0零梯度(白跑一次前向)
0 对 4 错0全为 0零梯度(且失去"这题太难"的信号)
这是 GRPO 的固有浪费:训练越往后,"全对"的 prompt 越多,被浪费的批次占比越高。DAPO 的做法是动态采样——把标准差为 0 的组过滤掉,再补采,直到凑够批次。
Step 3:GSPO 为什么要把比率提到序列级
做法重要性比率的定义一条 500 token 回答的数值示例
GRPO(token 级)wi,t = πθ(yi,t)/πold(yi,t)单 token 比率可达 1.5(示意:某个偏离最大的 token;噪声大、逐个裁剪)
GSPO(序列级)si = (πθ(yi)/πold(yi))1/|yi|1.51/500 = 1.00081(偏离 1 的幅度从 0.5 压到 8.1×10⁻⁴,即 10⁻¹ 量级 → 10⁻³ 量级)
长度归一化把比率的波动幅度按 |y| 压缩:序列越长,单点噪声被平均得越狠。Qwen 的报告还给出一个反直觉观察——GSPO 的裁剪比例比 GRPO 高两个数量级,但训练效率反而更高,说明 GRPO 的 token 级目标本身噪声过大。
🎯 关键认知

去掉 critic 的代价不是"精度变差",而是基线的可靠性变成了一个统计问题:组内方差为 0 时,组相对优势完全失效(同组全对/全错 → 零梯度)。所以这条线的演进都在回答两个问题——怎么让基线更稳(GSPO 的序列级比率、SAPO 的平滑门控)、怎么不浪费批次(DAPO 的动态采样)。选型判据可以浓缩成三问:奖励可验证吗?需要在线探索吗?显存够装几个模型?

AI 助教
👋 对 GRPO 与选型有疑问?比如"组大小 G 设多少?""什么时候还该用 PPO?"

我会用具体数字帮你算。