为什么GRPO更适合强逻辑内容的强化学习

PPO(Proximal Policy Optimization,近端策略优化) 是目前深度强化学习(Deep RL)领域中最流行、最核心的算法之一。它由 OpenAI 在 2017 年提出,因为其稳定性高、实现简单、调参相对容易,成为了许多任务(从机器人控制到 ChatGPT 的 RLHF 阶段)的首选算法。

以下是对 PPO 技术的详细解析,从背景动机到核心数学原理,再到优缺点分析。


1. 背景与动机:为什么要发明 PPO?

在 PPO 出现之前,策略梯度(Policy Gradient)类算法面临两个极端的问题:

  1. Vanilla Policy Gradient (REINFORCE 等): 极其不稳定。如果学习率(Step Size)太大,策略更新幅度过大,可能导致策略"掉下悬崖"(性能骤降),并且很难恢复;如果学习率太小,训练又慢如蜗牛。
  2. TRPO (Trust Region Policy Optimization): 为了解决步长问题,TRPO 引入了"信任区域"概念,强制策略更新的幅度在一定范围内(通过 KL 散度约束)。虽然效果好且稳定,但它需要计算二阶导数(黑塞矩阵),计算量巨大且实现非常复杂

PPO 的目标: 也就是要拥有 TRPO 的稳定性(限制更新幅度),同时拥有类似普通梯度下降(SGD/Adam)的简单性和计算效率(只用一阶导数)。


2. PPO 的核心思想:Clip(裁剪)

PPO 属于 Actor-Critic 架构的 On-Policy (在线策略)算法。它的核心创新在于它的目标函数(Loss Function)

2.1 策略比率 (Policy Ratio)

假设旧的策略是 π θ o l d \pi_{\theta_{old}} πθold,新的策略是 π θ \pi_{\theta} πθ。我们定义一个比率 r t ( θ ) r_t(\theta) rt(θ):
r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{old}}(a_t | s_t)} rt(θ)=πθold(at∣st)πθ(at∣st)

  • 如果 r t > 1 r_t > 1 rt>1,说明新策略比旧策略更倾向于采取该动作。
  • 如果 r t < 1 r_t < 1 rt<1,说明新策略减少了采取该动作的概率。
2.2 PPO-Clip 的目标函数 (最重要的公式)

PPO 不希望 r t r_t rt 偏离 1 太远(即不希望新旧策略差异过大)。其策略损失函数 L C L I P L^{CLIP} LCLIP 如下:

L C L I P ( θ ) = E ^ t [ min ⁡ ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L^{CLIP}(\theta) = \hat{\mathbb{E}}_t \left[ \min \left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]

这里包含几个关键部分:

  1. A ^ t \hat{A}_t A^t (优势函数 Advantage): 衡量在状态 s t s_t st 下采取动作 a t a_t at 比"平均表现"好多少。
    • A ^ t > 0 \hat{A}_t > 0 A^t>0: 动作是好的,应增加概率。
    • A ^ t < 0 \hat{A}_t < 0 A^t<0: 动作是坏的,应减少概率。
  2. clip ( r , 1 − ϵ , 1 + ϵ ) \text{clip}(r, 1-\epsilon, 1+\epsilon) clip(r,1−ϵ,1+ϵ): 强制将比率 r r r 限制在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon, 1+\epsilon] [1−ϵ,1+ϵ] 之间。通常 ϵ \epsilon ϵ 取 0.1 或 0.2。
  3. min ⁡ \min min 操作: 这是 PPO 的精髓,被称为悲观下界(Pessimistic Bound)

直观解释:

  • 当动作是好的 ( A ^ t > 0 \hat{A}_t > 0 A^t>0): 我们希望 r t r_t rt 变大(增加概率)。但如果 r t r_t rt 超过了 1 + ϵ 1+\epsilon 1+ϵ(比如增加了 20% 以上),Clip 就会生效,损失函数就不再奖励这种大幅度的更新。这防止了过度自信。
  • 当动作是坏的 ( A ^ t < 0 \hat{A}_t < 0 A^t<0): 我们希望 r t r_t rt 变小。但如果 r t r_t rt 低于 1 − ϵ 1-\epsilon 1−ϵ,Clip 生效,防止概率降得太猛导致无法探索。

通过这种方式,PPO 形成了一个"虚拟的信任区域",确保每次更新都在安全范围内。


3. PPO 的两种变体

虽然上面提到的是最常用的 PPO-Clip,但最初论文提出了两种形式:

  1. PPO-Clip: 利用 clip 函数直接截断修剪梯度。这是目前的主流,因为它实现最简单,效果也最好。
  2. PPO-Penalty (Adaptive KL Penalty): 将 KL 散度(衡量两个分布的距离)作为一个惩罚项放入 Loss 中:
    L = E [ r t A ^ t − β ⋅ KL ( π θ o l d , π θ ) ] L = \mathbb{E}[ r_t \hat{A}t - \beta \cdot \text{KL}(\pi{\theta_{old}}, \pi_\theta) ] L=E[rtA^t−β⋅KL(πθold,πθ)]
    如果在训练中 KL 散度太大,就增大系数 β \beta β(加大惩罚);如果 KL 太小,就减小 β \beta β。这个方法比较像 TRPO,但因为还要动态调整系数,不如 PPO-Clip 方便。

4. 完整的 PPO 算法流程

PPO 通常结合 GAE (Generalized Advantage Estimation) 使用,并在 Actor-Critic 框架下运行。

总损失函数:
L t t o t a l = L t C L I P ( θ ) − c 1 L t V F ( θ ) + c 2 S [ π θ ] ( s t ) L_t^{total} = L_t^{CLIP}(\theta) - c_1 L_t^{VF}(\theta) + c_2 S[\pi_\theta](s_t) Lttotal=LtCLIP(θ)−c1LtVF(θ)+c2S[πθ](st)

  • 第一项:策略梯度损失(让 Actor 变强)。
  • 第二项:价值函数损失(让 Critic 预测更准,通常是 MSE Loss)。
  • 第三项:熵(Entropy)奖励(鼓励探索,防止过早收敛)。

执行步骤:

  1. 采样 (Sampling): 使用当前的 Actor π θ o l d \pi_{\theta_{old}} πθold 在环境中运行 T T T 步,收集数据(状态、动作、奖励)。
  2. 计算优势 (Advantage): 利用 Critic 网络计算价值 V ( s ) V(s) V(s),并结合奖励计算 GAE 优势 A ^ t \hat{A}_t A^t。
  3. 优化 (Optimization):
    • 将收集到的这批数据打乱,分成多个 Mini-batch。
    • 对这些数据进行 K K K 个 Epoch 的训练(重复利用这批数据)。
    • 使用 Adam 优化器更新网络参数,最小化总损失。
  4. 更新旧策略: 训练完成后,令 π θ o l d ← π θ \pi_{\theta_{old}} \leftarrow \pi_{\theta} πθold←πθ。
  5. 循环: 回到步骤 1。

5. PPO 的关键优缺点

优点:
  1. 稳定性极佳: Clip 机制保证了更新幅度可控,不像 DQN 或 Vanilla PG 那样容易训练崩溃。
  2. 通用性强: 既可以处理连续动作空间 (如机器人控制),也可以处理离散动作空间(如打 Atari 游戏,生成文本)。
  3. 调参相对简单: 相比于 TRPO 复杂的数学约束,PPO 只需要调整学习率、Clip 范围( ϵ \epsilon ϵ)和 Entropy 系数即可,且默认参数通常效果不错。
  4. 数据利用率比传统 PG 高: 传统的 Policy Gradient 采一次数据只能更一次参数(Off-policy 除外)。PPO 虽然是 On-policy,但它允许在一个 Batch 上进行多次(Epochs)梯度更新,榨干数据的价值。
缺点:
  1. 样本效率(Sample Efficiency)仍不如 Off-Policy 算法: 相比于 SAC (Soft Actor-Critic) 或 TD3,PPO 需要更多的交互数据才能达到同样的性能,因为它扔掉旧数据的速度很快(On-policy 特性)。
  2. 容易陷入局部最优: 在某些极其复杂的环境中,限制更新幅度可能导致策略在次优解附近徘徊,无法跳出。

