【深度长文】RLHF 算法全景解析:从 PPO 到 DPO/GRPO 的范式革命

强化学习对齐技术:RLHF、PPO、DPO与GRPO详解 强化学习对齐技术是人工智能领域的重要研究方向,旨在使模型行为与人类价值观保持一致。其核心原理是通过人类反馈机制将主观偏好转化为可量化的奖励信号,进而优化模型策略。主流技术包括基于人类反馈的强化学习(RLHF)、近端策略优化(PPO)、直接偏好优化(DPO)和梯度惩罚正则化策略优化(GRPO)。这些方法在对话系统、文本生成等场景中展现出显著效果,其中RLHF通过三阶段训练实现精准对齐,PPO采用剪切机制保障训练稳定,DPO实现端到端偏好学习,GRPO则通过梯度控制提升模型鲁棒性。工程实践中,算法选择需综合考虑 阅读详情

在 LLM 的训练体系中,Pretrain 决定了模型的知识广度,SFT(监督微调)决定了模型的指令遵循能力,而 RLHF(Post-Training) 则决定了模型的上限——即它能否在复杂的逻辑权衡中,输出符合人类价值观(Helpful, Honest, Harmless)甚至超越人类平均水平的内容。

GitHub 上的 MiniMind 项目提供了一个很有价值的实战项目,让我们得以窥见 LLM 训练的完整流程。我们将围绕作者指出的 PO(Policy Optimization)统一视角 展开:

P O = E q ∼ P ( Q ) , o ∼ π ( O ∣ q ) [ f ( r t ) ⏟ 策略引导 ⋅ g ( A t ) ⏟ 优势评估 − h ( K L t ) ⏟ 正则约束 ] PO = \mathbb{E}_{q \sim P(Q), o \sim \pi(O|q)} [\underbrace{f(r_t)}_{\text{策略引导}} \cdot \underbrace{g(A_t)}_{\text{优势评估}} - \underbrace{h(KL_t)}_{\text{正则约束}}] PO=Eq∼P(Q),o∼π(O∣q)​[策略引导 f(rt​)​​⋅优势评估 g(At​)​​−正则约束 h(KLt​)​​]


第一部分:PPO (Proximal Policy Optimization)

PPO 是 OpenAI 训练 GPT-3.5/4 的核心算法。虽然繁琐,但它是在复杂环境中鲁棒性最强的算法。为了讲透 PPO,我们必须把它拆解为四个模型的博弈和五个步骤的循环。

1.1 准备工作:四个模型的“协作团队”

在PPO训练正式启动前,显存中需要同时加载(或根据硬件资源动态部分卸载)四个核心模型,它们各司其职、相互配合,共同构成了大模型RLHF(基于人类反馈的强化学习)中PPO训练的核心框架,就像一场麻将局里不同角色的玩家各有分工:

  1. Actor Model (策略模型 π θ \pi_\theta πθ​):

    • 角色:团队里的“玩家”,是我们重点训练的核心主角,由经过有监督微调(SFT)的大语言模型(LLM)担任。
    • 状态:参数处于可训练状态(Requires Grad),会在训练中不断更新优化。
    • 输入:用户的提示词(Prompt)。 输出:生成响应(Response)的token概率分布,以此决定下一步生成的内容。
  2. Reward Model (奖励模型 R ψ R_\psi Rψ​):

    • 角色:团队里的“裁判”,本质是模拟人类偏好的打分系统,为Actor生成的响应提供客观、贴合人类需求的奖励反馈,在RLHF流程中扮演“环境”的核心角色。
      • 状态:以SFT模型为基础构建,输出端新增线性层(Linear)作为价值头(value head,输入维度为模型hidden_dim,输出维度为1);在RLHF强化学习阶段,参数全程冻结(Frozen),训练过程中不更新,仅作为固定“环境反馈模块”。训练目标为排序任务,通过rank loss让人类偏好响应(chosen)得分远高于非偏好响应(rejected)。
      • 输入:Prompt + Actor生成的完整Response。 输出:一个标量奖励值(Reward r r r),直接反映响应符合人类偏好的程度。
  3. Critic Model (价值模型 V ϕ V_\phi Vϕ​):

    • 角色:团队里的“教练”,不直接参与内容生成,而是以旁观者视角精准评估Actor的表现——具体是对当前状态(Prompt + 部分生成的Response)的价值进行量化判断,为Actor的后续优化提供依据。
    • 状态:参数可训练(Requires Grad)。核心初始化逻辑由训练完成的Reward Model直接初始化而来,通过继承Reward Model的特征提取能力,实现对状态价值的精准近似。
    • 输入:Prompt + 完整/部分生成的Response。 输出:一个标量值 V ( s ) V(s) V(s),代表该状态下Actor能获得的预期长期收益。
  4. Reference Model (亦称为Value Model,参考模型 π r e f \pi_{ref} πref​):

    • 角色:团队里的“初心标尺”,通常是SFT阶段训练完成后模型的完整副本。其核心作用是约束Actor的生成行为,防止Actor为了追求奖励模型的高分而出现“胡言乱语”“投机取巧”的奖励黑客(Reward Hacking)现象。
    • 状态:参数冻结(Frozen),始终保持SFT结束时的状态,作为衡量Actor生成内容合理性的基准。

1.2 PPO 训练全流程详解 (The Step-by-Step Loop)

