Skip to content

PPO 改进系列

📅 发表于 2025/09/23
🔄 更新于 2025/09/23
👁️ -- 次访问
📝 0 字
0 分钟
ppo
#ppo
#vc-ppo
#vapo
#价值偏差
#长度不一
#奖励稀疏
#GAE奖励信号衰减
#价值预训练
#Decoupled-GAE
#长度自适应GAE
#Token-level Policy
#Clip-Higher
#正样本LM Loss
#分组采样
#RLOO
#REINFORCE++

(2504) VAPO (Seed)

VAPO 摘要
  • paper
  • 非常solid的文章,基于PPO的改进优化。
  • 针对价值偏差长度不一奖励稀疏3大问题
  • 提出了价值预训练解耦GAE长度自适应GAEtoken-level lossCLip-Higher正样本LMLoss分组采样等7大核心方法。
  • 价值模型相比无价值模型,能提高更细粒度的学习信号性能更好、训练效率、稳定性更高

问题背景

价值偏差问题

❓问题背景

LongCoT 推理任务 RLValue-based方法上存在挑战

价值模型偏差问题

1. 价值模型偏差

  • 偏差来自RM和Critic目标不一致却用RM初始化Critic
    • RM对完整句子打分,Critic预测中间状态的未来价值。
    • RM对不完整句子打低分、对长句打高分,导致一开始就有一个正向优势偏差
    • 详见VC-PPO
  • GAE λ<1时 奖励信号衰减,加剧价值学习难度
    • 最终环境奖励,传播到第t个token时,衰减因子为λTt
    • T-t很大时,衰减因子几乎为0,无奖励信号
    • 价值模型更新完全依赖自举,难以作为基线,使得训练过程非常不稳定。

训练长度不一问题

训练长度不一问题

2. 训练过程序列长度不一

  • 在推理任务中,模型生成答案长度差异巨大。普通GAE,固定λ无法适应动态长度
  • GAE优势估计
    • 对短序列:往往方差很高,导致训练不稳定
    • 对长序列:因为过多自举引入高偏差
      • GAE递归计算,把每一步的微小误差长序列不断累计放大影响学习效果
  • 根本原因GAE指数衰减特性,天然不适合处理长度变化范围极大的序列
PPO Seq-Loss 缺点

标准Seq-Loss 缺点

  • 标准PPO是Sequence-Level Policy Loss,即2步平均

    • 序列内平均(inner average):对一个序列的所有token求平均,作为序列loss
    • 样本间平均(outer average):对所有序列的loss求平均
  • 后果

    • 模型更关注学好短序列忽略长序列中token的错误
    • 学不好处理长序列问题,因为长序列权重被稀释。

短序列/长序列token影响力不同

  • 由于序列是平均对待,因此短序列token影响力长序列token影响力更强

    • 短序列A:10个token,每个token对ALoss的贡献是1/10
    • 长序列B:1000个token,每个token对BLoss的贡献是1/1000
    • 短序列A Token 犯错带来的惩罚影响力长序列B Token影响力的100倍

奖励被稀释

  • 1k 高质量回答:里面有100个token特别好,优势值很高
  • 但最终被其他900个普通token平均,导致最终总贡献50个token普通回答差不多

惩罚被稀释

  • 如1k 回答:前800好,后面200差,但差的被前面好的平均稀释了得不到足够的惩罚
  • 纵容了模型生成更长、质量更差的回答。

奖励稀疏问题

奖励稀疏问题

3. 稀疏奖励信号

  • Rule-based 通常只有0和1 Sparse奖励信号不是dense信号
  • 长CoT会加剧稀疏性,采样到非0奖励的样本概率更低,大部分尝试都是错的。
  • 探索利用困境需要保持平衡
    • 需要探索:保持不确定性去探索不同推理路径找到正确答案
    • 需要利用:需要利用艰苦探索得到的正确样本提升学习效率
    • 如果不平衡,可能陷入局部最优解、大量无效探索。

核心方法

📕核心方法

解决价值偏差问题(价值预训练+解耦GAE)

整体背景

  • 解决价值模型初始化不当奖励衰减带来的偏差问题
价值预训练

背景

  • 解决价值模型初始化偏差问题

