简介:本文围绕大模型对齐阶段最常用的三种算法PPO、GRPO、DPO,从原理差异、训练架构、资源需求、实施流程到选型决策进行系统讲解。读者将获得一套可落地的对齐方案评估框架,并能根据自身数据规模、算力条件与业务目标选择最合适的训练策略。
在大语言模型训练流程中,预训练阶段完成后,模型虽然具备较强的语言生成能力,但其输出行为并不一定符合人类偏好。模型可能产生无关内容、拒绝合理请求、表达方式生硬,甚至在开放对话中输出不安全或不友好的文本。对齐阶段的核心任务,就是让模型的输出分布向“人类更认可”的方向偏移。
本教程围绕对齐阶段三种主流算法——PPO、GRPO、DPO展开,重点解决以下问题:
本文适合以下读者参考:
阅读本文前,建议读者具备以下基础:
如果读者对强化学习完全陌生,建议先补充策略梯度方法的基础知识,再返回阅读本文。
大模型完成监督微调后,已经能够遵循指令完成特定任务,但仅靠监督学习存在几个明显局限。首先,监督微调的学习目标是“模仿给定回答”,无法直接建模“回答质量的高低排序”;其次,标注数据中通常只有一个被采纳的回答,缺乏对劣质回答的显式负反馈;再次,模型在实际使用中面对的输入分布远比训练集更加开放和复杂。
对齐阶段通过引入偏好信号,让模型学会区分“好回答”与“坏回答”之间的细微差异。这种学习方式的核心挑战在于:人类偏好难以用简单的规则函数精确表达,而需要通过学习得到的奖励模型来近似拟合。
PPO(近端策略优化) 是最早规模化应用于大模型对齐的强化学习算法。它采用“策略模型 + 奖励模型 + 参考模型 + 价值模型”的四模型架构,通过策略梯度方法在奖励信号的引导下直接优化策略。PPO的核心思想是通过裁剪目标函数,限制每次策略更新的幅度,从而在训练效率和稳定性之间取得平衡。
GRPO(组相对策略优化) 可以理解为PPO的一种工程优化变体。它在保持策略梯度优化框架的前提下,移除了独立的价值模型,转而通过对同一输入采样一组回答、计算组内相对优势来完成更新。这一改动显著降低了显存占用和计算开销,使得在有限算力条件下进行对齐训练成为可能。
DPO(直接偏好优化) 则选择了一条完全不同的路线。它放弃了显式的奖励模型和强化学习训练循环,而是将偏好排序信息直接编码进监督式损失函数中。DPO的核心洞察是:在特定条件下,最优策略与奖励函数之间存在解析映射关系,因此可以直接从偏好数据中优化策略,而无需先训练奖励模型再做策略搜索。
从工程实践角度,选择对齐算法应重点考虑以下维度:
PPO的全称是Proximal Policy Optimization,即近端策略优化。在LLM对齐场景中,PPO的优化目标是:在奖励模型给出的分数引导下,调整策略模型的参数,使其生成更高奖励的回答,同时避免偏离参考模型过远。
“近端”二字是理解PPO的关键。策略梯度方法的一个固有问题是:如果单步更新幅度过大,策略可能跳入一个完全不同的分布区域,导致之前采样的数据不再适用,训练出现剧烈震荡甚至崩溃。PPO通过裁剪目标函数来解决这个问题,具体逻辑如下:
ratio = π_new(token|state) / π_old(token|state);1 + ε;1 - ε。这样做的效果是:策略更新永远不会因单条样本产生过大偏移,保证了训练的稳定性。
在架构层面,标准PPO对齐训练涉及四个模型:
第一步:准备偏好数据。
PPO本身不直接消费偏好数据,偏好数据用于训练奖励模型。奖励模型的训练数据通常形如 (prompt, chosen_response, rejected_response),即同一输入下有一对优劣对比的回答。在训练前,需要对回答进行长度截断、特殊token清理和格式统一。
第二步:训练奖励模型。
奖励模型的架构通常复用基础模型,将其输出层替换为标量回归头。训练目标是让chosen回答的得分高于rejected回答,常见损失形式为成对排序损失。奖励模型训练完成后,需要在独立的验证集上检查其区分能力。
第三步:初始化策略模型与参考模型。
策略模型通常从监督微调后的检查点加载。参考模型使用相同的检查点加载,但在整个对齐训练过程中保持参数冻结。
第四步:初始化价值模型。
价值模型可从奖励模型或其他预训练检查点初始化,因为从头初始化通常会导致训练不稳定和收敛缓慢。价值模型需要学习预测从当前状态开始未来累计奖励的期望值。
第五步:执行PPO训练循环。
每一轮迭代包含以下子步骤:
第六步:验证与保存。
每个若干步后,在验证集上评估策略模型输出的奖励均值、KL散度和生成质量。选择验证表现最佳的检查点保存。
PPO的优势在于其经过大规模验证的稳定性和最终对齐效果的上限。由于引入了价值模型独立估计基线,加之裁剪机制对更新幅度的严格限制,PPO在训练过程中相对不容易出现策略崩塌。同时,PPO对奖励信号的利用效率较高,能够在较少的采样步数内实现有效对齐。
但PPO的局限同样明显。四模型架构意味着训练时需要同时将策略模型、参考模型、价值模型和奖励模型加载到显存中。对于数十亿参数级别的模型,这对GPU资源提出了极高要求。此外,价值模型的训练本身就是一个附加的优化问题,其收敛质量直接影响优势估计的准确性。如果价值模型估计偏差较大,策略梯度方向也会受到干扰。
奖励黑客现象:策略模型找到奖励模型的漏洞,生成高分但实际质量糟糕的回答。排查思路包括:定期人工抽检生成样本、在奖励模型中引入对抗样本、限制策略偏离参考模型的KL阈值。
训练不稳定:损失值剧烈波动或生成质量忽高忽低。可尝试降低学习率、增大裁剪系数、增加采样批次大小、检查价值模型是否同步收敛。
显存不足:四模型架构导致显存溢出。可考虑使用更小的参考模型精度(如半精度加载)、减小批处理大小、采用梯度累积,或迁移到GRPO方案。
GRPO(Group Relative Policy Optimization)的核心创新是用组内相对比较替代价值模型的绝对估计。其设计出发点来自一个朴素的观察:在同一输入下,一组采样回答之间的相对好坏排序,足以提供策略更新所需的梯度信号,而不需要额外的价值网络来估计每个状态的期望回报。
这一设计的直接收益是显存占用显著降低。在标准PPO中,价值模型通常与策略模型规模相当,移除价值模型意味着训练时可以减少一个完整大模型的显存开销。对于资源受限的团队或个人研究者来说,GRPO使得对齐训练在消费级硬件上的可行性大幅提升。
数据准备阶段与PPO基本一致,仍需要训练好的奖励模型。区别在于训练阶段不再需要价值模型。
GRPO的训练步骤如下:
组内标准化的数学表达为:
advantage_i = (reward_i - mean(rewards_in_group)) / (std(rewards_in_group) + epsilon)
其中epsilon是一个极小常数,用于避免除零。
通过这种组内相对比较,GRPO实际上完成了一种隐式的基线估计:组均值充当了该prompt的期望奖励基线,组标准差则反映了回答质量的波动幅度。这种方式避免了价值模型训练引入的偏差和额外计算成本。
组大小G的选取是一个重要权衡参数。G越大,组内标准化越稳定,优势估计越可靠,但采样和打分的计算成本也线性增长。经验上,在计算资源允许的情况下,G取8左右通常能获得较好的效果与成本平衡。
采样温度也需要调整。在对齐训练中,策略模型的采样温度通常设得比推理时高一些,以增加回答的多样性。多样性的提升使组内比较更有信息量,因为如果所有回答都高度相似,组内标准化的意义就减弱了。
KL散度的控制在GRPO中同样关键。移除价值模型后,策略偏离的风险并不消失,因此仍需要保留对参考模型的KL约束。实践中常见的处理方式是将KL惩罚项直接加在奖励分数上,或作为独立损失项加权求和。
GRPO适合以下情况:
GRPO的局限在于:当组内回答的奖励分布高度偏斜(例如大多数回答得分相近、仅极少数极端好或极端坏)时,标准化后的优势信号可能不够精细。此外,如果奖励模型本身质量不高,组内比较放大了奖励模型噪声对梯度的影响。
DPO(Direct Preference Optimization)代表了一种与PPO和GRPO完全不同的技术哲学。前两者都属于“先学奖励、再优化策略”的两阶段范式,而DPO则尝试将这两个阶段合二为一。
DPO的理论基础来自一个重要的数学观察:在带KL正则的奖励最大化问题中,最优策略与奖励函数之间存在一个闭式关系。具体来说,如果 π* 是在参考策略 π_ref 约束下最大化期望奖励的最优策略,那么奖励函数可以表示为:
r(x, y) = β * log(π*(y|x) / π_ref(y|x)) + β * log(Z(x))
其中Z(x)是配分函数,β是KL惩罚系数。当我们将这个关系代入成对偏好排序的Bradley-Terry模型中时,配分函数会相互抵消,得到一个只依赖于策略模型和参考模型参数的监督式损失函数。
这意味着:不需要显式训练奖励模型,也不需要执行强化学习循环,直接最小化一个简单的分类损失就能让策略模型学会对齐。
数据准备:DPO直接使用偏好对数据 (prompt, chosen, rejected),与训练奖励模型的数据形式一致。训练时,让策略模型同时计算chosen和rejected两条回答的对数概率。
损失计算:核心损失函数衡量的是“策略模型对chosen回答的相对偏好程度”与“人类标注偏好”之间的一致性。当策略模型给chosen分配的相对概率越高,损失越小。参考模型的作用是对策略模型的概率计算施加基准,防止策略通过简单拉升所有回答的绝对概率来降低损失。
训练执行:整个流程类似监督微调——前向计算损失、反向传播、参数更新,不涉及采样、奖励打分或策略梯度等强化学习特定操作。训练循环的实现复杂度大幅降低。
验证与保存:与监督微调类似,在验证集上监控损失下降和生成质量,选择最优检查点保存。
优势方面,DPO的工程实现极为简洁。训练代码几乎等同于一个监督学习脚本,不需要维护策略模型与奖励模型之间的采样-打分循环,也不需要价值模型的辅助训练。训练超参数大幅减少,调试难度显著降低。计算成本上,DPO每个训练步只需对chosen和rejected各做一次前向和一次反向,相比PPO的多模型协调,硬件门槛低得多。
局限方面,DPO的效果上限在复杂对齐任务中可能不如PPO。原因在于:偏好数据通常是在参考策略的输出分布上采集的,当策略模型在训练中偏离该分布后,偏好数据中的信号可能与当前策略不匹配,这种现象称为“离线策略偏差”。DPO缺少像PPO那样在线采样重新获取反馈的机制,因此在多轮对话、推理任务等复杂场景中,其对齐精细度可能存在瓶颈。此外,DPO对偏好数据的质量高度敏感,噪声标注的负面影响比强化学习框架下更直接。
| 维度 | PPO | GRPO | DPO |
|---|---|---|---|
| 模型数量 | 4个(策略、参考、奖励、价值) | 3个(策略、参考、奖励) | 2个(策略、参考) |
| 训练机制 | 在线策略梯度 | 在线策略梯度 | 离线监督式优化 |
| 显存占用 | 最高 | 中等 | 最低 |
| 工程复杂度 | 高 | 中 | 低 |
| 训练稳定性 | 较稳定 | 较稳定 | 稳定 |
| 对奖励模型依赖 | 强 | 强 | 不依赖独立奖励模型 |
| 数据需求 | 偏好数据(训奖励模型) + 在线prompt | 偏好数据(训奖励模型) + 在线prompt | 偏好对数据 |
| 复杂对齐效果上限 | 高 | 中高 | 中 |
场景一:追求最佳对齐效果,算力充足
推荐PPO。当业务场景对模型输出质量有严格标准,且团队具备充足的GPU资源和强化学习调优经验时,PPO的在线采样机制和精细优势估计能发挥最大价值。
场景二:算力有限但希望保留强化学习框架
推荐GRPO。GRPO在效果上接近PPO,但显存和计算成本降低约一个价值模型的量级。对于中等规模团队和模型,这是性价比最高的强化学习对齐方案。
场景三:快速落地,工程资源受限
推荐DPO。当团队规模小、时间紧、需要快速完成对齐迭代时,DPO的极简实现和监督式训练的稳定性是不可替代的优势。即使最终方案会切换到PPO,先用DPO完成一个基线版本也是高效的做法。
场景四:分阶段推进
实践中常见的策略是先用DPO快速验证对齐效果和数据质量,再逐步过渡到GRPO或PPO以追求更高上限。这种渐进式路径能够降低早期投入风险。
无论选择哪种方案,以下几点需要贯穿始终:
PPO、GRPO和DPO分别代表了对齐问题在强化学习谱系上的三种不同解决策略。PPO以四模型架构和裁剪优化为特征,效果上限高但资源消耗大;GRPO通过组内相对优势估计移除了价值模型,在效果与成本之间取得了实用化的平衡;DPO则以监督式学习的极简路径直接消费偏好数据,显著降低了工程门槛。
实际选型时,没有绝对正确的答案。核心是根据团队的技术能力、算力预算、数据条件与业务目标,选择最适合当前阶段的方案,并在训练过程中通过严格的监控与评估体系持续校正方向。对齐不是一次性的操作,而是一个需要反复迭代、逐步收敛的系统工程。