一个完整的 PPO Step 包含以下流程:

Step 1: 采样 (Rollout/Experience Collection)

Actor 模型针对一个 Batch 的 Prompt 生成回复。

  • 动作: o ∼ π θ ( O ∣ q ) o \sim \pi_\theta(O|q) o∼πθ​(O∣q)
  • 同时,Ref Model 也对同样的 q q q 和生成的 o o o 进行一次前向传播,计算参考对数概率 log ⁡ π r e f ( o ∣ q ) \log \pi_{ref}(o|q) logπref​(o∣q)。
  • 产出:input_ids, response, log_probs, ref_log_probs。
Step 2: 评分 (Evaluation)
  • Reward Model 打分:计算最终生成的句子的奖励分数 r s c o r e r_{score} rscore​。
  • KL 散度修正:为了防止模型跑偏,我们将 KL 散度作为惩罚项加入奖励中。即:
    R t = r s c o r e − β ⋅ log ⁡ π θ ( o t ∣ s t ) π r e f ( o t ∣ s t ) R_t = r_{score} - \beta \cdot \log \frac{\pi_\theta(o_t|s_t)}{\pi_{ref}(o_t|s_t)} Rt​=rscore​−β⋅logπref​(ot​∣st​)πθ​(ot​∣st​)​
    MiniMind 细节:这里通常是 Token 级别的修正。如果某个 Token 偏离 Reference 太远,该 Token 获得的即时奖励就会大幅下降。

好的,我将 Bellman 方程(Bellman Equation) 的概念深度融合进 Step 3 的解释中。

这样改写后,不仅解释了“怎么算”,还解释了“为什么要这么算”(即 Critic 存在的数学本质)。


Step 3: 广义优势估计 (Generalized Advantage Estimation - GAE)

这是 PPO 最难理解的部分,也是 Bellman 方程 灵魂附体的地方。我们需要 Critic 模型来通过“时间差”进行价值校准。

  • Critic 的使命 (求解 Bellman 方程):
    Critic 模型试图拟合一个满足 Bellman 方程 的价值函数 。Bellman 方程告诉我们:“当前状态的价值,应该等于即时奖励加上打折后的未来价值”。
    V ( s t ) ≈ r t + γ V ( s t + 1 ) V(s_t) \approx r_t + \gamma V(s_{t+1}) V(st​)≈rt​+γV(st+1​)

  • 计算 TD Error (时序差分误差 / Bellman 误差):
    由于 Critic 是在刚开始训练,它的预测 是不准的。我们用“现实发生的奖励”和“下一刻的预测”来打脸“当前的预测”。
    直观理解: 本质上就是 Bellman Error。它衡量了当前发生的现实(拿到奖励 且进入了状态 )比 Critic 预期的()好多少或差多少。
    δ t = R t + γ V ( s t + 1 ) ⏟ Bellman Target (现实) − V ( s t ) ⏟ Critic Guess (预期) \delta_t = \underbrace{R_t + \gamma V(s_{t+1})}_{\text{Bellman Target (现实)}} - \underbrace{V(s_t)}_{\text{Critic Guess (预期)}} δt​=Bellman Target (现实) Rt​+γV(st+1​)​​−Critic Guess (预期) V(st​)​​

  • GAE (Generalized Advantage Estimation):
    单步的 波动太大(方差高),我们利用加权累加的方式,看这一个动作对未来一系列动作的影响(平衡方差和偏差):

    A t = ∑ k = 0 ∞ ( γ λ ) k δ t + k A_t = \sum_{k=0}^{\infty} (\gamma \lambda)^k \delta_{t+k} At​=k=0∑∞​(γλ)kδt+k​

    A t > 0 A_t > 0 At​>0:说明当前动作带来的 回报超出预期(打破了 Bellman 平衡向好的一面),应当 鼓励(增加该动作概率)。
    A t < 0 A_t < 0 At​<0:说明当前动作表现 低于预期(现实比预想的惨),应当 抑制(减少该动作概率)。

Step 4: 策略优化 (Policy Update)

现在我们有了数据对 ( s t , a t , A t , π o l d ( a t ∣ s t ) ) (s_t, a_t, A_t, \pi_{old}(a_t|s_t)) (st​,at​,At​,πold​(at​∣st​))。进入内层循环(Epochs),更新 Actor 参数。

  • 计算新旧策略比率(重要性采样): r t ( θ ) = π θ ( a t ∣ s t ) π o l d ( a t ∣ s t ) r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{old}(a_t|s_t)} rt​(θ)=πold​(at​∣st​)πθ​(at​∣st​)​
  • Clip Loss(核心公式):
    L C L I P ( θ ) = E [ min ⁡ ( r t ( θ ) A t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A t ) ] L^{CLIP}(\theta) = \mathbb{E} [ \min(r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t) ] LCLIP(θ)=E[min(rt​(θ)At​,clip(rt​(θ),1−ϵ,1+ϵ)At​)] 解释:如果 A t A_t At​ 是正的(好动作),我们要提高概率,但不能提太猛(由 1 + ϵ 1+\epsilon 1+ϵ 限制);如果 A t A_t At​ 是负的,我们要降低概率,也不能降太猛。这就是“Proximal(近端)”的含义——步子大了容易扯着蛋。注意,这里我们要最大化目标函数,即对 − L C L I P ( θ ) -L^{CLIP}(\theta) −LCLIP(θ) 求梯度。
Step 5: 价值回归 (Critic Update)

Critic 模型也要进步,它需要让自己的预测 V ( s t ) V(s_t) V(st​) 越来越接近真实的 Returns。

  • L V F = M S E ( V ϕ ( s t ) , Returns t ) L^{VF} = MSE(V_\phi(s_t), \text{Returns}_t) LVF=MSE(Vϕ​(st​),Returnst​)

1.3 PO 统一视角

  • 策略项: f ( r t ) = min ⁡ ( r t , clip ( r t , 1 − ε , 1 + ε ) ) f(r_t) = \min(r_t, \text{clip}(r_t, 1−ε, 1+ε)) f(rt​)=min(rt​,clip(rt​,1−ε,1+ε)) (裁剪概率比防止更新过激)
  • 优势项: g ( A t ) = A t g(A_t) = A_t g(At​)=At​ (通过Critic来进行GAE)
  • 正则项: h ( K L t ) = β ⋅ E [ K L ] h(KL_t) = β⋅\mathbb{E}[KL] h(KLt​)=β⋅E[KL] (全局KL散度约束)

1.4 MiniMind 中的 PPO 代码

在 minimind/trainer/train_ppo.py 中,上述流程被精简为以下代码逻辑(简化版):

# 伪代码流程
for epoch in range(ppo_epochs):
    # 1. Rollout: 生成数据
    with torch.no_grad():
        seq, action_mask = actor.generate(prompts)
        old_log_probs = actor(seq)
        ref_log_probs = ref_model(seq)
        values = critic(seq)
        reward_score = reward_model(seq)

    # 2. 计算 Reward (含 KL 惩罚)
    kl_div = old_log_probs - ref_log_probs
    rewards = reward_score - beta * kl_div
    
    # 3. 计算 GAE (优势函数)
    advantages, returns = compute_gae(rewards, values)
    
    # 4. PPO Update Step
    for batch in dataloader(seq, advantages, returns):
        new_log_probs = actor(batch.seq)
        ratio = torch.exp(new_log_probs - batch.old_log_probs)
        
        # PPO Clip Loss
        surr1 = ratio * batch.advantages
        surr2 = torch.clamp(ratio, 1-eps, 1+eps) * batch.advantages
        actor_loss = -torch.min(surr1, surr2).mean()
        
        # Critic Loss
        new_values = critic(batch.seq)
        critic_loss = (new_values - batch.returns).pow(2).mean()
        
        # Backward
        loss = actor_loss + 0.5 * critic_loss
        optimizer.step()

第二部分:DPO (Direct Preference Optimization)

看完了 PPO 繁琐的流程,你会发现它太重了。你需要训练 Critic,需要拟合 Value,但这真的是必须的吗?
2023年斯坦福提出的 DPO 证明了:Reward Model 实际上是多余的中间商。

2.1 核心改进原理:从奖励建模到策略的变量变换

DPO的核心突破并非否定PPO的优化目标,而是通过数学推导,揭示了“人类偏好数据”与“最优策略”之间的直接关联——偏好数据本身已隐式定义了最优策略,无需先通过偏好训练奖励模型,再用奖励模型优化策略。这一推导过程可拆解为三个关键步骤:

步骤1:用Bradley-Terry模型建模人类偏好

人类对“好回答( y w y_w yw​)”和“坏回答( y l y_l yl​)”的选择,本质上反映了潜在奖励的差异。DPO采用经典的Bradley-Terry(BT)模型量化这种偏好:假设存在一个真实的潜在奖励函数 r ∗ ( x , y ) r^*(x,y) r∗(x,y),人类选择 y w y_w yw​而非 y l y_l yl​的概率,由两者奖励的指数函数比值决定:
p ∗ ( y w ≻ y l ∣ x ) = exp ⁡ ( r ∗ ( x , y w ) ) exp ⁡ ( r ∗ ( x , y w ) ) + exp ⁡ ( r ∗ ( x , y l ) ) p^*(y_w \succ y_l | x) = \frac{\exp(r^*(x, y_w))}{\exp(r^*(x, y_w)) + \exp(r^*(x, y_l))} p∗(yw​≻yl​∣x)=exp(r∗(x,yw​))+exp(r∗(x,yl​))exp(r∗(x,yw​))​
传统RLHF的RM阶段,会通过最大化上述概率的似然来训练奖励模型 r ϕ ( x , y ) r_\phi(x,y) rϕ​(x,y),损失函数为:
L R ( r ϕ , D ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( r ϕ ( x , y w ) − r ϕ ( x , y l ) ) ] \mathcal{L}_R(r_\phi, \mathcal{D}) = -\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}} \left[ \log \sigma(r_\phi(x, y_w) - r_\phi(x, y_l)) \right] LR​(rϕ​,D)=−E(x,yw​,yl​)∼D​[logσ(rϕ​(x,yw​)−rϕ​(x,yl​))]
但DPO并未止步于此——它进一步探索了“训练好的奖励模型”与“最终策略”的数学关系。

步骤2:推导最优策略与奖励函数的显式关联

在PPO的优化框架中,策略的目标是“最大化奖励期望,同时通过KL散度约束避免偏离参考策略 π ref \pi_{\text{ref}} πref​”,其目标函数可表示为:
max ⁡ π θ E x ∼ D , y ∼ π θ ( y ∣ x ) [ r ( x , y ) ] − β ⋅ KL ( π θ ∥ π ref ) \max_{\pi_\theta} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta(y|x)} \left[ r(x,y) \right] - \beta \cdot \text{KL}(\pi_\theta \parallel \pi_{\text{ref}}) πθ​max​Ex∼D,y∼πθ​(y∣x)​[r(x,y)]−β⋅KL(πθ​∥πref​)
DPO通过数学推导证明:满足上述目标的最优策略 π ∗ \pi^* π∗,可直接由参考策略 π ref \pi_{\text{ref}} πref​和奖励函数 r ( x , y ) r(x,y) r(x,y)参数化,形式为:
π ∗ ( y ∣ x ) = 1 Z ( x ) ⋅ π ref ( y ∣ x ) ⋅ exp ⁡ ( 1 β ⋅ r ( x , y ) ) \pi^*(y|x) = \frac{1}{Z(x)} \cdot \pi_{\text{ref}}(y|x) \cdot \exp\left(\frac{1}{\beta} \cdot r(x, y)\right) π∗(y∣x)=Z(x)1​⋅πref​(y∣x)⋅exp(β1​⋅r(x,y))
其中 Z ( x ) Z(x) Z(x)是归一化常数(确保策略概率和为1), β \beta β是KL散度的权重系数。这一公式的关键意义在于:奖励函数 r ( x , y ) r(x,y) r(x,y)不再是独立的优化目标,而是可以被“最优策略 π ∗ \pi^* π∗与参考策略 π ref \pi_{\text{ref}} πref​的比值”所替代。

步骤3:消去奖励函数,直接用策略表示偏好

将最优策略公式代入Bradley-Terry模型,可消去潜在奖励函数 r ∗ ( x , y ) r^*(x,y) r∗(x,y),得到仅由策略表示的人类偏好概率:
p ( y w ≻ y l ∣ x ) = σ ( 1 β ⋅ ( log ⁡ π ∗ ( y w ∣ x ) π ref ( y w ∣ x ) − log ⁡ π ∗ ( y l ∣ x ) π ref ( y l ∣ x ) ) ) p(y_w \succ y_l | x) = \sigma\left( \frac{1}{\beta} \cdot \left( \log \frac{\pi^*(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \log \frac{\pi^*(y_l|x)}{\pi_{\text{ref}}(y_l|x)} \right) \right) p(yw​≻yl​∣x)=σ(β1​⋅(logπref​(yw​∣x)π∗(yw​∣x)​−logπref​(yl​∣x)π∗(yl​∣x)​))
这一推导彻底颠覆了传统流程:既然人类偏好可直接用“当前策略 π θ \pi_\theta πθ​与参考策略 π ref \pi_{\text{ref}} πref​的对数概率比”表示,我们就无需先训练奖励模型——直接优化 π θ \pi_\theta πθ​,使其满足上述偏好概率即可。

最终,DPO的损失函数被定义为“最小化模型预测偏好与人类真实偏好的偏差”,形式为二元交叉熵损失:
L DPO ( π θ ; π ref ) = − E ( x , y w , y l ) ∼ D [ log ⁡ σ ( β ⋅ ( log ⁡ π θ ( y w ∣ x ) π ref ( y w ∣ x ) − log ⁡ π θ ( y l ∣ x ) π ref ( y l ∣ x ) ) ) ] \mathcal{L}_{\text{DPO}}(\pi_\theta; \pi_{\text{ref}}) = -\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}} \left[ \log \sigma\left( \beta \cdot \left( \log \frac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \log \frac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} \right) \right) \right] LDPO​(πθ​;πref​)=−E(x,yw​,yl​)∼D​[logσ(β⋅(logπref​(yw​∣x)πθ​(yw​∣x)​−logπref​(yl​∣x)πθ​(yl​∣x)​))]
其中 β \beta β的作用与PPO一致:控制策略偏离 π ref \pi_{\text{ref}} πref​的程度—— β \beta β越大,策略越接近参考模型,探索性越弱; β \beta β越小,策略灵活性越高,但易因过度偏离导致训练不稳定。

2.2 流程对比 (PPO vs DPO)

  • PPO:在线 (Online)。必须实时生成数据(Rollout),实时打分,实时更新。效率低,显存炸裂。
  • DPO:离线 (Offline)。你可以把它看作是一种特殊的 Supervised Fine-Tuning。
    1. 准备数据集:Prompt x x x, 好回答 y w y_w yw​, 坏回答 y l y_l yl​。
    2. 不需要 Critic,不需要 Reward Model。
    3. 直接计算 Loss:
      L D P O = − E ( x , y w , y l ) ∼ D [ 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) \sim D} [\log \sigma (\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)})] LDPO​=−E(x,yw​,yl​)∼D​[logσ(βlogπref​(yw​∣x)πθ​(yw​∣x)​−βlogπref​(yl​∣x)πθ​(yl​∣x)​)]注意:这边的公式与 DPO 论文统一,因此前面已经加过负号了,求梯度不需要再加了,但下文的 GRPO 与 PPO 一致,还是需要加负号的。

2.3 PO 统一视角

这是 MiniMind 中的解释:

  • 策略项: f ( r t ) = log ⁡ r w − log ⁡ r l f(r_t) = \log r_w - \log r_l f(rt​)=logrw​−logrl​ (对比chosen vs rejected的概率比)
  • 优势项: g ( A t ) = / g(A_t) = / g(At​)=/ (通过偏好对比,无需显式计算优势)
  • 正则项: h ( K L t ) h(KL_t) h(KLt​) 隐含在 β \beta β 中 (控制偏离参考模型程度)

不过我有另一种理解可以参考:

  • 策略项 f ( r t ) f(r_t) f(rt​) & 优势项 g ( A t ) g(A_t) g(At​):被隐式融合。DPO 认为,“优势”就是 log ⁡ π ( y w ) π ( y l ) \log \frac{\pi(y_w)}{\pi(y_l)} logπ(yl​)π(yw​)​ 的比值扩大。
  • 正则项 h ( K L t ) h(KL_t) h(KLt​):被完美内嵌。当你优化 DPO Loss 时,你数学上等价于在优化 Reward 且受到 KL 约束。

MiniMind 实践建议:对于个人开发者,首选 DPO。它只需要加载 Actor 和 Ref 两个模型,显存占用减半,且训练速度快数倍。但务必注意:DPO 对数据标注质量极其敏感,脏数据会导致模型迅速崩坏。


第三部分:GRPO (Group Relative Policy Optimization)

PPO 很稳但太贵,DPO 很轻但对数据挑剔且容易过拟合。有没有一种结合二者优点的方案?
DeepSeek-R1 (DeepSeek-Math) 验证了 GRPO 的威力。它特别适用于推理、数学、代码等有明确客观评价标准的领域。

3.1 核心改进:干掉 Critic

在 PPO 中,Critic 模型(Value Function)是最难训练的。它需要预测“这道数学题做到这一步,未来做对的概率是多少”,这太难了。
GRPO 的思路是:我不预测分值了,我直接看这一组考生的相对排名。

3.2 训练流程差异

  1. Group Sampling:
    对于一个 Prompt q q q,Actor 采样生成 G G G 个不同的回答 { o 1 , o 2 , . . . , o G } \{o_1, o_2, ..., o_G\} {o1​,o2​,...,oG​}(比如 G = 8 G=8 G=8)。
  2. 打分:
    用 Reward Model(或者规则检查器,比如代码编译器、数学答案匹配)给这 G G G 个回答打分,得到 { r 1 , . . . , r G } \{r_1, ..., r_G\} {r1​,...,rG​}。
  3. 计算相对优势 (Group Relative Advantage):
    这是 GRPO 的灵魂。它不需要 Critic 来告诉我基线是多少,而是用这组数据的平均值做基线。
    A i = r i − mean ( r 1.. G ) std ( r 1.. G ) + ϵ A_i = \frac{r_i - \text{mean}(r_{1..G})}{\text{std}(r_{1..G}) + \epsilon} Ai​=std(r1..G​)+ϵri​−mean(r1..G​)​
    • 如果你考了80分,组平均分60分,你的优势就是正的。
    • 如果你考了50分,组平均分60分,你的优势就是负的。
  4. 策略更新:
    使用 PPO 的 Clip Loss,但优势 A t A_t At​ 换成了上面的 A i A_i Ai​。并且还需要显式地在 Loss 中加上 KL 散度项(因为没有 PPO 的 Critic 带来的隐式约束)。

L G R P O = E [ 1 G ∑ i = 1 G ( L i C L I P − β D K L ( π ∣ ∣ π r e f ) ) ] L_{GRPO} = \mathbb{E} \left[ \frac{1}{G} \sum_{i=1}^G (L^{CLIP}_i - \beta D_{KL}(\pi || \pi_{ref})) \right] LGRPO​=E[G1​i=1∑G​(LiCLIP​−βDKL​(π∣∣πref​))]

3.3 PO 统一视角

  • 策略项: f ( r t ) = r t f(r_t) = r_t f(rt​)=rt​ (直接使用概率比,无clip裁剪)
  • 优势项: g ( A t ) = R − μ g r o u p σ g r o u p g(A_t) = \frac{R - \mu_{group}}{\sigma_{group}} g(At​)=σgroup​R−μgroup​​ (组内归一化,消除Critic网络)
  • 正则项: h ( K L t ) = β ⋅ K L t h(KL_t) = β⋅KL_t h(KLt​)=β⋅KLt​ (token级KL散度约束)

3.4 为什么 GRPO 适合 Reasoning?

在推理任务中,答案往往非黑即白(Right/Wrong)。

  • 如果模型生成了8个解法,其中1个对了(Reward=1),7个错了(Reward=0)。
  • 平均分是 0.125。
  • 做对的那个样本,优势 A ≈ ( 1 − 0.125 ) / σ A \approx (1 - 0.125) / \sigma A≈(1−0.125)/σ,是一个巨大的正信号。
  • GRPO 能极高效地从偶尔的“灵光一现”中提取正反馈,强化模型产生正确推理路径的概率。

第四部分:总结与技术选型表

结合 MiniMind 的实现,我们从工程角度总结这三个算法:

算法核心组件显存压力数据要求核心公式特征 (统一视角)适用场景
PPOActor, Critic, Ref, RM💣 极大 (4模型)偏好对/打分模型 A t A_t At​ 由 Critic 预测,含 KL 隐式约束通用对话,复杂任务,追求极致稳定性
DPOActor, Ref🍃 极小 (2模型)高质量偏好对 ( y w , y l ) (y_w, y_l) (yw​,yl​) r r r 与 π \pi π 的解析映射,无显式 A t A_t At​资源受限,有高质量数据集,指令微调
GRPOActor, Ref, (RM/Rule)⚖️ 中等 (2模型+采样)Prompt + 评分规则 A t A_t At​ 由组内均值计算 (Group Norm)数学、代码、逻辑推理,长思维链训练

最后的建议

如果你正在使用 MiniMind 进行入门:

  1. 先跑通 SFT,这是基础。
  2. 想体验 RLHF,先从 DPO 开始,因为它最不容易因为 OOM (显存溢出) 而报错,代码逻辑也最线性。
  3. 当你理解了 DPO,尝试阅读 train_ppo.py,去观察 compute_gae 函数是如何实现的,这是进阶的关键。
  4. 如果你想复现 DeepSeek 的效果,尝试用 GRPO 训练一个小型的数学模型,只需要定义一个简单的 Reward 函数(比如答案匹配),你就能看到模型如何通过自我博弈(Self-Play 雏形)提升准确率。

本文参考:
强化学习一锅端:一文梳理从PPO到GSPO强化学习发展历程 - 曾天真的文章 - 知乎
大模型强化学习-PPO/DPO/GRPO区别对比 - 硅基趣玩喵的文章 - 知乎

大模型强化学习技术解析:RLHF、DPO与GRPO实战 强化学习(Reinforcement Learning)是机器学习的重要分支,通过与环境的交互学习最优策略。在大模型时代,强化学习与语言模型的结合(如RLHF、DPO等技术)成为AI对齐的核心手段。其技术原理是通过人类反馈数据训练奖励模型,再通过策略优化调整模型行为。这类技术能显著提升模型的安全性、有用性和对话连贯性,在智能客服、内容审核等场景具有重要应用价值。以RLHF(基于人类反馈的强化学习)为例,其技术栈包含数据工程、奖励建模和策略优化三大子系统,而DPO(直接偏好优化)则提供了更高效的数据利用方案。 阅读详情

相关推荐

PPO、DPO与GRPO:大模型对齐算法选型实战决策指南

大模型对齐(Alignment)是让LLM生成结果符合人类偏好与业务目标的关键环节,其核心在于建模‘好回答’与‘坏回答’的差异。PPO通过强化学习框架引入reward model进行策略优化,适合高精度、多目标场景但稳定性差;DPO绕过reward model直接优化偏好数据,在训练效率与工程简洁性上优势显著,是快速迭代的首选;GRPO则针对PPO的工程痛点进行外科手术式改良,提升稳定性与多信号融合能力。三者并非替代关系,而是适配不同数据质量、迭代周期、团队能力与失败成本的技术路径。本文基于17个垂直领域落

weixin_34295316的博客 383

MiniMind训练策略深度解析:从算法选择到参数调优的完整指南

在深度学习模型训练中,选择合适的训练策略往往比盲目调参更重要。MiniMind框架提供了多种训练算法,每种算法都有其独特的适用场景和参数配置逻辑。本文将带你深入理解不同训练算法的核心机制,并提供一套系统化的参数调优方法。 ## 训练算法选择:PPO、GRPO与SPO的性能对比 在MiniMind框架中,训练策略主要分为三类:PPO(Proximal Policy Optimization)、G

gitblog_00895的博客 846

LLM强化学习算法演进:PPO、DPO、GRPO与GSPO详解

强化学习(RL)是机器学习的重要分支,通过试错反馈机制优化决策策略。在自然语言处理(NLP)领域,RL与大语言模型(LLM)结合,形成了多种对齐算法。PPO(Proximal Policy Optimization)作为基础算法,通过策略裁剪和优势归一化确保训练稳定;DPO(Direct Preference Optimization)则直接利用偏好数据优化策略,大幅提升效率;GRPO(Generalized Reinforcement Learning with Policy Optimization)专

keke1314520的博客 322

(三)【纯干货】万字长文解析RL强化学习来世今生,PPO DPO GRPO的区别,最新论文DAPO VAPO GSPO GMPO优化了哪些方面

文章摘要:强化学习算法在大型语言模型(LLM)对齐训练中扮演关键角色。本文系统介绍了PPO、DPO、GRPO等主流强化学习算法及其最新改进方案(DAPO、GSPO、GMPO)。PPO通过裁剪机制和KL散度约束确保训练稳定性,但计算成本高;DPO简化流程直接优化偏好数据;GRPO创新性地采用组内相对优势估计替代价值模型。针对各类算法的局限性,最新研究提出多项优化:DAPO通过移除KL约束、动态采样等提升训练效率;GSPO改进为序列级优化降低方差;GMPO引入几何平均增强稳定性。这些算法在不同任务场景下各具优势

weixin_45322373的博客 1464

深入解析MSPM0系列Keil开发中‘ti_msp_dl_config.h‘缺失问题的根源与修复

本文深入解析TI MSPM0系列Keil开发中'ti_msp_dl_config.h'文件缺失问题的根源与修复方法。该错误常见于编译时提示file not found,主要因SysConfig工具未正确生成或工程路径配置错误导致。文章提供了从环境检查、手动生成文件到工程配置调整的系统化解决方案,帮助开发者快速解决这一常见KEIL开发难题。

gold的博客 970

方差分析ANOVA、T检验、卡方检验的区别

