【强化学习】深度解析 DAPO:从 GRPO 到 Decoupled Clip & Dynamic Sampling

文章目录

  • [一、DAPO 提出背景](#一、DAPO 提出背景)
  • [二、DAPO 原理解析](#二、DAPO 原理解析)
    • [2.1 核心公式](#2.1 核心公式)
      • [2.1.1 定义 r i , t ( θ ) r_{i,t}(\theta) ri,t(θ) 与 A ^ i , t \hat{A}{i,t} A^i,t](#2.1.1 定义 r i , t ( θ ) r{i,t}(\theta) ri,t(θ) 与 A ^ i , t \hat{A}_{i,t} A^i,t)
      • [2.1.2 目标函数对比(GRPO vs DAPO)](#2.1.2 目标函数对比(GRPO vs DAPO))
    • [2.2 Clip-Higher](#2.2 Clip-Higher)
      • [2.2.1 两种类型 token](#2.2.1 两种类型 token)
      • [2.2.2 熵崩溃的数学根源](#2.2.2 熵崩溃的数学根源)
      • [2.2.3 clip 上下限各自约束什么?*](#2.2.3 clip 上下限各自约束什么?*)
      • [2.2.4 解耦 ϵ high \epsilon_{\text{high}} ϵhigh 和 ϵ low \epsilon_{\text{low}} ϵlow](#2.2.4 解耦 ϵ high \epsilon_{\text{high}} ϵhigh 和 ϵ low \epsilon_{\text{low}} ϵlow)
    • [2.3 Dynamic Sampling](#2.3 Dynamic Sampling)
      • [2.3.1 GRPO 采样中的弊端](#2.3.1 GRPO 采样中的弊端)
      • [2.3.2 DAPO 的动态采样机制](#2.3.2 DAPO 的动态采样机制)
    • [2.4 Token-level Policy Gradient Loss](#2.4 Token-level Policy Gradient Loss)
      • [2.4.1 从 sample-level 到 token-level](#2.4.1 从 sample-level 到 token-level)
      • [2.4.2 计算示例](#2.4.2 计算示例)
    • [2.5 Overlong Reward Shaping](#2.5 Overlong Reward Shaping)
  • 三、算法伪代码及说明
  • 四、小结

一、DAPO 提出背景

随着大规模语言模型(LLM)的发展,强化学习(RL)在提升模型推理能力方面发挥了重要作用,尤其在复杂任务如长链条推理(Long-CoT)中。然而,现有的强化学习方法(如PPO和GRPO)面临以下问题:

  • 熵崩溃:模型训练过程中,探索性降低,过度依赖已知模式,导致模型缺乏多样性。
  • 训练效率低:长链条推理任务中,梯度减小,导致训练不稳定。
  • 样本质量问题:低质量样本干扰训练,导致训练效果差。
  • 奖励噪声:长序列的奖励信号不稳定,影响训练稳定性。

为了解决这些问题,ByteDance Seed与清华大学AIR联合团队提出了 DAPO(Decoupled Clip and Dynamic sAmpling Policy Optimization,解耦剪切和动态采样策略优化) 算法,主要包含以下四点创新:

  1. Clip-Higher:通过调整剪切范围,提高探索性,避免熵崩溃。
  2. 动态采样:过滤低质量样本,提升训练效率。
  3. 基于token的策略梯度损失:改进长链条推理中的梯度更新。
  4. 过长奖励塑形:减少奖励噪声,确保长推理任务中的稳定训练。

DAPO 是在 GRPO(Group Relative Policy Optimization,群组相对策略优化) 的基础上进行创新,优化了现有的策略更新过程。

在阅读以下内容之前,请先学习 GRPO 的相关原理,可参考我的另一篇博客:【强化学习】深度解析 GRPO:从原理到实践的全攻略


二、DAPO 原理解析

2.1 核心公式

2.1.1 定义 r i , t ( θ ) r_{i,t}(\theta) ri,t(θ) 与 A ^ i , t \hat{A}_{i,t} A^i,t

  1. 重要性采样比 r i , t ( θ ) r_{i,t}(\theta) ri,t(θ)
    r i , t ( θ ) = π θ ( o i , t ∣ q , o i , < t ) π θ old ( o i , t ∣ q , o i , < t ) r_{i,t}(\theta) = \frac{\pi_{\theta}(o_{i,t} \mid q, o_{i,<t})}{\pi_{\theta_{\text{old}}}(o_{i,t} \mid q, o_{i,<t})} ri,t(θ)=πθold(oi,t∣q,oi,<t)πθ(oi,t∣q,oi,<t)

    • 含义 : r i , t ( θ ) r_{i,t}(\theta) ri,t(θ) 是当前策略 π θ \pi_{\theta} πθ 与旧策略 π θ old \pi_{\theta_{\text{old}}} πθold 之间的 概率比值 。对于每个输出 o i , t o_{i,t} oi,t(第 i i i 个输出的第 t t t 个token),它表示在当前策略下,给定前 t t t 步的输入条件 q q q 和前 t − 1 t-1 t−1 步的输出 o i , < t o_{i,<t} oi,<t,该token的生成概率相对于旧策略的变化比例。
  2. 优势估计 A ^ i , t \hat{A}_{i,t} A^i,t
    A ^ i , t = R i − mean ( { R i } i = 1 G ) std ( { R i } i = 1 G ) \hat{A}{i,t} = \frac{R_i - \text{mean}(\{R_i\}{i=1}^G)}{\text{std}(\{R_i\}_{i=1}^G)} A^i,t=std({Ri}i=1G)Ri−mean({Ri}i=1G)

    • 含义 : A ^ i , t \hat{A}{i,t} A^i,t 是 标准化后的优势估计 。对于第 i i i 个输出的第 t t t 个token, A ^ i , t \hat{A}{i,t} A^i,t 表示该token相对其他token的优势,标准化过程消除了奖励值的尺度差异。 R i R_i Ri 表示与第 i i i 个输出相关的奖励, mean ( { R i } ) \text{mean}(\{R_i\}) mean({Ri}) 和 std ( { R i } ) \text{std}(\{R_i\}) std({Ri}) 是所有输出的奖励的均值和标准差。

2.1.2 目标函数对比(GRPO vs DAPO)

在上述定义下,GRPO目标函数可表示为:
J GRPO ( θ ) = E ( q , a ) ∼ D , { o i } i = 1 G ∼ π θ old ( ⋅ ∣ q ) 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ { min ⁡ ( r i , t ( θ ) A \^ i , t , clip ( r i , t ( θ ) , 1 − ϵ , 1 + ϵ ) A \^ i , t ) − β D K L \[ π θ ∥ π ref } ] \mathcal{J}{\text{GRPO}}(\theta) = \mathbb{E}{(q,a) \sim \mathcal{D}, \{o_i\}{i=1}^G \sim \pi{\theta_{\text{old}}}(\cdot | q)}\left \\textcolor{blue}{\\frac{1}{G} \\sum_{i=1}\^G \\frac{1}{\|o_i\|}} \\sum_{t=1}\^{\|o_i\|} \\left\\{ \\min \\left(r_{i,t}(\\theta) \\hat{A}_{i,t}, \\text{clip} \\left(r_{i,t}(\\theta), 1-\\textcolor{blue}{\\epsilon}, 1+\\textcolor{blue}{\\epsilon} \\right) \\hat{A}_{i,t} \\right) \\textcolor{blue}{- \\beta D_{KL} \\left\[ \\pi_\\theta \\\| \\pi_{\\text{ref}} \\right} \right\}\right] JGRPO(θ)=E(q,a)∼D,{oi}i=1G∼πθold(⋅∣q) G1i=1∑G∣oi∣1t=1∑∣oi∣{min(ri,t(θ)A^i,t,clip(ri,t(θ),1−ϵ,1+ϵ)A^i,t)−βDKLπθ∥πref}

而DAPO目标函数表示为:
J DAPO ( θ ) = E ( q , a ) ∼ D , { o i } i = 1 G ∼ π θ old ( ⋅ ∣ q ) 1 ∑ i = 1 G ∣ o i ∣ ∑ i = 1 G ∑ t = 1 ∣ o i ∣ min ⁡ ( r i , t ( θ ) A \^ i , t , clip ( r i , t ( θ ) , 1 − ϵ low , 1 + ϵ high ) A \^ i , t ) s.t. 0 < ∣ { o i ∣ is_equivalent ( a , o i ) } ∣ < G \mathcal{J}{\text{DAPO}}(\theta) = \mathbb{E}{(q,a) \sim \mathcal{D}, \{o_i\}{i=1}^G \sim \pi{\theta_{\text{old}}}(\cdot | q)} \left \\textcolor{red}{\\frac{1}{\\sum_{i=1}\^G \|o_i\|} \\sum_{i=1}\^G} \\sum_{t=1}\^{\|o_i\|} \\min \\left( r_{i,t}(\\theta) \\hat{A}_{i,t}, \\text{clip}\\left(r_{i,t}(\\theta), 1 - \\textcolor{red}{\\epsilon_{\\text{low}}}, 1 + \\textcolor{red}{\\epsilon_{\\text{high}}}\\right) \\hat{A}_{i,t} \\right) \\right\\ \textcolor{red}{\text{s.t. } 0 < \left| \{o_i \mid \text{is\_equivalent}(a, o_i)\} \right| < G} JDAPO(θ)=E(q,a)∼D,{oi}i=1G∼πθold(⋅∣q) ∑i=1G∣oi∣1i=1∑Gt=1∑∣oi∣min(ri,t(θ)A^i,t,clip(ri,t(θ),1−ϵlow,1+ϵhigh)A^i,t) s.t. 0< {oi∣is_equivalent(a,oi)} <G

公式中的不同点已经用特殊颜色标记,通过依次对比可以发现下列四处差异:

  1. 样本加权
    • GRPO 中,目标函数对每个样本的损失进行 均匀加权 ,使用 1 G \frac{1}{G} G1 进行平均。
    • DAPO 引入了对样本的加权,基于输出总长度 ∑ i = 1 G ∣ o i ∣ \sum_{i=1}^G |o_i| ∑i=1G∣oi∣,能更公平地处理长输出和短输出对模型训练的不同影响。
  2. 剪切范围的调整
    • GRPO 中使用固定的剪切范围 1 − ϵ , 1 + ϵ 1-\\epsilon, 1+\\epsilon 1−ϵ,1+ϵ,来控制奖励比值的变化幅度。
    • DAPO 则通过 低剪切范围 ϵ low \epsilon_{\text{low}} ϵlow 和 高剪切范围 ϵ high \epsilon_{\text{high}} ϵhigh 的分别调整,使得剪切策略更加灵活,能够更好地平衡探索与开发。
  3. KL散度的移除
    • GRPO 中有一个KL散度项,用于约束策略模型与参考模型的输出分布差异,防止其过度偏离。
    • DAPO 认为,在训练长思维链推理模型时,策略模型分布可能与初始模型显著偏离,这种限制是没有必要的,因此移除了它。
  4. 样本约束
    • GRPO 中没有对样本生成的质量进行明确约束。
    • DAPO 加入了 样本约束 (即 0 < ∣ o i ∣ is_equivalent ( a , o i ) ∣ < G 0 < \left| {o_i \mid \text{is\_equivalent}(a, o_i)} \right| < G 0< oi∣is_equivalent(a,oi) <G),避免了低质量样本对训练结果的干扰。

接下来,我们将结合公式逐项剖析 DAPO 的四大创新技术的核心原理,并分析其在解决传统强化学习方法瓶颈问题时的实际效用。


2.2 Clip-Higher

2.2.1 两种类型 token

为了更好地理解 Clip-Higher 策略,我们首先需要区分两种类型的 token:

  1. 利用型 token(Exploitation Token):在旧策略下通常具有较高的概率,代表已验证、主流的推理路径或答案模式。
  2. 探索型 token(Exploration Token):在旧策略下通常具有较低的概率,表示模型尚未完全学习到的策略。它允许模型探索新的答案和路径,以增加多样性和创新性。

2.2.2 熵崩溃的数学根源

熵崩溃是指在训练过程中,模型的输出变得越来越集中,导致模型不再能够有效探索新的可能性。这种现象通常发生在强化学习的训练后期,当模型已经学习到一定的策略,并过度依赖这些策略时,它会变得缺乏足够的多样性和灵活性。

在 GRPO / PPO 框架下,策略优化并不是直接最大化奖励,而是通过如下剪切后的代理目标 进行更新:

L clip ( θ ) = E t min ⁡ ( r t ( θ )   A \^ t ,    clip ( r t ( θ ) ,   1 − ϵ ,   1 + ϵ )   A \^ t ) \mathcal{L}^{\text{clip}}(\theta)= \mathbb{E}_t \Big \\min\\big( r_t(\\theta)\\,\\hat A_t,\\; \\text{clip}(r_t(\\theta),\\,1-\\epsilon,\\,1+\\epsilon)\\,\\hat A_t \\big) \\Big Lclip(θ)=Etmin(rt(θ)A\^t,clip(rt(θ),1−ϵ,1+ϵ)A\^t)

其中:

r t ( θ ) = π θ ( o t ∣ q , o < t ) π θ old ( o t ∣ q , o < t ) r_t(\theta) = \frac{\pi_\theta(o_t \mid q,o_{<t})}{\pi_{\theta_{\text{old}}}(o_t \mid q,o_{<t})} rt(θ)=πθold(ot∣q,o<t)πθ(ot∣q,o<t)

在 GRPO 场景中,奖励是按 group 内相对表现标准化得到的 ,这意味着同一个 query 下,部分 sample 获得正优势( A ^ > 0 \hat A>0 A^>0), 部分sample 获得负优势( A ^ < 0 \hat A<0 A^<0)。

在这种设置下,熵崩溃的原因 并不是"模型过度偏好高概率利用型 token",而是一部分"正优势但低旧概率"的探索型 token,无法通过策略梯度获得足够大的概率提升。

2.2.3 clip 上下限各自约束什么?*

为说明 clip 函数如何影响熵崩溃,我们首先需要明确 clip 何时真正生效。根据上述公式,这由 A ^ \hat A A^ 的符号min 结构 共同决定。

情况一: A ^ t > 0 \hat A_t > 0 A^t>0(token 值得被强化) ,目标是增大 r t r_t rt

  • 当 r t ≤ 1 + ϵ r_t \le 1+\epsilon rt≤1+ϵ 时, r t ≤ clip ( r t ,   1 − ϵ ,   1 + ϵ ) r_t \le \text{clip}(r_t,\,1-\epsilon,\,1+\epsilon) rt≤clip(rt,1−ϵ,1+ϵ)

min ⁡ ( r t A ^ t ,    clip ( r t ,   1 − ϵ ,   1 + ϵ ) A ^ t ) = r t A ^ t \min(r_t\hat A_t,\;\text{clip}(r_t,\,1-\epsilon,\,1+\epsilon)\hat A_t) = r_t\hat A_t min(rtA^t,clip(rt,1−ϵ,1+ϵ)A^t)=rtA^t

此时 clip 不生效

  • 当 r t > 1 + ϵ r_t > 1+\epsilon rt>1+ϵ 时: r t > clip ( r t ,   1 − ϵ ,   1 + ϵ ) r_t \gt \text{clip}(r_t,\,1-\epsilon,\,1+\epsilon) rt>clip(rt,1−ϵ,1+ϵ)

min ⁡ ( r t A ^ t ,    clip ( r t ,   1 − ϵ ,   1 + ϵ ) A ^ t ) = clip ( r t ,   1 − ϵ ,   1 + ϵ ) A ^ t = ( 1 + ϵ ) A ^ t \min(r_t\hat A_t,\;\text{clip}(r_t,\,1-\epsilon,\,1+\epsilon)\hat A_t) = \text{clip}(r_t,\,1-\epsilon,\,1+\epsilon)\hat A_t = (1+\epsilon)\hat A_t min(rtA^t,clip(rt,1−ϵ,1+ϵ)A^t)=clip(rt,1−ϵ,1+ϵ)A^t=(1+ϵ)A^t

此时 clip 上限生效,梯度被截断

结论一 :clip 的上限 1 + ϵ 1+\epsilon 1+ϵ 仅在 A ^ > 0 \hat A>0 A^>0 且 r t r_t rt 已经很大 时起作用,它限制单次更新中,正优势 token 的最大有效梯度幅度。

情况二: A ^ t < 0 \hat A_t < 0 A^t<0(token 应被抑制) ,目标是减小 r t r_t rt

  • 当 r t ≥ 1 − ϵ r_t \ge 1-\epsilon rt≥1−ϵ 时, r t ≥ clip ( r t ,   1 − ϵ ,   1 + ϵ ) r_t \ge \text{clip}(r_t,\,1-\epsilon,\,1+\epsilon) rt≥clip(rt,1−ϵ,1+ϵ)

min ⁡ ( r t A ^ t ,    clip ( r t ,   1 − ϵ ,   1 + ϵ ) A ^ t ) = r t A ^ t \min(r_t\hat A_t,\;\text{clip}(r_t,\,1-\epsilon,\,1+\epsilon)\hat A_t) = r_t\hat A_t min(rtA^t,clip(rt,1−ϵ,1+ϵ)A^t)=rtA^t

此时 clip 不生效

  • 当 r t < 1 − ϵ r_t < 1-\epsilon rt<1−ϵ 时, r t < clip ( r t ,   1 − ϵ ,   1 + ϵ ) r_t \lt \text{clip}(r_t,\,1-\epsilon,\,1+\epsilon) rt<clip(rt,1−ϵ,1+ϵ)

min ⁡ ( r t A ^ t ,    clip ( r t ,   1 − ϵ ,   1 + ϵ ) A ^ t ) = clip ( r t ,   1 − ϵ ,   1 + ϵ ) A ^ t = ( 1 − ϵ ) A ^ t \min(r_t\hat A_t,\;\text{clip}(r_t,\,1-\epsilon,\,1+\epsilon)\hat A_t) = \text{clip}(r_t,\,1-\epsilon,\,1+\epsilon)\hat A_t = (1-\epsilon)\hat A_t min(rtA^t,clip(rt,1−ϵ,1+ϵ)A^t)=clip(rt,1−ϵ,1+ϵ)A^t=(1−ϵ)A^t

此时 clip 下限生效

结论二 :clip 的下限 1 − ϵ 1-\epsilon 1−ϵ 仅用于限制 负优势 token 被压低的最大速度,防止策略更新过激。

2.2.4 解耦 ϵ high \epsilon_{\text{high}} ϵhigh 和 ϵ low \epsilon_{\text{low}} ϵlow

根据上述分析可以看到,熵崩溃的根本原因 并不在于 clip 的下限,而在于 clip 上限对正优势 token 的过度约束 。但更关键的是,这种约束尤其限制了旧策略下低概率的探索型 token ,这是由于 π θ old ( o t ) \pi_{\theta_{\text{old}}}(o_t) πθold(ot) 本身极小,因此新策略下的概率 π θ ( o t ) \pi_\theta(o_t) πθ(ot) 只能发生有限幅度的绝对提升。

因此 Clip-Higher 将对称剪切区间:

1 − ϵ ,    1 + ϵ \] \[1-\\epsilon,\\;1+\\epsilon\] \[1−ϵ,1+ϵ

解耦为:

1 − ϵ low ,    1 + ϵ high , 且 ϵ high ≫ ϵ low 1-\\epsilon_{\\text{low}},\\;1+\\epsilon_{\\text{high}}, \quad \text{且} \quad \epsilon_{\text{high}} \gg \epsilon_{\text{low}} 1−ϵlow,1+ϵhigh,且ϵhigh≫ϵlow

其效果是:在不改变负优势 token 的稳定性约束的情况下,放宽了 A ^ > 0 \hat A>0 A^>0 时 r t r_t rt 的最大可更新幅度, 从而允许正优势、低旧概率的探索型 token 获得与其价值相匹配的梯度规模


2.3 Dynamic Sampling

2.3.1 GRPO 采样中的弊端

在 GRPO 中,对每一个 query q q q:固定生成 G G G 条 response:

{ o i } i = 1 G ∼ π θ old ( ⋅ ∣ q ) \{o_i\}{i=1}^G \sim \pi{\theta_{\text{old}}}(\cdot \mid q) {oi}i=1G∼πθold(⋅∣q)

然后对这些 response 进行组内归一化计算优势 A ^ i , t \hat{A}_{i,t} A^i,t:

A ^ i , t = R i − mean ( { R i } i = 1 G ) std ( { R i } i = 1 G ) \hat{A}{i,t} = \frac{R_i - \text{mean}(\{R_i\}{i=1}^G)}{\text{std}(\{R_i\}_{i=1}^G)} A^i,t=std({Ri}i=1G)Ri−mean({Ri}i=1G)

考虑极端情况:如果所有( o i o_i oi)都正确(准确率=1)或都错误(准确率=0), mean ( { R i } ) = 1 / − 1 \text{mean}(\{R_i\}) = 1/-1 mean({Ri})=1/−1, std ( { R i } ) = 0 \text{std}(\{R_i\}) = 0 std({Ri})=0,这就导致了优势计算出为0,策略的梯度消失。

这种"梯度消失"降低了样本效率 ,尤其当训练进入中后期时 π θ old \pi_{\theta_{\text{old}}} πθold 已经高度集中,大量概率质量集中在少数"主流解路径"上,这种现象会更加显著。

2.3.2 DAPO 的动态采样机制

针对上述弊端,DAPO提出了 过采样和过滤 的策略。其核心约束条件是:

0 < ∣ { o i ∣ is_equivalent ( a , o i ) } ∣ < G 0 < \left| \{o_i \mid \text{is\_equivalent}(a, o_i)\} \right| < G 0< {oi∣is_equivalent(a,oi)} <G

具体操作流程如下:

  1. 初始采样 :对于每个问题 q q q,根据旧策略 π θ old \pi_{\theta_{\text{old}}} πθold 采样 G G G 个输出 { o i } i = 1 G \{{o_i}\}_{i=1}^G {oi}i=1G。
  2. 计算准确率 :统计这些输出中与正确答案 a a a 等价的数量 n correct n_{\text{correct}} ncorrect 并计算准确率,即
    n correct = ∣ { o i ∣ is_equivalent ( a , o i ) } ∣ , accuracy = n correct G n_{\text{correct}} = |\{ o_i \mid \text{is\equivalent}(a, o_i) \}|, \quad \text{accuracy} = \frac{n{\text{correct}}}{G} ncorrect=∣{oi∣is_equivalent(a,oi)}∣,accuracy=Gncorrect
  3. 过滤极端样本 :过滤 accuracy = 1 \text{accuracy} = 1 accuracy=1(全部正确)或 accuracy = 0 \text{accuracy} = 0 accuracy=0(全部错误)的样本,仅保留满足 0 < n correct < G 0 < n_{\text{correct}} < G 0<ncorrect<G 的样本,用于训练。
  4. 过采样 :若当前批次因过滤而不足,继续从 π θ old \pi_{\theta_{\text{old}}} πθold 采样更多样本,直至填满符合条件的训练批次。

通过持续过滤全对/全错样本,实际上构建了一个中等难度训练集,从而确保每个批次都具有有效的梯度信号,提高训练的稳定性和效率。


2.4 Token-level Policy Gradient Loss

2.4.1 从 sample-level 到 token-level

GRPO 算法采用样本级别(sample-level)的损失计算方法,首先对每个样本内的 token 进行损失平均,然后对不同样本的损失进行平均。公式表示为:

1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ ( ⋅ ) \frac{1}{G} \sum_{i=1}^G \frac{1}{|o_i|} \sum_{t=1}^{|o_i|}(·) G1i=1∑G∣oi∣1t=1∑∣oi∣(⋅)

这意味着,每个样本在最终的损失计算中都会被赋予相同的权重。然而,在长链条推理(Long-CoT)任务中,这种方法存在以下问题:

  1. 长样本的低贡献:因为所有样本在损失计算中有相同的权重,包含更多token的长样本可能会在整体损失计算中占较少的贡献,这会影响模型对长样本中推理相关模式的学习。
  2. 低质量样本的增加:观察到过长的样本通常会出现低质量模式,比如胡言乱语或重复的词语。样本级别的损失计算并不能有效地惩罚这些低质量样本,因此导致熵的增加和生成的重复性。

因此,DAPO 在 reasoning 场景中引入 token级别的策略梯度损失(Token-Level Policy Gradient Loss)
1 ∑ i = 1 G ∣ o i ∣ ∑ i = 1 G ∑ t = 1 ∣ o i ∣ ( ⋅ ) \frac{1}{\sum_{i=1}^G |o_i|} \sum_{i=1}^G \sum_{t=1}^{|o_i|}(·) ∑i=1G∣oi∣1i=1∑Gt=1∑∣oi∣(⋅)

在这种设置下,每个token引起奖励的增加或减少,将会被同等地促进或抑制,这使得长序列对整体梯度的更新产生更多影响。

2.4.2 计算示例

考虑如下两条长度不一致的输出,表格中的数值表示每个token对应的损失。

output token1 token2 token3 token4
o 1 o_1 o1 0.3 0.4 0.5 0.6
o 2 o_2 o2 0.1 0.2 \ \
  • GRPO损失计算为:
    J GRPO = 1 2 ∗ ( 0.3 + 0.4 + 0.5 + 0.6 4 + 0.1 + 0.2 2 ) = 0.3 \mathcal{J}_{\text{GRPO}} = \frac{1}{2} * \left(\frac{0.3 + 0.4 + 0.5 + 0.6}{4} + \frac{0.1 + 0.2}{2} \right) = 0.3 JGRPO=21∗(40.3+0.4+0.5+0.6+20.1+0.2)=0.3
  • DAPO损失计算为:
    J DAPO = 0.3 + 0.4 + 0.5 + 0.6 + 0.1 + 0.2 6 = 0.35 → 受长序列影响更大 \mathcal{J}_{\text{DAPO}} = \frac{0.3 + 0.4 + 0.5 + 0.6 + 0.1 + 0.2}{6} = 0.35 \rightarrow 受长序列影响更大 JDAPO=60.3+0.4+0.5+0.6+0.1+0.2=0.35→受长序列影响更大

2.5 Overlong Reward Shaping

在强化学习训练中,为了控制生成文本的长度,通常会设置一个最大生成长度 L m a x L_{max} Lmax。当模型生成的序列长度超过这个限制时,传统做法是直接给予惩罚。

然而,在长链条推理(Long-CoT)任务中,合理的推理过程往往自然较长,如果过于严格地惩罚超长序列,会产生以下问题:

  • 奖励噪声:原本正确、逻辑完整的长序列可能仅仅因为长度超标而被惩罚,使得奖励信号不再可靠。
  • 训练不稳定:大量合理序列被错误惩罚,会使模型学习到"缩短答案"的错误偏向,影响生成质量。

为解决这些问题,DAPO 引入了过长过滤 策略,用于屏蔽掉截断样本的损失。并提出了长度感知的软惩罚机制(Soft Overlong Punishment),其核心思想时是对序列长度分段惩罚,而非简单的截断或全额扣分。公式表示为:

R length ( y ) = { 0 ∣ y ∣ ≤ L max − L cache (安全区,不惩罚) ( L max − L cache ) − ∣ y ∣ L cache L max − L cache < ∣ y ∣ ≤ L max (缓冲区,线性惩罚) − 1 ∣ y ∣ > L max (超长区,最大惩罚) R_{\text{length}}(y) = \begin{cases} 0 & \ |y| \leq L_{\text{max}} - L_{\text{cache}} (安全区,不惩罚)\\ \frac{(L_{\text{max}} - L_{\text{cache}}) - |y|}{L_{\text{cache}}} & \ L_{\text{max}} - L_{\text{cache}} < |y| \leq L_{\text{max}} (缓冲区,线性惩罚)\\ -1 & \ |y| > L_{\text{max}} (超长区,最大惩罚) \end{cases} Rlength(y)=⎩ ⎨ ⎧0Lcache(Lmax−Lcache)−∣y∣−1 ∣y∣≤Lmax−Lcache(安全区,不惩罚) Lmax−Lcache<∣y∣≤Lmax(缓冲区,线性惩罚) ∣y∣>Lmax(超长区,最大惩罚)

  • ∣ y ∣ |y| ∣y∣:生成序列的长度。
  • L m a x L_{max} Lmax:允许的最大序列长度。
  • L c a c h e L_{cache} Lcache:惩罚缓冲区长度。
  • L m a x − L c a c h e L_{max} - L_{cache} Lmax−Lcache:安全长度阈值,低于此长度不施加惩罚。

通过这种分段奖励机制,DAPO 能够有效避免对长推理过程的误惩罚,从而稳定了训练过程并提高了模型的生成质量。


三、算法伪代码及说明

DAPO 的算法伪代码如上图所示,说明如下:

(1)初始化与输入

算法以当前策略模型 π θ \pi_\theta πθ、奖励模型 R R R、任务提示集合 D \mathcal{D} D 作为输入,并引入解耦剪切相关的超参数 ϵ low \epsilon_{\text{low}} ϵlow 和 ϵ high \epsilon_{\text{high}} ϵhigh。

(2)批次采样与旧策略冻结(Line 1--3)

在每一个训练 step 中,首先从任务集合 D \mathcal{D} D 中采样一个 mini-batch D b \mathcal{D}b Db。随后,将当前策略参数复制为旧策略 π θ old \pi{\theta_{\text{old}}} πθold,用于后续的重要性采样比计算。

(3)基于旧策略的组内采样与奖励计算(Line 4-5)

对于 batch 中的每个问题 q ∈ D b q \in \mathcal{D}b q∈Db,使用旧策略 π θ old \pi{\theta_{\text{old}}} πθold 生成 G G G 条输出。对每个生成的输出 o i o_i oi,通过奖励模型 R R R 计算其对应的奖励 r i r_i ri。

(4)动态采样过滤(Line 6--8)

根据 Dynamic Sampling 的约束条件过滤掉全对或全错的 group,仅将满足条件的样本加入动态采样缓冲区(buffer)。如果当前缓冲区样本数量不足预设阈值 N N N,则跳过本次更新,继续进行采样。

(5)Token 级优势计算(Line 9)

当动态采样缓冲区填满后,对其中的每个输出 o i o_i oi 的每一个 token 位置 t t t,计算标准化优势。该优势在 group 内进行归一化,并在 token 级别上共享,使得长链条推理中的每个 token 都能获得直接的学习信号。

(6)基于 Clip-Higher 的策略更新(Line 10--11)

在每一个 outer step 中,执行 μ \mu μ 次策略更新,优化 DAPO 目标函数, 其中,不对称剪切区间允许正优势、低旧概率的探索型 token 获得更大的梯度更新空间,从而缓解熵崩溃问题。

(7)算法输出

随着训练步数 M M M 的推进,策略模型 π θ \pi_\theta πθ 在动态采样与解耦剪切的共同作用下逐步优化,最终输出适用于复杂推理任务的策略模型。


四、小结

DAPOD ecoupled Clip and D ynamic sA mpling P olicy O ptimization)算法的核心创新正体现在其名称所指的两大技术:Clip-Higher(解耦剪切)Dynamic Sampling(动态采样)。其中,Clip-Higher 通过放宽正优势 token 的梯度限制,有效缓解了传统强化学习中常见的熵崩溃问题,使模型在长链条推理中能够更自由地探索新的答案路径;Dynamic Sampling 通过过滤全对或全错样本,构建"中等难度"的训练集,保证每个批次都提供有效梯度信号,从而提升训练稳定性和样本效率。

与 GRPO 相比,DAPO 在策略剪切和样本处理上进行了优化,使长序列对训练的贡献更加均衡,同时移除了 KL 散度约束 ,更适应复杂推理任务中策略分布可能的大幅偏离。此外,DAPO 还引入了 token级策略梯度损失长度感知奖励塑形,进一步提升了模型在长推理链场景下的表现,并有效降低奖励噪声对训练的干扰。整体来看,DAPO 在训练稳定性、探索性和生成质量方面均优于 GRPO,尤其在长链条推理任务中表现突出,为大规模语言模型在复杂推理任务中的高效训练提供了完整的解决方案。

相关推荐
2601_9599862417 小时前
从移动端看MMarkets(评测类)值得关注吗?
大数据·人工智能
code_pgf17 小时前
多模态技术在主要 AI 应用领域中的应用分析与工程落地建议
人工智能·stable diffusion
用户69190268133917 小时前
Claude Code 的快捷指令来了!带你快速上手cc提升效率!!
人工智能
坏孩子的诺亚方舟17 小时前
FPGA神经网络数学基础0
人工智能·神经网络·线性代数·fpga开发
段一凡-华北理工大学17 小时前
工业领域的Hadoop架构学习~系列文章02:HDFS架构深度剖析
大数据·人工智能·hadoop·学习·架构·高炉炼铁
SAP上海工博云署17 小时前
2026年中小企业SAP服务商选型技术解析
大数据·运维·数据库·人工智能·信息可视化·运维开发·信息与通信
涛声依旧-底层原理研究所17 小时前
Node.js在高并发低延迟场景中的优势
java·人工智能·python·node.js
weixin_4684668517 小时前
图像分类技术落地应用与实战指南
人工智能·深度学习·ai·分类·数据挖掘·图像分类·模型部署
MediaTea17 小时前
人工智能通识课:深度学习
人工智能·深度学习
长风23017 小时前
Day10:直面深水区——总结系统痛点与底层架构重塑
人工智能·安全