核心思想

  • 不使用RM初始化,而是在PPO之前,使用固定策略+MC采样回报,来预训练价值模型
  • 价值模型在初期就能对累计奖励有一个更准确、偏差更低的估计
  • 为RL学习提供一个高质量起点,避免训练初期崩溃

价值预训练

  • 使用固定策略πsft,生成大量数据;GAE使用λ=1变成无偏MC回报。
  • 使用生成数据+MC回报,来训练价值模型。直到收敛,看Value Loss和Explained Variance。
  • 后续PPO使用Value预训练过的模型。
  • 具体见 VC-PPO 价值预训练
Decoupled-GAE

背景

  • 解决长序列中奖励衰减 导致价值更新不准确的问题。

核心思想

  • 对Policy和Critic的GAE计算解耦,使用不同的λ
  • 对Critic
    • λ=1,使用无偏MC回报来训练网络,消除自举带来的偏差
    • 让模型能学到长序列末端的真实奖励信号
  • 对Policy
    • λ<1(0.95),虽然引入一些偏差,但能有效降低方差
    • 加速策略收敛和保持训练稳定
  • 更多见 VC-PPO Decoupled-GAE

解决长度不一问题 (Length-Adaptive GAE + Token-Level Policy Loss)

Length-Adpative GAE 问题背景

问题

  • 解决固定GAE λ参数无法适应长短不同序列的问题。
Length-Adaptive GAE

目的

  • 动态调整GAE的λ参数适应不同长度
  • 如果λ=0.95固定,则存在奖励衰减问题
    • 当步数很长l=100时,0.95100≈=0.006,奖励信号权重接近0。

核心思想

  • 动态调整λ,与序列长度l做适应

  • 序列很长时λ变大, 接近1

    • 使最终奖励信号传播得更远,能看得越远,确保末端奖励信号不丢失,从而降低偏差
  • 序列很短时λ适当变小

    • 降低方差,使训练更稳定。
  • GAE 权重系数总和

    t=0λpolicyt=1+λ+λ2+λ3+=11λpolicy

具体做法

  • 总影响力应该与序列长度l成正比

    t=0λpolicyt=11λpolicy=αl
  • 长度自适应λ

    λpolicy=11αl
Token-Level Policy Loss

PPO Seq-Loss 缺点

  • 标准PPO是Sequence-Level Policy Loss,即2步平均

    • 序列内平均(inner average):对一个序列的所有token求平均,作为序列loss
    • 样本间平均(outer average):对所有序列的loss求平均
  • 例子见上文问题

  • 模型更关注学好短序列忽略长序列中token的错误学不好处理长序列问题,因为长序列权重被稀释

Lppo(θ)=1Gi=1G1|oi|t=1|ot|序列内平均min(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t)A^i,t,clip(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t),1ϵ,1+ϵ)A^i,t)

VAPO Token-Level Loss

  • 不做序列内平均,直接对所有token做平均每个token权重相同,不论它来自短序列或长序列。LVAPO(θ)=1i=1G|oi|i=1Gt=1|oi|所有Token直接做平均min(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t)A^i,t,clip(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t),1ϵ,1+ϵ)A^i,t)

解决奖励稀疏问题(Clip-Higher,正样本LM-Loss,分组采样)

Clip-Higher

标准PPO-Clip问题

  • 防止训练一步走太大而崩溃,把变化范围限制在[1ϵ,1+ϵ]
  • 1+ϵ成为探索天花板,太低不利于探索
    • 偶然探索极好、但之前概率极低的策略时,很可能会被clip掉
    • 天花板会限制奖励程度,使得策略更新过于保守不利于大胆探索

Clip-Higher:奖要重奖、罚要慎罚

  • 把上下界解耦为非对称 [1ϵlow,1+ϵhigh]

  • 提高上界ϵhigh=0.28:奖要重奖

    • 如0.2->0.28。为奖励信号打开更高天花板;当探索到好路径时,策略可以进行大幅度更新
    • 为惊喜提供更大奖励空间。
  • 保持下界ϵlow=0.2不变或较小:罚要慎罚

    • 如果ϵlow太大,模型在惩罚错误路径时可能过于激进
    • 直接把概率压到0,这样会扼杀多样性,导致熵崩溃
    LVAPO(θ)=1i=1G|oi|i=1Gt=1|ot|所有Token直接做平均min(ri,t(θ)A^i,t,clip(ri,t(θ),1ϵlow,1+ϵhigh)A^i,t)
正样本LM-Loss

目的

  • 最大化正样本生成概率

核心思想

  • 采样到正样本时,在强化学习策略更新基础上(正向奖励、PPO Loss、策略更新)。
  • 额外增加模仿学习,增加负对数似然强迫模型去学习和复现整个正确推理过程

NLL Loss

  • 最终策略loss:增加一项NLL Loss。
L(θ)=Lppo(θ)+μLNLL(θ)
  • NLL Loss最大化正样本的生成概率
  • 压榨正样本,不仅告知模型做对,且手把手教学如何做对的记住这个过程
LNLL(θ)=1oiτpositive|oi|oiτt=1|oi|logπθ(atst)
分组采样 Group-Sampling

目的

  • 生成对比性数据来提升学习。
  • 同等资源情况下,两种策略
    • 广度优先:在一个batch中,使用多个prompt,每个prompt rollout 1次。
    • 深度优先:在一个batch中,使用较少的prompt,每个prompt rollout 多次。

VAPO 选择深度优先策略

  • 对同1个问题,多次采样。可能得到一个混合成功、失败、部分正确的样本集。
  • 为模型训练提供了丰富的对比信号,增强了学习效果。

实验结果

实验配置

✍️实验设置

实验配置

模型

  • Qwen-32B

数据

  • 训练:数学
  • 评测:AIME24

Baseline/基础算法

  • PPO、AdamW

Base PPO 参数设置

  • Policy 学习率1e-6,Critic 学习率 2e-6
    • Critic 必须跟上 Actor的速率,才能提供准确的优势估计。
    • 如果更新太慢,提供的就是过时的估计。
  • Batch Size:8192个prompt,每个prompt采样1次
  • Mini-Batch Size:512
  • Critic Model:由RM初始化。
  • GAE:λ=0.95,γ=1
  • Clip:ϵ=0.2
  • 使用Sample-Loss

VAPO 设置

  • Critic:使用RM去做ValuePretrain,50个step。
  • Decoupled-GAE:
    • λcritic=1.0
    • λpolicy=11αlα=0.5
  • Clip-Higher:ϵhigh=0.28ϵlow=0.2
  • Token-Level Loss
  • 正样本 LM Loss
  • bs=512个prompt,rollout 16次,mini-bs=512

关键结果

🍑关键结果

关键结果
  • 性能好,AIME达60分。VAPO 超过 Critic-Free方法 GRPO(47)、DAPO(50),超过PPO(5)。
  • 训练效率和稳定性很高
    • 训练效率高:仅用5000步达sota,60%步数达DAPO性能。
    • 稳定性高。训练曲线比DAPO更平滑,熵保持稳定。稳定复现60-61分成绩。
  • 系统验证了7大组件消融实验
    • 最重要价值预训练解耦GAE。去掉后,分别暴跌49分、暴跌27分。
    • 重要组件:长度自适应GAE(贡献15p)、Clip-HigherToken-Level Loss(贡献7p)、正样本LM Loss(贡献6p)、分组采样(贡献5p)。
  • 价值模型具有优越性
    • 相比Critic-Free(GRPO/DAPO)等价值模型能提供更细粒度的学习信号,使得模型更好扩展推理长度,泛化更强。

VAPO 效果好

消融实验:

过程曲线

未来方向

⛳未来方向

未来方向
  • VAPO 扩展至其他领域
  • 发展Value-Based RL。解决价值偏差、长序列等挑战,进一步优化价值模型的训练和使用。
  • 构建通用和更鲁棒智能体。探索更复杂、 推理更长的任务,构建通用可靠agent。

(2503) VC-PPO (Seed)

摘要

问题背景

❓问题背景

问题背景

PPO 在Long CoT上会训练崩溃

  • 表现:回复长度急剧缩短性能下降
  • 根本原因Critic 初始化偏差奖励信号衰减

RM初始化Critic带来优势偏差

Critic 初始化带来的Value/Advantage偏差

标准PPO Critic 由 RM初始化

  • Critic 通过 RewardModel 初始化

RM和Critic 目标存在差异

  • RewardModel
    • 对完整序列打分,在<EOS>出现时做评估,<EOS>前面的token没被训过。
    • 不会对中间序列(不完整序列/写了一半的句子)进行打分
  • Critic Model
    • 预测从当前位置(写了一半的句子)出发,未来能获得的总奖励期望是多少。

从RM初始化的Critic:打分/优势存在偏差

  • 打分偏差

    • 靠前的、更不完整的句子状态,V(s) 打低分
    • 随着句子变长、越来越完整V(s)逐渐打高分
    • 任意时刻t,都有V(s)<V(st+1)
  • 优势偏差

    • 初期训练阶段,几乎没有KL惩罚,奖励为0TD Error 恒大于0,导致优势恒大于0
A^tl=0Tt1λlδt+l=l=0Tt1λl(rt+l0+V(st+l+1)V(st+l)>0)A^t>0
  • At是后面多个TD Error的加权求和,由于TD Error恒大于0

    • Token越靠前,累加正项越多,其最终优势值 A^t就越大
    A^t=δt+λA^t+1

若TD大于0,越靠前的token,优势值越大,证明过程

  • 优势值缓慢递减
δt>0A^t>λA^t+1A^t>λA^t+1>λ2A^t+2>λ3A^t+3>>λTt1A^T1
  • δtc>0

    A^t=l=0Tt1λlδt+l=l=0Tt1λlc=c1λTt1λ
  • 从公式可以看出,t越靠前优势值越大

如下图所示,前面的token价值小、后面的token价值大,TDError>0,最终导致前面的token优势大,最后导致模型回复长度急剧缩短。

GAE 奖励信号衰减

奖励信号衰减

更多详细推导见 GAE 奖励信号衰减

背景

  • 在LLM中,中间token奖励为0、仅最后1个token有环境奖励信号 rT
  • 真实外部信号rT 传递回第t个token时,会乘以权重(λγ)Tt,(λ)Tt权重容易变成0
A^t=(λγ)TtrT+(一堆只包含V(s)的项)

奖励衰减缺陷

  • λ<1 且 T-t 很大时,
    • 前面token收不到任何有效奖励信号权重接近0了。
    • Critic模型无法学习到他们的真正贡献

当λ<1时,奖励信号衰减权重在后面的token衰减很快,接近1时衰减较慢。

LLM as Token-Level MDP过程

马尔可夫决策过程 笔记

Token-Level MDP

符号定义

  • Prompt:x=(x0,,xm)
  • Response:y=(y0,,yT)
  • 词表:A

Token-Level MDP

  • 状态空间S:在时间步t,状态定义如下:

    st=(x0,,xm,y0,,yt)
  • 动作空间A:从词表A选择一个词token,比如选择动作a=yt+1

    yt+1=pθ(st)=πθ(st)
    • 论文里常用符号,q代表x,o代表y输出。也有用c代表当前状态
    πθ(otq,o<t)
  • 状态转移矩阵P:状态转移概率为1

    • 给定st执行动作a=yt+1,得到新状态st+1=(x0,,xm,y0,,yt,yt+1)
    p(st+1st,a)=1
  • 终止条件:达到EOS或最大长度。

  • 奖励函数r(s,a):在状态s执行动作a的奖励。

    • 通常仅在序列结束后,环境才会给一个序列级信号
    • GRPO和PPO有不同策略。
  • 初始状态分布d0:prompt x的概率分布,s0=(x0,,xm)

  • 优化目标

    Lθ(c)=Expθ(|c)[R(c,x)]

核心方法

ValuePretrain/价值预训练

📕核心方法

Value Pretrain 解决价值偏差

解决问题

  • RM初始化Critic带来的价值偏差、λ<1时带来的奖励信号衰减问题。

核心思想

  • 在正式PPO之前固定策略,使用 λ=1对Critic做一次预训练
  • 通过固定策略+MC回报把价值模型的学习从不稳定的RL过程变成 稳定的监督学习过程

具体做法

  • 固定策略模型(如πsft),使用GAE + λ=1退成MC采样,得到稳定梯度信号。

  • 单独训练Critic模型,使其准确预测回报,直到收敛,看2个指标

    • Value Loss预测价值和真实奖励之间的差距

    • Explained Variance/解释方差:衡量预测趋势和真实趋势的匹配程度。

      • 预测误差的方差除以真实方差。预测误差的方差:还剩下多少无法解释的波动性。
      Explaned Variance=1Var(YgoldYpred)Var(Ygold)(,1]=1
      • 接近1:最好情况,模型几乎解释了所有的数据波动。
      • 接近0:模型和简单预测所有结果的平均值差不多。
      • 负数:模型还不如直接预测平均值,预测甚至是有害的,预测趋势是相反的。
  • 正式PPO时使用预训练过的Critic模型,而不再使用RM做随机初始化。

