作者:hzwer 黄哲威 (已授权)
知乎:https://zhuanlan.zhihu.com/p/30982162116
三月份 字节seed 挂出来两篇论文,分别是做 LongCoT 背景下 PPO 和 GRPO 改进的,都是一些非常小的改动方案,很容易借鉴做一些实验试试
第一篇VC-PPO:https://arxiv.org/pdf/2503.01491v1
第二篇DAPO:https://arxiv.org/abs/2503.14476
看过挺多社区的经验贴,限于算力大多在做一个非常早期的 LongCoT 启动阶段,但是长度涨到几千以后怎么稳定地一直涨点训下去(不依赖蒸馏)还是有技巧的
很多人贴的曲线,其实长度涨得过快了,把 AIME 刷到 0.5/0.6 也不用把长度涨那么高
VC-PPO
太长不看版:
PPO在长链思维任务中失败的原因主要有两个:
- 价值初始化偏差 :PPO的价值模型通常从奖励模型初始化,导致早期训练阶段的优势估计误差较大。
- 奖励信号衰减 :在长序列和最终奖励的情况下,价值函数无法将奖励信号有效地传播到前面的token。
为了解决这些问题,文章提出了VC-PPO,包括两个关键技术:
- 价值预训练 :在离线方式下,使用固定策略生成的响应来预训练价值模型,以减少早期训练阶段的偏差。
- 解耦GAE计算 :将GAE计算解耦为策略和价值两部分,允许价值使用更大的λ来更有效地传播奖励信号,同时保持策略的λ不变,以确保在时间和计算限制下的收敛性。
识别和解决PPO在长链思维任务中的失败模式
在长链思维任务中直接应用 PPO,容易导致长度退化,然后难题就再也做不出来了
当 GAE lambda = 0.95 时,把 Value 和 Advantage 画在图上:
越靠前的token,其优势越正向偏差,原因是:
- 奖励模型的训练目标是在 token处对响应进行评分。由于靠前的token不包括在训练中,奖励模型倾向于对靠前的token赋予较低的分数
- 价值预测的目标是估计给定策略下每个token的预期奖励。由于靠前的token分数较低,并且在训练开始时KL惩罚基本上为零,因此在每个时间步t都会存在一个正向偏差,该偏差会沿着轨迹积累
reward 折扣速度(显然生成 K 步的时候 lambda 不宜小于 1 - 1/K)
于是改进方式是先用一个固定策略采样,固定 GAE lambda = 1,然后训练价值模型(像是 PPO 中的 critic warmup)
然后既要 Advantage 不衰减太快,又想要减小 Advantage 的方差,这篇用一个简单方法,将 Actor 的 lambda 设为 0.95,而 critic 的 lambda 设为 1
还有一个说法是说 critic 的均方损失可以容忍更大的方差,所以可能更适合大的 lambda
实验
消融实验是 8k context length,actor lambda 的较优区间可能是 [0.95, 0.99]:
适当的 value 预训练是有益的:
DAPO
这篇是针对 GRPO 进行了如下改进:
Clip-Higher
考虑一个具体例子:具体来说,当
(大多数算法的默认值)时,考虑两个动作,其概率分别为
和
。最大可能的更新概率
分别为
和
。这意味着对于高概率的 token,约束较小。相反,对于低概率的 token,实现概率的显著增加要困难得多。
这个实验有点恐怖的地方是,如果以 eval AIME 0.3 为目标,看不出来这二者之间的区别,提示我们观察熵的数值是重要的
从统计 3(a) 上看,上界 clip 确实更多作用于本身出现概率较小的动作上:
改进方式是下方 eps 还是 0.2,上方 eps 放宽到 0.28
我一开始以为 0.28 差别应该不大,做了实验发现 clip 的 token 少了一个数量级
Dynamic Sampling
在 GRPO 里,如果一个 prompt 的所有采样都错或者都对,其实基本不贡献 loss,随着训练推进会间接让 batchsize 持续变小
DAPO 提出过度采样并过滤掉准确率为1和0的提示(确保批次中的所有提示都有有效的梯度,并保持提示数量的一致性)
Token-Level Policy Gradient Loss
这部分是 GRPO 中的梯度计算改动
由于所有样本在损失计算中的权重相等,较长响应中的token(包含更多token)可能对整体损失的贡献不成比例地低,这可能导致两个不利影响。首先,对于高质量的长样本,这种效果可能会阻碍模型学习其中的推理相关模式。其次,我们观察到过长样本通常包含低质量模式,如胡言乱语和重复单词。因此,由于无法有效惩罚长样本中的这些不良模式,样本级损失计算会导致熵和响应长度的不健康增加
Overlong Reward Shaping
直觉上如果一个样本超长直接得到一个 -1 的奖励不够平滑,这里就是做一些 soft 的惩罚
这种我也试过,我感觉系数应该要设置得小一点,不然解题模式有的时候会退化得不偿失
Dataset Transformation
DAPO-Math-17K 数据集:
来源于AoPS1网站和官方竞赛主页,通过结合网络抓取和手动标注的方式获取。数学数据集的答案通常以多种格式出现,如表达式、公式和数字,这给设计全面的解析规则带来了挑战。为了通过规则提供准确的奖励信号,并最小化公式解析器引入的错误,我们受到AIME的启发,选择并将答案转换为易于解析的整数。例如,如果原始答案表示为
的形式,我们会指示LLM修改问题,使预期答案变为 a+b+c。
现在 math verify 也越来越强了,估计这类匹配问题应该会越来越少
训练曲线
整体上 entropy 在 0.35~0.5 波动,然后长度是从 1k 慢慢涨到 5k
PS:看到这里,如果觉得不错,可以来个 点赞 、 在看 、 关注 。 给公众号添加【星标⭐️】不迷路!您的支持是我坚持的最大动力!
欢迎多多关注公众号「NLP工作站」, 加入交流群 ,交个朋友吧,一起学习,一起进步!