T检验和ANOVA都是用来看样本之间均值是否相等,但是两者又有什么区别呢? 卡方检验是用来看分类变量之间有没有相关性。 自变量X类型 自变量X组数 因变量Y类型 分析方法 离散(类别) 仅仅2组 连续(均值) t检验 离散(类别) 2组及以上 连续(均值) ANOVA 离散(类别) 2组及以上 离散(类别) 卡方检验 进一步细分 方差分析 从理论上讲,方差分析有两个前提条件,一是因变量Y需要满足正态性要求,二是满足方差齐检验。 方差不齐时可使用‘非参数检验’,同时还可使用wel

itslifeng的博客 4万+

大模型训练:SFT入门后,为什么还需要DPO/GRPO?(深度解析+收藏指南)

文章详解SFT与RLHF(DPO/GRPO)在大模型训练中的本质区别:SFT优化单个token,关注局部正确性;RLHF优化整个序列,解决长链路推理与一致性。DPO/GRPO简化了RLHF实现,使其从实验室走向产品线。SFT让模型"会说话",RL让模型"说对的话",前者解决能力问题,后者解决意图与边界问题。根据任务特性,合理选择训练方法,才能充分发挥大模型潜力。

Android23333的博客 1024

ArcMap对遥感图像进行语义分割标注

使用arcmap对遥感图像进行语义分割标注

qq_41708916的博客 4047

大模型偏好对齐强化学习技术:从PPO、GRPO到DPO的演进与创新

在大语言模型(LLM)飞速发展的今天,如何让这些“聪明”的模型真正理解并对齐人类偏好,已成为制约其实际应用的关键挑战。(RLHF)技术作为解决这一问题的核心手段,正经历着从传统方法到创新算法的快速演进。从早期的本文将深入解析多种旨在优化LLM对齐用户偏好的强化学习技术,从基础理论到实践应用,从传统方法到最新创新,全面剖析其架构设计、工作原理以及演进脉络。我们将通过生活化案例和代码示例,帮助读者理解这些复杂技术背后的直观原理,并探讨未来发展方向。

深耕互联网架构与AI领域多年,专注大模型工程化、云原生架构、AI驱动系统,分享实战经验、前沿技术和架构方法论。每周产出深度长文+技术短文,涵盖大厂案例、论文解读与工程实践。拒绝水文,只讲干货。关注我,与一线架构师共同探索技术本质。 1568

Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战

核心框架:向量数据库:- PostgreSQL + pgvector (生产推荐)- Redis Stack (轻量级方案)- ChromaDB (快速原型)文档解析:- Apache PDFBox: PDF 文本提取- Spring AI Document Readers: 结构化解析大模型:- 阿里云百炼 (DashScope)- 本地部署:Qwen/ChatGLM/*** 电商领域实体*/@Data@Builder@ToString/*** 商品类型。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 381

Matlab App Designer自学笔记(六):坐标轴控件axis函数绘图方法

作用: 绘制函数显示 显示图像(jpg png tiff) 颜色选项: r(红色) g(绿色) b(蓝色) w(白色) k(黑色) 其他 一、坐标区控件及设置 可以对坐标去进行设计: 二、功能实现及编程 功能:点击“绘图按钮”,能显示曲线。 实现:对按钮设置回调函数 若要多个图像显示在一个坐标系中,需要语句:hold(app.UIAxes,"on"); app.UIAxes是这个坐标轴的名字。 function ButtonP...

陶小桃Blog 3万+

2026年7种大模型最流行的强化学习算法(PPO、GRPO、DPO、GSPO、DAPO、BAPO、ARPO )总结

强化学习算法优化路径解析:从PPO到ARPO的技术演进 摘要:本文系统分析了7种主流强化学习优化算法的核心特性与应用场景。PPO作为经典算法提供稳定训练,GRPO针对大模型优化显存效率,DPO简化流程适合轻量级应用。进阶算法如GSPO专注长文本优化,DAPO提升工业训练效率,BAPO平衡历史数据利用。新兴的ARPO则专为智能体决策设计,优化关键工具调用步骤。这些算法覆盖了从基础训练到复杂决策的全场景需求,为不同规模与目标的项目提供精准技术选型依据,反映了强化学习从理论到产业应用的完整发展路径。

lizhi888999AI的博客 1792

Linux系统安全学习手册

Linux反弹shell Linux系统应急响应 Linux服务器安全加固 Linux下的用户、组和权限 Linux中的gcc Linux中su和sudo的用法和区别 Linux系统python2与python3共存 Linux中grep工具的使用 Linux中环境变量的设置 Linux中常见的150个命令(干货) Linux中编写Shell脚本 LNMP环境搭建Wordpress博客 LAMP环境搭建一个Discuz论坛 Linux运维比较常用的一些脚本 Linux系统中安装软

谢公子的博客 7532

爆肝万字长文:大模型强化学习完全指南,RLHF、DPO、GRPO一次学透

本文深入解析强化学习与监督学习的区别,详解RL核心要素及三大主流方法,并聚焦大模型中的RL技术。重点介绍了基于人类反馈的强化学习(RLHF)、直接偏好优化(DPO)以及新范式GRPO和GSPO,帮助开发者理解如何通过强化学习技术让大模型更好地对齐人类偏好,提升模型性能。

xx_nm98的博客 1200

数字 IC 笔试面试必考点(2)FPGA 开发流程

FPGA 的详细开发流程就是利用 EDA 开发工具对 FPGA 芯片进行开发的过程,所以 FPGA 芯片开发流程讲的并不是芯片的制造流程,区分于 IC 设计制造流程哟(芯片制造流程多麻烦,要好几十亿的费用呢,而且国内也貌似没有哪家像样的 Foundry 厂,除了台湾的 TSMC 在世界有立足之地,Fabless 的 IC 设计公司倒是挺强的如 Hisilicon,这也是它为什么会被 USA 针对的原因)。

新芯设计的博客 2012

开源Harness项目DeerFlow 2.0,让智能体几乎能完成任何复杂任务

从提示工程到上下文工程,再到如今的 Harness,这条演进路径的本质是从“教模型如何理解人类”迈向“为模型构建一个可执行、可信赖、可长期运转的数字世界”。 当越来越多像 DeerFlow 2.0 这样的 Super Agent Harness 走向普及,AI 将真正进化为能理解、会规划、可执行、敢交付、长期负责的成熟生产力形态。

技术引领业务创新 519

RLHF全链路深度解析:Reward Model数学推导+PPO完整实战,对比GRPO轻量化方案

RLHF是当前大模型人类对齐工业标准流程,分为SFT监督微调、Reward偏好模型训练、PPO强化学习优化三阶段。本文完整拆解Bradley-Terry成对偏好损失、PPO Clipped Surrogate目标函数数学原理,对比DeepSeek提出的GRPO无Critic轻量化算法差异,提供基于distilgpt2的端到端可运行RLHF训练代码,汇总Reward Hack、KL崩溃、显存溢出四大工业级故障排查方案,给出7B/13B大模型训练超参数最优配置,兼顾理论推导与生产落地。关键词:RLHF;PPO。

分享日常学习生活 460

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一篇说清SFT→ PPO→ DPO→ GRPO→ DAPO→ GSPO‌的入门学习指南

SFT (Supervised Fine-Tuning,监督微调),是一种基于标准语言建模目标的有监督学习方法,是大模型对齐的第一步,也是必经一步。简单说就是:用大量人工整理好的「用户指令+优质标准答案」数据集,微调预训练模型。通俗类比:预训练是自学成才、知识渊博但不懂答题规则的学生;SFT就是老师手把手教标准答案,告诉模型「遇到什么问题,该按什么格式、什么思路回答」。

PeterOK的博客 382

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【AI学习】从RLHF到GRPO

最近学习了从RLHF到GRPO的发展变化

bylander的博客 459

【深度收藏】大模型RLHF算法全攻略:7种方法优缺点对比与实战选型指南

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

python12345_的博客 708

ms-swift强化学习初体验:GRPO算法快速上手

本文介绍了如何在星图GPU平台上自动化部署ms-swift镜像,快速上手GRPO强化学习算法,实现大语言模型的高效对齐。用户可一键启动端到端训练流程,典型应用于数学推理等需结构化、高可靠性输出的场景,显著提升模型分步解题与人类偏好一致性。

weixin_42560991的博客 1132

ms-swift + GRPO族算法:强化学习全家桶体验

本文介绍了如何在星图GPU平台上自动化部署ms-swift镜像,快速构建强化学习训练环境。基于该镜像,用户可一键运行GRPO族算法(如GRPO、DAPO、GSPO等),典型应用于大语言模型的数学推理对齐与偏好优化,显著提升模型逻辑准确性与输出一致性。

weixin_42504649的博客 283

LLM-RL-Visualized:大模型与强化学习算法架构深度解析与可视化技术指南

LLM-RL-Visualized是一个包含100+原创大模型和强化学习原理图的开源项目,专注于为AI开发者和研究者提供直观的可视化学习资源。该项目通过精美的图表和详细的算法图解,帮助用户深入理解LLM(大语言模型)、RL(强化学习)、RLHF(人类反馈强化学习)和DPO(直接偏好优化)等核心技术,已成为学习大模型算法的重要参考资源。 ## 🔧 项目快速部署与架构解析 ### 一键克隆与本地

gitblog_00131的博客 882

ms-swift框架下的GRPO强化学习算法实战解析

深入解析无需奖励模型的GRPO类强化学习算法,结合ms-swift框架实现高效大模型对齐。涵盖算法原理、显存优化、vLLM加速采样及多模态支持,揭示如何用一套系统打通从数据到部署的完整链路,显著降低技术门槛。

weixin_42607969的博客 1115

新手必看!万字长文为你深度解析DeepSeek

DeepSeek-V3 是一个在2048 个 NVIDIA H800 GPU 的集群上进行训练得到的超大型MoE架构的大语言模型。它延续了Deepseek MoE、Deepseek V2等模型的一系列创新,进一步提出了MTP,并优化了训练的效率,取得比较好效果的同时,提高了训练的效率,节约了成本。表5、表6展示了 DeepSeek V3 为人瞩目的训练成本以及开源基准评测效果。表5. DeepSeek V3 训练成本表6. DeepSeek V3 与其他 Chat 模型开源基准评测效果。

大模型教程的博客 1506
上一篇: FP32/FP16/BF16/FP8...一文搞懂大模型数据类型变迁
下一篇: Elastic Attention:将 MoE 路由引入 Attention,让大模型长文本推理“该省省,该花花”
ACEEE-1222
博客等级 码龄4年 432粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值