6. PPO 的杀手级应用:RLHF (ChatGPT 背后的功臣)

PPO 之所以现在如此出名,很大程度上归功于它在 LLM(大语言模型) 中的应用。

在训练 ChatGPT / InstructGPT 的 RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习) 阶段:

  1. Environment (环境): 用户的 Prompt。
  2. Action (动作): 模型生成的回答(Token 序列)。
  3. Reward (奖励): 奖励模型(Reward Model)给回答打的分数。
  4. Algorithm (算法): PPO

为什么选 PPO 做 RLHF?

因为微调大模型非常昂贵且脆弱。如果更新步长太大,把语言模型"训坏了"(导致它开始胡言乱语,忘记了语法),是灾难性的。PPO 的 Clip 机制 完美地保证了:模型在向人类偏好对齐的同时,不会偏离原始预训练模型太远,从而保持了语言生成的流利度。

总结

PPO 是强化学习领域的"瑞士军刀"。它不是最快(样本效率)的,也不是理论最完美的,但它实现了工程上的完美平衡------既足够简单,又足够强大且稳定。这就是为什么它成为 OpenAI 以及众多 AI 实验室的首选算法。

这是一个非常棒的问题。PPO、DPO 和 GRPO 代表了当前大语言模型(LLM)"对齐(Alignment)"技术发展的三大里程碑。

我们可以把它们看作是为了解决同一个问题(让模型符合人类喜好/逻辑),在不同资源约束和数学推导下产生的不同进化路径

  • PPO: 经典的、标准的、但沉重的"在线"老师。
  • DPO: 巧妙的、数学简化的、轻量的"离线"自学。
  • GRPO: 针对大规模推理优化的、省钱的"去掉了助教"的 PPO 变体(DeepSeek 的核心武器)。

下面我从 PPO 出发,详细为你拆解 DPO 和 GRPO。


1. 从 PPO 的痛点说起

我们在上一节说到,PPO 是 RLHF 的默认选择。但当你真正去训练一个几百亿参数的模型(如 Llama-70B 或 DeepSeek-V3)时,PPO 有几个巨大的痛点

  1. 显存爆炸(Memory Hog):

    标准的 PPO-RLHF 需要同时加载 4 个模型

    • Actor (策略模型): 正在训练的模型。
    • Ref (参考模型): 原始模型,用来计算 KL 散度,防止跑偏。
    • Critic (价值模型): 这里的"助教",用来预估当前状态好不好(Value Function)。
    • Reward (奖励模型): 这里"裁判",给结果打分。
    • 结果:显存占用极大,训练速度慢。
  2. 训练不稳定: 需要协调 Actor 和 Critic 的学习进度,超参数极其敏感。

于是,为了解决这些问题,AI 社区分化出了两条路:一条走向了DPO (数学简化),一条走向了GRPO(工程优化)。


2. DPO (Direct Preference Optimization,直接偏好优化)

核心一句话:既然奖励模型(Reward Model)也是根据偏好数据练出来的,为什么不直接用偏好数据来优化策略,把奖励模型"消掉"?

DPO 由斯坦福大学在 2023 年提出,迅速成为了微调 LLM 的主流方法。

2.1 PPO 到 DPO 的数学推导(简化版)

在 PPO 中,我们先训练一个 Reward Model R ( x , y ) R(x, y) R(x,y),然后最大化:
max ⁡ π E [ R ( x , y ) ] − β E [ log ⁡ π ( y ∣ x ) π r e f ( y ∣ x ) ] \max_{\pi} \mathbb{E}[R(x, y)] - \beta \mathbb{E}[\log \frac{\pi(y|x)}{\pi_{ref}(y|x)}] πmaxE[R(x,y)]−βE[logπref(y∣x)π(y∣x)]

DPO 的作者发现了一个惊人的数学关系:最优的策略 π ∗ \pi^* π∗ 和奖励函数 R R R 之间存在一一映射关系。

也就是: R ( x , y ) = β log ⁡ π ∗ ( y ∣ x ) π r e f ( y ∣ x ) + Z ( x ) R(x, y) = \beta \log \frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + Z(x) R(x,y)=βlogπref(y∣x)π∗(y∣x)+Z(x)

既然如此,我们可以把 RL 的目标函数里的 R R R 替换掉,直接推导出一个只包含策略 π \pi π 和参考策略 π r e f \pi_{ref} πref 的损失函数

2.2 DPO 的做法

不再需要训练 Critic,也不需要显式的 Reward Model。我们只需要人类偏好数据对: ( x , y w i n , y l o s e ) (x, y_{win}, y_{lose}) (x,ywin,ylose)(即对于提示词 x x x,回答 y w i n y_{win} ywin 比 y l o s e y_{lose} ylose 好)。

DPO 的 Loss 函数:
L D P O = − E ( x , y w , y l ) [ log ⁡ σ ( β log ⁡ π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β log ⁡ π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] L_{DPO} = - \mathbb{E}{(x, y_w, y_l)} \left[ \log \sigma \left( \beta \log \frac{\pi\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)} \right) \right] LDPO=−E(x,yw,yl)[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]

直观解释:

  • 计算模型生成"好回答"的概率与"坏回答"的概率之比(相对参考模型)。
  • 增加 好回答的相对概率,降低坏回答的相对概率。
  • 这就变成了一个简单的分类问题(Binary Cross Entropy),类似传统的监督学习。
2.3 DPO 的优缺点
  • 优点:
    • 省显存: 不需要 Critic 和 Reward Model,只需要加载 Actor 和 Ref。
    • 极简: 训练过程稳定,不需要采样(Off-policy/Offline),不需要复杂的 PPO 循环,就像在做普通的微调。
  • 缺点:
    • 分布偏移(Distribution Shift): DPO 通常是离线的(用现成数据集),如果数据集里的回答和模型自己能生成的回答差异很大,效果会变差。
    • 上限问题: 许多实验表明,对于极高难度的推理任务(如数学、代码),PPO 这种在线采样探索的方法上限可能比 DPO 更高。

3. GRPO (Group Relative Policy Optimization,组相对策略优化)

核心一句话:PPO 里的 Critic 模型太占显存了,能不能不要它?我们可以通过"一组采样"内部比较来算出优势!

GRPO 是 DeepSeek(深度求索)在 DeepSeek-V3 和 DeepSeek-R1 (Zero) 中大力推崇并使用的技术。它是 PPO 的一种高效变体。

3.1 动机:去掉了 Critic

在 PPO 中,我们需要 Critic (Value Function) 来计算优势函数 (Advantage A t A_t At)
A t = R e w a r d − V ( s t ) A_t = Reward - V(s_t) At=Reward−V(st)

其中 V ( s t ) V(s_t) V(st) 是 Critic 预测的"基线分数"。Critic 模型通常和 Actor 一样大,这意味着显存加倍。

GRPO 的想法:

不需要训练一个神经网络来预测基线。我们可以对于同一个问题 q q q,让 Actor 生成一组(Group)回答 { o 1 , o 2 , . . . , o G } \{o_1, o_2, ..., o_G\} {o1,o2,...,oG}。

然后,用这组回答的平均奖励作为基线!

3.2 GRPO 的流程
  1. Group Sampling (组采样): 对于一个 Prompt,模型采样生成 G G G 个不同的输出(比如 G=64)。
  2. Reward Calculation: 有一个奖励模型(或者基于规则的检查器,比如数学题答案是否正确)给这 64 个输出打分。
  3. Group Normalization (组内归一化):
    计算这组分数的平均值(Mean)和标准差(Std)。
    A i = R i − Mean ( R g r o u p ) Std ( R g r o u p ) A_i = \frac{R_i - \text{Mean}(R_{group})}{\text{Std}(R_{group})} Ai=Std(Rgroup)Ri−Mean(Rgroup)
    • 如果你考了 80 分,但组里平均分是 90,你的优势 A i A_i Ai 就是负的(该被惩罚)。
    • 如果你考了 80 分,组里平均分是 60,你的优势 A i A_i Ai 就是正的(该被奖励)。
  4. PPO Update: 使用这个 A i A_i Ai 代替 PPO 公式里的 Advantage,并结合 PPO 的 Clip 机制来更新模型。并且,GRPO 还在 Loss 中加入了一个 KL 散度项来保持稳定性。