价值预训练以后advantage不再有偏差模型输出长度也正常了

python
# 从SFT模型生成响应
responses = generate_responses(sft_model, prompts)

# 计算完整响应的奖励
rewards = reward_model(responses)

# 训练价值模型以预测每个token位置的奖励
for token_pos in range(len(response)):
    # 价值目标是序列的最终奖励
    value_target = rewards[response_idx]
    # 训练价值模型以预测每个位置的这个目标
    value_loss = (value_model(token_pos) - value_target)^2
    optimize(value_loss)

Decoupled-GAE/解耦GAE

Decoupled-GAE

解决问题

  • Critic偏好无偏估计λ=1追求准确性
  • Actor偏好低方差λ<1,需要平衡偏差和方差。如果方差太大,会导致训练不稳定
  • 训练RL的时候,成本很高,必须要降低方差、保证收敛。

核心思想

  • Critic和Actor使用不同的λ
  • Critic:λ=1确保奖励信号在长序列中无衰减地传播更好地学习价值模型
  • Actor:λ<1(0.95)有效降低优势估计的方差,使策略更新过程更稳定、收敛更快。
python
# 解耦GAE
critic_lambda = 1.0  # 确保价值学习的强信号传播
actor_lambda = 0.95  # 控制策略更新中的方差

# 使用 critic_lambda 计算价值模型更新的优势
critic_advantages = calculate_gae(rewards, values, critic_lambda)
value_loss = (values - (rewards + gamma * next_values))^2

# 使用 actor_lambda 计算策略模型更新的优势
actor_advantages = calculate_gae(rewards, values, actor_lambda)
policy_loss = -log_probs * actor_advantages

实验结果

实验设置

✍️实验设置

实验配置

实验数据

  • 数学数据
    • 训练:AIME(历史数据);评测:AIME(近2年)
  • 通用数据,验证泛化性,是否只在数学上生效
    • GPQA:问答
    • CodeForces:编程

模型

  • Qwen2.5-32B

训练策略/算法

  • 冷启动:使用一些推理数据,来冷启动训练模型,使得按照 <think></think>格式输出
  • Value Pretraining:λ=1,Freeze Policy,其他参数同标准PPO。
  • Decoupled-GAE:λcritic=1λactor=0.95。作者也研究了0.9-1.0参数。

Reward

  • Rule-Based:1 正确、-1错误

Baseline

  • 标准PPO
    • λ=0.95
    • 学习率 Policy 1e-6, Critic 2e-6
    • KL惩罚系数 0:因为是rule-based reward,没有hacking
    • 上下文长度:8k、16k

关键结果

🍑关键结果

关键结果
  • VC-PPO 有效果,解决了PPO 训练崩溃问题
    • 标准PPO在AIME崩溃,VC-PPO pass@1 从5.6 -> 41.9(8k) -> 48.8(16k)
  • Value-Pretrain和Decoupled-GAE 两者都很重要
    • 不解耦,性能会下降10个点(AIME)。
  • 价值预训练注入了知识,但并非训练的越久越好。50-100步有提升,但150步开始下降。
  • 价值和策略在方差-偏差平衡上偏好不同
    • Critic:偏好λ=1,低偏差、高方差
    • Actor:偏好λ<1,偏好低方差、哪怕有一些偏差。

AIME 有提升,非常优雅的提升曲线,并且超过GRPO。

价值预训练和Decoupled-GAE 都很有用。

未来方向

⛳未来方向

未来方向
  • Actor和Critic偏好不同,不应该视为一个整体进行优化,可以分开。
  • 根据回归loss和策略梯度两种不同的数学特性,为Actor和Critic设置更加差异化的优化策略,而不仅仅是调整λ。

(2501) REINFORCE++

摘要
  • paper, paper

  • 很不错的工作,REINFORCE思想 + PPO技术,简单有效。

    • Token-Level KL惩罚全局归一化
  • 在通用RLHF、小规模数学、推理和Agent任务上做了验证,REINFORCE++ 优于GRPO。

问题背景

❓问题背景

局部归一化存在问题

问题背景

现有RLHF方法存在一些问题

  • PPO:由于Critic,导致开销大、C不好训练
  • REINFORCE:简单,但方差大
  • GRPO:新的复杂性、不稳定性等。

GRPO/RLOO Prompt/Local-Level Normalization 存在问题

  • 存在理论偏差
    • 数学公式证明,分子(reward)分母(local std)不是独立的,存在理论偏差
  • 实际不稳定
  • 任务过拟合
    • 局部归一化:旨在激励模型战胜组内其他样本,而不是追求全局最优奖励。
    • 简单任务过拟合复杂任务难以提升
    • GRPO里的难度和长度偏差

核心方法

📕核心方法

REINFORCE++ (k>=1)

核心方法

三个原则

  • 简单:基于REINFORCE开发优化
  • 训练稳定性:Token-Level KL 惩罚,PPO-Clip Loss,归一化优势
  • 效率:critic-free,高效

整体目标

  • 和PPO一样,只是修改了优势估计
  • 每次采样1个回答,G=1
Lppo(θ)=1Gi=1G1|oi|t=1|ot|序列内平均min(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t)A^i,t,clip(πθ(oi,tq,oi,<t)πθold(oi,tq,oi,<t),1ϵ,1+ϵ)A^i,t)

优势估计:Token-Level KL 惩罚直接加入Reward

  • 奖励=真实轨迹线奖励 - KL惩罚
  • KL惩罚:累加t时刻后每一个token的KL惩罚,因是对未来产生影响
R(q,ot)=A^q,ot=r(o1:T,q)βi=tTDKL(i)=rTβi=tTlogπθold(ot|q,o<i)πθref(ot|q,o<i)

全局归一化

REINFORCE++ w/baseline (k>1)

REINFORCE++ w/baseline

背景

  • 多步RL场景

核心思想

  • 轨迹奖励 + Token-Level KL 惩罚

    R(q,ot)=r(o1:T,q)βi=tTDKL(i)
  • 局部基线:Local/Group Baseline/Mean

    Aq,ot=Rq,otmeangroup(Rq,ot)
  • 全局归一化

    Aq,otnorm=Aq,otmeanbatch(Aq,ot)stdbatch(Aq,ot)+ϵ
  • Loss

    L=L(Anorm)λJDLk2(θ)
  • KL散度使用K2: 低方差,更稳健

    k2=12(logπθπref)2

算法实验

实验配置

✍️实验设置

实验配置

任务

  • 通用RLHF
    • 2w 多样化Prompt数据集
  • 推理任务
    • 小规模数学数据:30 AIME 训练集
    • 逻辑推理:Knights and Knaves
  • 多步RL:python解决数学问题

模型

  • LLaMA3-8B、Qwen2.5-7B

算法

  • 核心:REINFORCE++、REINFORCE++ w/Baseline
  • 比较:GRPO、PPO、RLOO、ReMAX

关键结果

🍑关键结果

关键结果
  • 引入PPO技巧REINFORCE算法,大量实验表明REINFORCE++在人类对齐上有优势

  • 通用RLHF任务

    • REINFORCE++ 单样本和4样本的GRPO分数相当,回答更短token效率更高
    • KL散度更低、训练更稳定
  • 推理任务

    • 小规模数据集上REINFROCE++泛化性更好,GRPO则出现过拟合。
    • 逻辑推理任务上,随难度增加,GRPO性能急剧下降,REINFORCE++较为稳定
  • Agent 任务

    • 多步工具使用,REINFORCE++ w/Baseline 高于GRPO 高于PPO。24.1 > 22.58 > 21.85
  • 全局归一化:被LitePPO、ScaleRL、DLER等相继验证

通用RLHF

谜题数据

未来方向

⛳未来方向

未来方向
  • 更高效的优势估计方法
  • 自适应归一化策略
  • 扩展到多模态模型
  • 理论分析

(2402) RLOO

RLOO 摘要
  • paper

  • RLOO

    • REINFORCE + 留一法计算优势无需Critic和Ref模型
    • Trajector-Level:在整个序列做建模,而非单个token作为一个动作。
    • On-Policy 算法
  • 2个RLHF任务上,RLOO效果都优于PPOVanila PGDAFTDPO等。

