DAPO
- RL
- 2025-03-20
- 71热度
- 0评论
DAPO: An Open-Source LLM Reinforcement Learning System at Scale
单纯从公式表现形式上来可以看成是PPO与GRPO的融合:
PPO的化目标为:
$$\mathcal{J}_{PPO}(\theta)=\mathbb{E}{(q, a) \sim \mathcal{D}, o_{\leq t} \sim \pi_{\theta_{old }}(\cdot | q)}\\ \left[min \left(\frac{\pi_{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{\theta_{old }}\left(o_{t} | q, o_{<t}\right)} \hat{A}{t}, clip\left(\frac{\pi{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{\theta_{old }}\left(o_{t} | q, o_{<t}\right)}, 1-\varepsilon, 1+\varepsilon\right) \hat{A}_{t}\right)\right]$$
其中\(\hat{A}_{t}\)通过广义优势估计(GAE)计算:
$$\hat{A}_{t}^{GAE(\gamma, \lambda)}=\sum_{l=0}^{\infty}(\gamma \lambda)^{l} \delta_{t+l}\\
\delta_{l}=R_{l}+\gamma V\left(s_{l+1}\right)-V\left(s_{l}\right)$$
GRPO对于特定的问答对\((q, a)\),行为策略\(\pi_{\theta_{old }}\)采样一组\(G\)个响应\(\{o_{i}\}_{i = 1}^{G}\),第\(i\)个响应的优势通过对\(\{R_{i}\}_{i = 1}^{G}\)归一化计算:
$$\hat{A}_{i, t}=\frac{r_{i}-mean\left(\left\{R_{i}\right\}_{i=1}^{G}\right)}{std\left(\left\{R_{i}\right\}_{i=1}^{G}\right)}$$
GRPO采用裁剪目标和直接施加的KL惩罚项:
$$\mathcal{J}_{GRPO}(\theta) =\mathbb{E}{(q, a) \sim \mathcal{D},{o_{i}}_{i=1}^{G} \sim \pi_{\theta_{old }}(\cdot | q)}\\ [\frac{1}{G} \sum_{i=1}^{G} \frac{1}{|o_{i}|} \sum_{t=1}^{|o_{i}|}(min (r_{i, t}(\theta) \hat{A}{i, t}, clip(r{i, t}(\theta), 1-\varepsilon, 1+\varepsilon) \hat{A}{i, t})-\beta D{KL}(\pi_{\theta} | \pi_{ref }))]$$
DAPO
优化目标为:
$$
\mathcal{J}_{DAPO}(\theta)= \mathbb{E}_{(q, a) \sim \mathcal{D},\left\{o_{i}\right\}_{i=1}^{G} \sim \pi_{\theta_{old }}(\cdot | q)} \\ {\left[\frac{1}{\sum_{i=1}^{G}\left|o_{i}\right|} \sum_{i=1}^{G} \sum_{t=1}^{\left|o_{i}\right|} min \left(r_{i, t}(\theta) \hat{A}_{i, t}, clip\left(r_{i, t}(\theta), 1-\varepsilon_{low }, 1+\varepsilon_{high }\right) \hat{A}_{i, t}\right)\right] }
$$
$$
s.t.\quad 0<\left|\left\{o_{i} | is_{equivalent}\left(a, o_{i}\right)\right\}\right|<G
$$
改进点为:
Clip - Higher:针对PPO或GRPO训练中出现的熵坍缩问题,提出Clip - Higher策略。通过解耦\(\varepsilon_{low}\)和\(\varepsilon_{high}\),增大\(\varepsilon_{high}\)为低概率token的增加留出更多探索空间
动态采样(Dynamic Sampling):通过过采样并过滤掉准确率为0和1的提示,使批次中保留具有有效梯度的prompt,保持prompt数量一致,提高训练效率和稳定性。
Token - Level Policy Gradient Loss(个人认为这个方法其实和原版是等价的):原GRPO算法在长思维链RL场景中采用prompt级损失计算存在问题,无法有效惩罚token级别的不合理
Overlong Reward Shaping:在RL训练中,对截断样本的不当奖励整形会引入奖励噪声,干扰训练过程。首先提出Overlong Reward Shaping,屏蔽截断样本的损失,发现能稳定训练并提高性能。在这基础上提出Soft Overlong Punishment,根据响应长度进行惩罚,避免模型生成过长的响应:
$$
R_{length }(y)= \begin{cases}0, & |y| \leq L_{max }-L_{cache } \\ \frac{\left(L_{max }-L_{cache }\right) -|y|}{L_{cache }}, & L_{max }-L_{cache }<|y| \leq L_{max } \\ -1, & L_{max }<|y| \end{cases}
$$
其中,\(R_{length }(y)\)表示与响应长度相关的惩罚值,\(|y|\)是响应的实际长度,\(L_{max }\)是预定义的最大长度,\(L_{cache }\)是额外设置的用于计算软惩罚的缓存长度
数据集转换:从AoPS网站和官方竞赛主页获取数据集,通过网络爬虫和手动注释的方式进行收集。为提供准确的奖励信号,将数学数据集的答案转换为整数,得到DAPO - Math - 17K数据集,包含17K个提示,每个提示与一个整数答案配对。
算法流程图如下所示:
