资讯动态

大模型训练范式:读懂 SFT、DPO、PPO 与 GRPO

发布时间:2026/9/30 13:00:56 来源:尧图企业网站定制
刚接触大模型后训练时很容易把几件事混在一起模型是不是先写一个答案再把它改得更像标准答案奖励模型和 Critic 都输出分数为什么还要分开既然都有优化效果四种方法是不是按顺序全部训练一遍就行理解它们不妨换一个切入点模型拿什么作为学习材料怎样把材料变成训练信号最后更新谁的参数沿着这三个问题看SFT、DPO、PPO 和 GRPO 就不再是四个需要死记的缩写而是四种不同的学习机制。一、先搭一个共同框架训练改变的是生成概率自回归语言模型每次根据已有上下文给“下一个 token”分配概率。token 可以是一段字、词或符号不一定对应一个汉字。将一段回答中各个位置的条件概率相乘就得到这段回答的概率实际计算通常取对数把乘法变成加法。这里x 是问题y 是整段回答θ 表示待训练参数π 表示模型的生成概率分布。后面出现的“提高概率”都是在调整参数而不是在某一段现成文字上直接增删改。这也解释了“算概率”和“生成答案”的区别算概率是拿一段已有文本计算模型有多倾向于说出它生成答案是按模型当前的概率分布真正选出 token 并组成新文本。前者是 SFT、标准离线 DPO 的训练基础后者进入了 PPO、GRPO 的采样循环。训练数据是“现成的”还是“边学边生成的”标准流程示意。箭头表示数据与学习信号的流向不是四种方法的执行顺序。二、SFT用示范回答教模型“照这样答”SFTSupervised Fine-Tuning有监督微调的学习材料是“问题优质示范回答”。它不要求两份答案分出高下也不需要奖励分数示范回答本身就是监督信号。一次参数更新实际上发生了什么假设示范回答拆成若干 token。训练时预测某个位置的下一个 token使用的是问题和示范回答的真实前缀这叫Teacher Forcing教师强制。即使整段文本一次送进模型因果掩码也会阻止当前位置看到未来 token“整段输入”不等于“偷看后面的答案”。读一批样本。将问题与示范回答拼成训练序列。计算指定 token 的概率。在每个回答位置检查模型给示范中的下一个 token 分配了多大概率。汇总损失。目标 token 的概率越低负对数损失越大。常见指令微调只对回答部分计损失对问题部分做掩码。更新参数。反向传播并执行优化器更新再处理下一批数据。这个式子表示单条样本的 token 损失求和实现中还可能按有效 token 或批次取平均。最小化损失就是推动模型提高示范回答的概率。待训练的语言模型参与更新不需要额外的奖励模型或 Critic。SFT 适合把期望的行为直接示范出来例如如何遵循指令、采用什么输出格式、怎样完成某类任务。但“学示范”不是“保证背出原句”它学习的是一批示范背后的生成规律。它也不会仅凭某个回答未出现在示范中就知道这个回答为什么不好。三、DPO不用重写范文直接学习“哪个更好”DPODirect Preference Optimization直接偏好优化使用“问题chosenrejected”。chosen 是一对回答里更受偏好的那个不一定完美rejected 是相对较差的那个也不一定完全错误。它学习的是这种相对关系。先分清数据准备和正式训练准备偏好数据时可以先让模型生成候选回答再请人或评估机制选出更好的回答。但到了标准离线 DPO 的参数更新阶段这些回答已经固定不需要每一步再生成第三个答案更不会拿第三个答案与 chosen 做文本相似度比较。训练中有两个角色一个是会更新的策略模型 πθ另一个是冻结的参考模型 πref通常取训练开始前的模型作为基准。对同一条偏好样本两者分别计算 chosen 和 rejected 的整段对数概率共形成四个概率量。损失在比较什么令 y⁺ 为 choseny⁻ 为 rejected。DPO 的核心比较量是第一组括号衡量“现在更偏向谁”第二组括号衡量“参考模型原来更偏向谁”。两者相减得到相对于参考模型的偏好变化再构造单条样本损失σ 是 sigmoid 函数β 是控制参考约束与偏好优化权衡的超参数不是学习率。对于给定样本最小化这个损失会推动 Δ 增大也就是让 chosen 对 rejected 的相对优势增强。完整训练目标还会在数据集上取平均。一次更新的流程取偏好样本 → 两个模型分别计算两段回答的对数概率 → 算 DPO 损失 → 反向传播 → 只更新策略模型。参考模型保持冻结标准 DPO 不单独训练奖励模型也不训练 Critic。需要保留一个重要限定相对优势变大不保证 chosen 的绝对概率每次都上升。两者概率都下降但 rejected 下降得更多相对关系也可能改善。DPO 也不是把 rejected 改写成 chosen而是改变未来生成时的倾向。四、PPO让模型自己尝试再根据反馈学习SFT 和离线 DPO 的回答来自已有数据PPOProximal Policy Optimization近端策略优化把生成新回答放入训练循环。模型先尝试获得反馈再更新自己用更新后的策略继续尝试。奖励模型和 Critic到底各自负责什么奖励模型Reward评价这次实际生成的回答。回报 Critic在每个生成位置预测 “从这里按当前策略继续写平均能获得多少后续回报”。用一道题来看题目买了 2 袋糖每袋 3 颗又得到 4 颗一共有多少颗为方便理解设定一个教学评分规则最终答案是 10奖励为 1否则为 0。这里用程序规则代替奖励模型承担的是相同的 “提供评分信号” 的角色。模型已经写到“先算两袋糖2 × 3 6。接下来加上另外 4 颗……”假设 Critic 此时输出 0.9。它的意思不是 “这一步得了 0.9 分”而是根据目前的前缀和这个模型的能力继续生成下去预计最终平均得到 0.9 分。在这个只有 0/1 奖励的例子里也可以理解为Critic 估计接下来最终答对的概率约为 90%。这些数值都是教学假设不是真实实验结果。同一个前缀Critic 的预测相同但实际走向不同最终奖励就不同。预测的是可能结果的平均表现奖励记录的是这一次真正发生的表现。Critic 也会用收集到的回报目标训练让预测越来越准它不是提前知道答案的 “裁判”。两者配合一个提供目标一个帮助更稳地学不是两个裁判重复打分而是 “反馈预测基线” 的分工。典型 PPO 用它们估计优势更新策略同时训练 Critic 改善预测。它能帮助训练但不保证精确找出每一句推理究竟错在哪里。最后记一句奖励决定 “什么值得学”Critic 帮助判断 “这次比预期好多少”奖励可以单独用Critic 通常是为了让学习更稳、更高效。Actor策略模型生成回答最终希望训练好的就是它。奖励机制给回答提供评分信号。可以是数学答案校验、代码测试也可以是学习出来的奖励模型。Critic价值模型输入问题与当前回答前缀预测从这里继续生成的预期后续回报逐步回报汇总。它不是为每个 token 制定一个好坏分数。参考模型常见 RLHF 中冻结的基准用 KL 约束限制策略偏离过远。经典 RLHF 通常先用人类偏好对训练奖励模型让它学会给 chosen 更高分再将它用于 PPO 阶段的自动评分。奖励模型回答“这个输出按评分标准表现如何”结果分Critic 回答“按当前策略从这个前缀继续下去通常能得到多少回报”。各个步骤的预期结果分两者都可能输出数值但学习目标不同。一轮 PPO 怎样闭环采样回答。用本轮采样策略生成一批回答保存 token、采样时的对数概率等信息。这个采样策略就是本轮的“旧策略”。----采样 指的是让当前模型针对同一个提示词随机生成多条不同的候选回答而不是从外部数据集里抽数据。收集训练信号。奖励机制打分Critic 预测各回答前缀的价值典型 RLHF 还加入相对参考模型的 KL 惩罚。估计优势。将奖励和价值预测结合通常使用 GAE广义优势估计判断生成行为比当前预期好多少。更新 Actor。使用优势和新旧策略的概率比构造裁剪目标进行一个或有限多个优化轮次。更新 Critic。让价值预测拟合由奖励及价值估计构造的回报目标。重新采样。用更新后的策略收集新回答开始下一轮而不是无限复用同一批旧回答。优势的直觉是“表现相对基线的好坏”但实际 GAE 不是简单把最终得分减去每个位置的预测值。它先计算一步时序差分误差再按时间汇总sₜ 是问题加当前前缀V 是 Critic 预测γ 控制折扣λ 调节估计的偏差与方差在有限回答上求和会于终止处截断真正终止状态的后续价值按零处理。正优势提供强化信号负优势提供削弱信号。PPO 的“不要改太猛”限制的是什么令 ρₜ 表示当前策略与旧策略对同一已采样 token 的概率比。PPO 最大化的核心裁剪项是当概率比朝有利方向变化过大时裁剪目标不再为继续扩大这部分变化提供额外收益。这不是把全部参数变化或实际概率比硬锁在某个范围内。另一个常见约束是相对参考模型的 KL 惩罚它限制的是相对于长期基准的整体偏移和 PPO 裁剪不是同一回事。因此要分清旧策略与参考模型旧策略是本批数据采样时的快照下一轮会刷新参考模型是约束所依赖的基准典型训练阶段中保持冻结。PPO 通常更新 Actor 和 Critic奖励模型在这一策略优化阶段通常冻结更外层的迭代训练可另行更新奖励模型。五、GRPO同一道题多答几次用组内比较替代 CriticGRPOGroup Relative Policy Optimization组相对策略优化保留了 PPO 风格的策略优化但改变了优势的来源不再单独训练价值模型而是对同一问题生成一组回答利用组内奖励的统计量作为比较基线。组采样。每个问题生成 G 个回答并记录采样时的概率。逐个评分。用奖励模型或规则得到各回答的奖励 rᵢ。算相对优势。在同一个问题的回答组内计算奖励均值与标准差。更新策略。使用组相对优势、PPO 风格裁剪目标和原始版本中的 KL 约束更新 Actor。重新探索。用新 Actor 生成下一组回答重复上述过程。在原始最终结果奖励版本中同一回答的各 token 共用该回答的结果级优势并不意味着知道其中每个推理步骤各自是否正确过程奖励属于另一种更细粒度的设置。工程实现还须处理标准差为零的情况例如加入数值稳定项或跳过无区分信号的组。一个可手算的例子假设某题的四个回答获得奖励 [1, 1, 0, 0]。采用总体标准差口径均值为 0.5标准差为 0.5所以相对优势为 [1, 1, −1, −1]。这是教学算例不是实验结果不同实现的标准差口径可能改变数值尺度。​这张图里的两条分支回答了同一个问题奖励已经有了拿什么当“预期基线”PPO 用学出来的价值预测criticGRPO 用当前回答组的相对表现。两者都需要可信的评分信号。GRPO 不是“多答案版 DPO”DPO 学已有回答对的偏好GRPO 在训练循环中不断采样并根据组内奖励更新。它也不是“只挑最高分做 SFT”组内不同回答会得到不同方向和强度的优势信号而非只保留一份范文。组内比较有边界如果整组同分相对奖励部分就没有区分信号如果整组都不好“组内最好”也不等于绝对正确。省去 Critic 能减少价值模型的训练和存储开销但多回答采样仍有成本不能据此断言所有设置下总训练成本都更低。六、把四种方法放回完整训练路线常见路线是先通过 SFT 建立较好的指令遵循与任务表现再根据可获得的学习信号继续优化手里有可靠的回答对偏好可以做 DPO能对新生成的回答持续评分可以考虑 PPO 或 GRPO 这样的在线强化学习方法。经典 InstructGPT 展示了 SFT、奖励建模与 PPO 的组合DPO 与 DeepSeekMath 则展示了不同的后续优化路径。​同样RLHF是利用人类反馈进行强化学习的框架PPO是其中可用的算法不是 RLHF 的同义词。DPO 从偏好数据直接优化策略绕开显式奖励建模和在线 RL 循环但在理论上与带 KL 约束的奖励优化目标存在联系。七、读完后能回答这五个问题就抓住了主线SFT为什么不需要先生成一份新答案因为它直接用示范回答作监督计算指定 token 的概率和损失。DPO在比较什么比较 chosen 对 rejected 的相对概率优势相对于参考模型改善了多少而不是比较文本长得多像。奖励模型和 Critic 有什么关系前者给反馈后者预测预期回报PPO 用二者构造优势Critic 也从回报目标中学习。PPO的旧策略就是参考模型吗不是。旧策略服务于本批采样和更新幅度比较参考模型服务于相对长期基准的约束。GRPO到底省掉了什么省掉单独训练的价值模型用组内统计计算优势没有省掉奖励也没有省掉在线采样。最后把四种方法压成一句话SFT学示范DPO学相对偏好PPO学比预期更好的生成行为GRPO学比同组平均表现更好的生成行为。真正的共同点不是“都在模仿好答案”而是它们都把某种学习信号转化为参数更新改变模型未来生成回答的概率。参考资料[1] Direct Preference Optimization: Your Language Model is Secretly a Reward Model重点阅读第 3—4 节了解 RLHF 基本流程、DPO 目标与参考模型。[2] DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models重点阅读第 4.1 节、图 4 与附录 A.1理解 PPO、GRPO 及其训练目标。[3] Training language models to follow instructions with human feedback经典 SFT → 奖励建模 → PPO 路线。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