问题背景

PPO复杂可能不是最优选择

❓问题背景

问题背景

人类对齐标准PPO阶段

  • SFT:高质量prompt-answer数据集微调
  • 训练RM:Pair、人类偏好
  • RL阶段:SFT作为初始策略,RM作为环境反馈信号。优化模型使其获得更高奖励。

问题

  • PPO成本高、复杂
  • RLHF场景下,是否真的需要PPO?

PPO 可能不是最优选择

  • 低方差环境
    • 预训练+SFT后的模型,方差低
    • 为降低方差,PPO引入Critic和优势估计,反而会带来偏差得不偿失
  • PPO-Clip 可能不必要
    • clip 防止策略更新步子太大导致崩溃。
    • 实际实验发现触发频率非常低,小于5%
  • 建模方式可能不恰当
    • PPO:每个词作为动作,前面的词作为状态
    • LLM:生成完整序列后才有奖励
    • 可以把生成整个序列看成一个单一动作,更自然和高效,可能更合适

核心方法

REINFORCE + 留一法计算基线

📕核心方法

REINFORCE Leave-One-Out

REINOFRCE

J(θ)=ExD,yπθ(|x)[(R(x,y)b)θlogπθ(y|x)]JREINFORCE(θ)=1Gi=1Gt=1|oi|(R(x,y)b)θlogπθ(y|x)

REINFORCE Leave-One-Out

  • 对一个Prompt,采样K/G次。计算优势时,基线使用其余k-1个的奖励平均值

    A(x,yi)=R(x,yi)1K1j=1,jiKR(x,yj)
  • 等同于减去平均回报基线

A(x,yi)=KK1(R(x,yi)1Kj=1KR(x,yj))
  • 和GRPO很像,但是不除以标准差

    A(x,yi)R(x,yi)mean(R)
  • 同策略算法无需重要性权重修正偏差。

整体优化目标

  • Trajectory-Level而非Token-Level
J(θ)=1Ki=1K(R(x,yi)1K1j=1,jiKR(x,yj))θlogπθ(yi|x)

算法实验

实验设置

✍️实验设置

实验配置

任务

  • 训练数据:2个公开rlhf数据集
    • TL;DR Summarize(文本摘要)
    • Anthropic Helpful and Harmless Dialogue(HH,对话)。
  • 评测数据

模型

  • Pythia-6.9B和Llama-7B

算法

  • RLOO
  • 对比:
    • PPO、Vanilla PG(简化版本PPO,λ=1,仍在token层面建模)
    • DPO、RAFT(生成多个样本,选择得分最高的进行SFT)

评估指标

  • 奖励分数:测试集上RM的分数
  • 模拟胜率:GPT4作为裁判,生成答案和基线回答之间做比较
  • 对齐税:是否损害了模型其他能力。困惑度衡量流畅性,ngram衡量多样性。
  • 鲁棒性:测试算法对KL系数和奖励噪声的敏感度

关键结果

🍑关键结果

关键结果
  • 简单基础PG方法优于PPO
    • 在所有数据集和模型上,Vanilla PG和REINFORCE的性能优于PPO。
      • 在Llama+HH数据集上,PPO胜率32.0%,REINFORCE达55.3%。
  • RLOO性能最佳(奖励分数+GPT4胜率)
    • 4个样本,摘要数据集胜率(RLOO 77.9% > PPO 67.6% > RAFT 73.2% > DPO 66.6%)
  • RLOO样本效率更高
    • RLOO使用2个样本性能就能达到甚至超过RAFT使用4个样本水平水平。
  • 建模完整序列是有效的
    • 在完整序列上操作的REINFORCE,性能与在token级别的Vanilla PG相当或更好
    • 同时实现更简单,计算开销更小。
  • RLOO鲁棒性更强
    • 更高KL惩罚或RM噪声时,RAFT下降明显,而RLOO则更稳健
    • 因为:RLOO梯度更新,考虑所有样本奖励。RAFT仅依赖奖励最高样本,一旦排序错误,学习就受到严重影响。

⛳未来方向

未来方向
  • 未研究奖励模型过优化/Reward Hacking问题。

(2017) PPO

PPO 笔记

总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025