3.3 为什么 GRPO 对 DeepSeek-R1 (Reasoning) 这么重要?

DeepSeek-R1 这种推理模型,强调自我探索(Self-Evolution)

  • 省资源: 去掉 Critic 模型,节省了巨量显存,让模型可以把资源用来生成更长的 Chain-of-Thought (CoT)。
  • 适合有明确答案的任务: 在数学和代码任务中,Ground Truth(正确答案)是存在的。通过一次生成几十个解法,GRPO 能极其高效地告诉模型:"这 64 个解法里,那 3 个做对的解法才是你应该学的,其他 61 个即使逻辑通顺但答案错了,也是垃圾。"
  • 方差控制: 通过组内平均作为基线,能够非常稳健地降低梯度的方差。

4. 总结:PPO vs DPO vs GRPO

特性 PPO (标准版) DPO (直接偏好) GRPO (DeepSeek版)
全称 Proximal Policy Optimization Direct Preference Optimization Group Relative Policy Optimization
核心机制 Actor-Critic 架构,限制更新步长 无 Critic,数学变换将 RL 转为分类损失 去掉 Critic,用组内采样均值做基线
模型数量 4个 (Actor, Critic, Ref, Reward) 2个 (Actor, Ref) 2个 (Actor, Ref) + 此时通常仅需轻量级 Reward/Verifier
数据方式 Online (边生成边训练) Offline (通常使用预构建数据集) Online (边生成边训练)
资源消耗 极大 较小 中等 (需要采样生成,但省模型显存)
优势 理论上限高,探索能力强 简单稳定,训练快,适合对话/风格 极大节省显存,适合强逻辑/有明确正误的探索任务
适用场景 通用 RLHF 聊天机器人、风格对齐 (Chat) 推理模型 (Reasoning)、数学、代码 (DeepSeek-R1)

一句话总结演变逻辑:

PPO 是基石 ;为了不练那几个麻烦的模型,人们搞出了 DPO ;为了保留 PPO 在线探索的强大能力但又想省钱省显存,DeepSeek 搞出了 GRPO

相关推荐
明月醉窗台2 小时前
Torch-TensorRT 相关
人工智能·目标检测·计算机视觉·目标跟踪
zengjuan10052 小时前
我在给AI喂数据之前,先用松鼠备份“留了一手”——一个数据标注师的生存法则
人工智能·数据备份·数据泄露·数据标注师·松鼠备份·个人保险箱·数据保险箱
所谓伊人,在水一方3332 小时前
【机器学习精通】第2章 | 优化算法深度解析:从梯度下降到自适应优化器
人工智能·python·算法·机器学习·信息可视化
熊猫钓鱼>_>2 小时前
使用阿里云轻量应用服务器OpenClaw丝滑接入飞书打造智能群聊总结助手
人工智能·阿里云·云计算·飞书·agent·skill·openclaw
zhangfeng11332 小时前
BW/昆仑芯 国产GPU 上面微调模型 lora 异构GPU DPUPaddlePaddle/PaddleNLP 完全支持 ,unsloth似乎不支持
人工智能·编辑器
Rorsion2 小时前
机器学习基本步骤与模型优化思路
人工智能·机器学习
所谓伊人,在水一方3332 小时前
【机器学习精通】第3章 | 正则化与泛化:防止过拟合的理论与实践
开发语言·人工智能·机器学习·信息可视化·系统架构
沃达德软件2 小时前
视频监控烟火识别技术
图像处理·人工智能·目标检测·计算机视觉·目标跟踪·视觉检测·超分辨率重建
TMT星球2 小时前
火星人携双白皮书亮相AWE 2026,定义厨房空间重构新坐标
大数据·人工智能·重构