
自 RLHF 提出以来,LLM+RL 的研究一直是热点,从最开始的对齐人类偏好到后来的训练复杂推理模型,RL 已俨然成为一个基础步骤和必要环节。笔者之前的文章中也多次讨论过相关内容,但主要侧重于算法原理和实现过程,但其中的很多根本性问题未做过多讨论,因此本篇将从经典算法到最新的算法展开,主要讨论以下问题:
-
• RLHF 的本质是什么,及其与 RL 和有监督学习(SL)的关系 -
• 当前的各种优化方法的优化点是什么,其立足角度和收益如何 -
• 使用 RL 训练逻辑推理模型,有哪些经验及注意事项
一、从 RL 角度再思考 Post-training
RLHF 是一种使用强化学习方法将 LLM 对齐人类的技术,并逐步延伸到复杂推理模型的训练中,在发展过程中也出现多种算法,包括 PPO,DPO,GRPO,RLOO,REINFORCE 及其衍生版本。在本节中,我们将试图从最基础的 PPO 算法出发,结合 RL 理论,试图从一个统一的视角来理解不同算法的本质、取舍及效果。
首先我们不妨来回顾一下 RLHF (PPO) 的工作流程,这是我们接下来讨论的框架和基础:
1.首先使用经典的有监督方法训练得到一个 SFT 模型,以作为 RL 训练的初始模型( )以及计算 KL 散度的参考模型( );
2.使用人工标注的偏好数据集训练奖励模型 , 最场景的方式是 Bradley-Terry 模型,即通过有监督学习将人类有偏好的结果赋予更高的分数;
3.进行 PPO 强化学习训练,该过程可分为2步:
采样阶段:
-
• 对每个提示 ,用 生成回答 ,并计算奖励 (包含KL惩罚项避免偏离SFT)。 -
• 计算优势估计 (常见的是GAE)和回报值,并将以上结果存入 experience buffer。
优化阶段:
-
• 策略更新:最大化PPO-Clip目标函数:
同时加入熵正则项鼓励探索。
-
• 价值函数更新:最小化价值函数损失
拟合回报值, 其中 表示状态 的实际回报值,可以估计为 。

1.1 RLHF 中的 RL 基础概念
RL 中有一些必要的概念与构成,如环境、状态、动作、奖励等,下面我们将 RLHF 中的各环节对应起来。

状态(State): 初始状态即由用户输入 prompt
动作(Action):对于语言模型来说,动作空间由模型词汇表中的所有token组成,即大小为 vocab_size
奖励(Reward):
-
• response level:策略 根据当前上下文生成 token,逐步构建的回答 , 在评估时,通常以最后一个 token EOS 的分数代替(这是最常见的做法,上图显示就是这种)。 -
• token level: 该方式基于一种认识:每一个 token 是一个 action,生成的完整 completion 构成一个决策序列,这种方式事实上与自然语言的特点并不相容,即人类通常不会逐字去评估一段话,而是看完一整句或整段后进行评估,因此这种方式采用的也比较少。
序列决策:经典 RL 处理的都是序列决策问题,即一次探索由多个交互(动作)构成。而在 RLHF 中,如果我们将 response 看做 action,那么 RLHF 实际上就是一种单步的、即时奖励的 RL。
环境(Environment): 在经典 online RL 中,环境是客观的、能够提供即时反馈,从而帮助模型进行更新;而在 RLHF 中环境实际上由策略模型和奖励模型本身构成,而奖励模型还是预先训练好的、静态的,从这个角度来说,RLHF 更类似于offline RL 或监督学习,而不是online RL。
策略(Policy): 在 RLHF 中,策略即 LLM 本身
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.2 基于策略梯度的更新方法
RLHF 中的算法都是基于策略梯度的 RL 算法,即通过深度学习模型为策略建模,输入某个状态,然后输出动作的概率分布,目标是寻找一个最优策略并最大化该策略在环境中的期望回报。
依据训练数据产生的方式,主流的 RLHF 方法可以大致分为两大类:
-
• On-Policy: 在训练过程中,模型主动生成自己的数据样本,进而根据模型当前状态持续探索和更新,这种方式的瓶颈主要在数据生成过程(耗费计算资源和时间),典型方法的如 PPO -
• Off-Policy: 训练依赖于预先收集的数据(或由另一个策略生成的数据),无需实时生成,这种方式样本效率高,典型方法如 DPO
接下来以 On-Policy 的 PPO 算法为例来回顾 RLHF 中策略更新的核心过程,一个典型的 PPO 算法包括以下组成:
-
• Actor: 即策略模型,用以生成输出,并根据反馈进行更新 -
• Critic: 扮演教练的角色,为每个生成的输出提供即时反馈,并随着模型能力的提升与 Actor 模型同步更新 -
• Reward Model: 作为裁判,分配最终得分或偏好评估,预先由偏好数据训练得到,在PPO训练过程中保持不变 -
• Reference Model: 作为策略模型的参考,防止演员模型偏离原始预训练分布太远
接下来简要回顾策略优化的过程,强化学习中的目标是优化策略以最大化期望回报
策略的回报定义在所有可能的轨迹上
轨迹 的概率可以表示为
其中轨迹总回报被定义为
在深度学习中,我们通常通过最小化损失函数并使用随机梯度下降来更新参数。然而,由于我们的目标是最大化回报,我们使用随机梯度上升来更新策略
关于 的推导可以参考 深度强化学习(五):策略梯度的方法[1] 在此直接给出结果
其中 可以有以下多种形式:
(1) :轨迹的总回报
(2) : 动作 之后的回报,无偏但方差较大
(3) : 增加偏置项的改进版本,以减小方差
(4) :动作价值函数
(5) : 优势函数,把状态价值函数 作为基线,从 函数减去这个 函数则得到了 函数,RLHF 的主要采用形式,且PPO, GRPO, RLOO等不同算法的差异也主要体现在这里
(6):时序差分残差,利用 公式即可得到
以上几种方式更加深入的讨论和区别,及其在不同算法上的使用,将在第二节进行深入讨论。
1.3 重要性采样与梯度裁剪
在策略梯度中,除了 外,另一个关键的部分即 采样,如果按照这种方式进行更新,则在每次更新参数后都需要重新采样轨迹,而不能进行多步迭代后,因此样本效率比较低,那么该如何提高样本效率呢? 答案是重要性采样 (Importance Sampling) 。
重要性采样将已知分布的样本转换为未知分布的样本,如下所示 p(x) 为未知分布,而 为已知分布:
这样就将 on-policy 的形式转化成了 off-policy 的形式,则策略梯度可改写为
这样就从 采样变成了从 采样。

现在我们尝试基于以上过程推导出损失函数。假设当前策略为 ,参数为。我们考虑如何借助当前的找到一个更优的参数,使得。具体来说,由于初始状态的分布和策略无关,因此上述策略下的优化目标可以写成在新策略 的期望形式:
则新旧策略的目标函数之间的差距为:
只要我们能找到一个新策略,使得
就能保证策略性能单调递增,即实现策略更新。由于上式是通过 进行采样的,同样可以采用重要性采样,这样就可以得到替代的优化目标:
在 PPO 中,可以进一步简化优化目标,即
根据拉格朗日乘子法将 KL 散度以惩罚项的形式放到目标函数中,使之变成一个无约束的优化问题
PPO 的另一种截断的形式更加直接,它在目标函数中进行限制,以保证新的参数和旧的参数的差距不会太大 (这也是最常见的形式),即:
二、主流算法的思路及其比较
在第一节中,我们简要回顾了 RL 在 Post-traing 中的核心过程,但是在 1.2 小节中留下了 未做深入讨论,事实上这也是当前 REINFORCE, ReMax, RLOO, PPO, GRPO, Dr.GRPO 的差异所在。在进行比较之前,我们需要确定几个概念,弄清了这几个关键概念的计算过程,也就理解了不同算法的差别。
Return (回报):从时间步数 开始的回报 为轨迹的总(折现)奖励 由此还可以得到其递推关系 。
状态值函数定义为在策略 下的当前状态期望回报
$$
V_\pi(s)=\mathbb{E}_\pi\left[G_t \mid s_t=s\right]
$$
动作值函数被定义为在策略 下的当前状态下动作的期望回报
以上二者的关系为,在使用策略 中,状态 的价值等于在该状态下基于策略 采取所有动作的概率与相应的价值相乘再求和的结果:
使用策略 时
Advantage(优势) 表示相对于基线的差异,通常把状态价值函数 作为基线,从 函数减去这个 函数则得到了 函数,即
2.1 PPO 与 VC-PPO
优势函数A很难精确计算,对于如何估计优势函数,目前比较常用的一种方法为广义优势估计(Generalized Advantage Estimation,GAE),接下来我们简单介绍一下 GAE 的做法。
首先,用 表示时序差分误差,其中 V 是一个已经学习的状态价值函数。于是,根据多步时序差分的思想,有:
然后,GAE 将这些不同步数的优势估计进行指数加权平均:
其中, 是在 GAE 中额外引入的一个超参数,
-
• 当 时, ,也即是仅仅只看一步差分得到的优势; -
• 当 时, ,则是看每一步差分得到优势的完全平均值。
这样就得到了完整版本的 PPO 损失函数的公式,即
下面通过一个例子来说明主要元素的计算过程

可以看到,PPO 是 token-level 的动作,而其奖励确实 response-level(只在 EOS 位置有奖励值),这种方式实际上会导致奖励非常稀疏。
主流框架的实现可参考:
-
• trl/ppo_trainer[2] -
• OpenRLHF/get_advantages_and_returns[3] -
• verl/compute_gae_advantage_return[4]
标准的 PPO 算法直接来源于经典 RL ,对语言序列的特点考虑的有限,特别是在长文本上,对此 VC-PPO 做了一些特异性修正,下面理解一下其核心点:长序列中的值模型偏差及其消除
在 PPO 中,VM 是由 RM 初始化的,而由于 reward 是 response-level 的,即取的是 <EOS> 位置的分数,而分配给靠前token 的分数较低;而 value 是 token-level 的,在给定策略下估计所有在之前的 token 的预期累积奖励。在早期训练阶段,由于 GAE 的反向计算,每个时间步 t 都会存在正偏差,并沿着轨迹累积。
在 GAE 计算过程中,分配给 token 的奖励在传播到前面的标记时以 (通常为0.95)的速率衰减。传播到 位置token 的奖励信号是 。当 很大时,产生的奖励信号基本上为零。而如果设置 则不会出现这种衰减。
在经典 RL,每一步的 action 都能得到奖励值,累积奖励具有高方差,导致收敛速度慢,因此使用 GAE 与 λ=0.95 ,即认为当前的步骤更加重要,未来的步骤折现需要打一个折扣。而在 RLHF 中,一个奖励模型或基于规则的评分机制提供轨迹级别的反馈,这些反馈是非累积的且定义明确的值。
为了平衡以上问题,VC-PPO 提出了一种长度自适应更新策略,确保 TD 误差在短序列和长序列上分布更加均匀,即
这种方式可以更加灵活有效地处理不同长度的序列。
2.2 RLOO
RLOO核心实现细节在于,它使用批次中其他样本的平均奖励来计算基线,而不是平均所有奖励。具体来说,在每个时间步 ,我们从 采样 个输出样本,因此对于一个 prompt 来说,其基线可以定义如下:
在此情况下,其优势函数为:
下面通过一个例子来说明主要元素的计算过程

可以看到 RLOO 与 PPO 的计算过程明显不同,主要体现在:
-
• PPO 的计算过程是 token-level 的(即将 token 看做 action),而 RLOO 的计算过程是 response-level 的(即将 response 看做 action) -
• RLOO 没有 PPO 中的 value model(critic) ,而需要对每个 prompt 产生多个输出,即显存占用变少而产生样本变多; -
• PPO 使用 GAE 的方式计算 A 函数,而 RLOO 通过与基线的差值来计算 A 函数
当然,RLOO 也可以通过 token-level 的方式进行计算,更多实现可参考:
-
• trl/rloo_trainer (token-level & response-level)[5] -
• OpenRLHF (token-level)[6] -
• verl/compute_rloo_outcome_advantage (response-level)[7]
2.3 GRPO 与 Dr,GRPO
DeepSeek提出的 GRPO 基本上结合了 PPO 与 RLOO 的多采样技巧, 其通过简化值估计并将相同的价值分配给每个 token(即在提示的完成中,每个 token 都分配相同的价值,而不是标准值函数中的折扣奖励)来实现这一点,然后通过蒙特卡洛估计优势或基线。
具体来说,对于给定的prompt s 的一组多个相应 其损失函数可写成
同样可将其拓展为 token-level 的损失函数
其中第 个response 的优势计算方式如下:
直观地说,GRPO 的更新是在批次内比较单个问题与多个答案,这是一种非常简单的方式来计算优势,即特定动作相对于给定状态的平均动作有多好。相对于 PPO,GRPO 通常使用每个提示的样本数量要高得多。
GRPO 的优势计算存在偏差权衡。通过标准差进行归一化会奖励那些在批次中答案正确性变化较小的提问。对于几乎全部正确或全部错误的答案,标准差会较低,优势会较高。

Dr. GRPO 提出在这种情况下移除标准差项,但这会以降低那些全部错误但有少数正确答案的提问的权重为代价,这可能会被视为有价值的信号。
Dr. GRPO 移除了标准差归一化项。这解决了对低奖励方差问题(即几乎所有答案都是正确或错误的)的偏差,在常数缩放因子下等同于 RLOO 估计
回顾一下 RLOO 的优势估计
则有以下缩放等价性
关于 GRPO 还有一个细节是关于 KL 散度的,即在通常的 GRPO 实现中,KL 并不直接作用为 reward 的惩罚项,而是通常直接作用到损失函数中 (DAPO 与 Dr. GRPO 证明KL并非必须项),即
下面通用通过一个例子来说明其主要元素的计算过程

主流框架的实现可参考:
-
• trl/grpo_trainer[8] -
• OpenRLHF/grpo & dr_grpo[9] -
• verl/compute_grpo_outcome_advantage[10] -
• Dr_GRPO/compute_advantages[11]
2.4 REINFORCE 与 ReMax
前边介绍的方法都一定程度使用了一些假设条件,同时由于训练成本高昂,很难同时训练多种方法进行比较选择,那么使用是否有一种 baseline 作为参照呢?REINFORCE 就是这样一种大道至简的方法。
事实上,REINFORCE 的 A 函数计算方式与 Dr.GRPO 完全一致(也不需要 value 模型),即
另一方面,reward 的计算方法(使用 KL 惩罚项)即重要性采样与clip 又与 PPO 保持一致,因此这是一种非常理想的基线方法。
在 PPO 中,计算 GAE 需要状态值函数,这在LLM训练后难以准确获得,并且存储时占用显存,训练时计算量大。ReMax 通过在每个时间步 即时采样贪婪轨迹的回报来消除对 的需求。ReMax使用贪婪生成的回答(greedy response)的奖励作为基准值(baseline value)来构建梯度估计器,具体方式如下:

2.5 DAPO 与 VAPO
DAPO 与 VAPO 都是近期字节 seed 团队提出的 SOTA 的 RL 方法,针对现有方法及特定场景提出了很多有价值的技术点,下边我们来一看究竟。
DAPO 对 GRPO 进行了 4 项修改,以更好地适应需要长序列和增加新、未充分利用的标记概率的推理语言模型,其修改后的损失函数为
其中
接下来分别简要介绍其 4 处主要的改进点:
(1)提高探索:使用两个不同的 clip 超参数 和
在原始的 PPO 算法中,使用 clip 是为了让策略在有限范围内探索,以避免波动过大。在 LLM 的训练过程中,这种做法可能会导致熵坍缩现象:随着训练的进行,策略的熵迅速下降,某些组的采样响应几乎相同,这就影响模型能力的进一步提高。
RL 的关键即探索和利用的平衡,从 token-level 的视角来看,如果取 ,有两个动作
此时如果更新概率 即会被截断,此时低概率的 token 增加的范围非常有限,因此将 的上下限解耦,增大 可以有效提高LLM的探索能力(特别是低概率 token 上)。
另一方面,为什么不扩大 呢?如果 也增大,即允许 更大程度接近 0,这样会导致采样空间的压缩。
(2)动态采样,有效学习
在 GRPO 中,如果一个 prompt 过于简单或者过于困难,导致一组的输出全对或者全错,那么这组的优势为零,进而导致梯度为零,策略无法更新,这样的话样本效率比较低。过滤掉这类样本将有效提高模型训练效率,具体做法即损失函数的约束条件。
(3)样本区分:token-level 损失
在 GRPO 中,损失是样本级的,即首先在每个样本内按 token 平均损失,然后跨样本汇总损失,这样每个样本在最终损失计算中被赋予相同的权重。这样对于长输出,可能会带来以下影响:
-
• 高质量长输出:可能会导致模型无法有效学习其中的推理模式; -
• 低质量长输出,如乱码重复,也无法进行有效惩罚,导致熵和长度不健康增加;因此DAPO增加长度的平均项,使无论奖励出现在哪个长度的响应中,该模式都将被同等程度地促进或抑制。
(4)减少噪声:超长过滤
在样本生成过程中,通常会设置一个最大长度,超过该长度的样本会被截断,被截断的样本通常没有最终的结果,因此也无法做出准确评估,这就会造成训练过程的噪声。DAPO 过滤掉了这类样本,显著提高了训练稳定性及性能。
在前文中,我们已经介绍了主要的 LLM+RL 训练方法,包括:大本大宗的 PPO,炙手可热的 GRPO,作为基线的 REINFORCE,修正主义的 DAPO。那么是否有一种方法能够集以上方法之大成呢?我想当前 VAPO 算是一个,这么说的原因体现在:
-
• 从 PPO 继承了损失函数的基本形式,特别是对于值函数的利用参考了 VC-PPO -
• 从 GRPO 中继承了 Group-Sampling -
• 从 DAPO 中继承了 Clip-Higher此外,VAPO 还有一个重要贡献是:稀疏奖励信号及其处理
在 RLHF 中,奖励信号本来就是稀疏的(只在 EOS 位置有奖励值),而基于验证器的奖励模型通常提供二元反馈(0 或 1),这种反馈比 RM 输出的连续值更加稀疏。在复杂推理场景中,CoT 显著延长输出长度,不仅增加计算时间,还降低获得非零奖励的频率。在策略优化中,具有正确答案的采样响应可能极为稀缺且宝贵。这就会遇到 RL 最常见的探索-利用困境:
-
• 一方面,模型必须保持相对较高的不确定性。这使它能采样各种不同的响应,增加针对给定提示生成正确答案的可能性。 -
• 另一方面,算法需要有效地利用通过艰苦探索获得的正确采样响应——以增强学习效率。为了解决这一问题,VAPO 除了继承了 DAPO 中的Clip-Higher 和 Group-Sampling,还提出了一个正例 LM 损失。在复杂推理任务的强化学习背景下,一些任务表现出显著的低准确率,大多数训练样本都给出错误答案。传统的策略优化策略在抑制错误样本生成概率时,在强化学习训练过程中效率低下,因为试错机制会带来巨大的计算成本。鉴于这一挑战,当策略模型采样到正确答案时,最大化正确答案的效用至关重要。为了应对这一挑战,通过在强化学习训练过程中对正确结果采样引入额外的负对数似然(NLL)损失
其中 表示正确答案的集合。最终的负对数似然损失通过权重系数 与策略梯度损失相结合,共同作为更新策略模型的指标:
通过这种方法大大提高了强化学习训练过程中正样本的利用效率。
三、从理论角度再思考 LLM + RL
从前文的讨论可以看到,与 RL 的经典场景不同,使用 RL 训练 LLM 显得比较“拧巴”,其根本原因就是语言本身的特点及其建模过程导致的。那么我们是否可以从更高的角度来思考这一问题呢?
3.1 DPO:有监督对齐
在上节中,我们详细讨论了 online 的学习过程,以 PPO 为例,即由策略产生样本,在RM(裁判)和 VM(教练)的指导下进行训练,其核心在于训练数据是实时产生的。而与之相对,DPO 则是直接从优化目标求解最优对齐模型,其核心在于融合策略和奖励的学习,使之可以在一个步骤中通过有监督方式得到。
回顾一下,奖励模型的损失函数:
PPO 损失函数:
DPO 损失函数可以看做二者的融合:
注意到 DPO 没有对策略的采样过程,而利用预先收集的比较数据,直接根据偏好比较优化策略。通过这种方法,我们可以绕过单独训练奖励模型,直接使用标注的成对偏好数据一次性训练对齐模型 ,而这是典型的静态的有监督方法。
尽管这种方式比较简单,对计算资源要求较少,但其实际效果常常不如 PPO,主要局限性体现在:
评估与生成之间的脱节
DPO 的训练过程仅让模型学会“评估”,而没有融入实际对弈所需的在线生成过程。相比之下,PPO 通过在线生成和试错来学习,将评估能力转化为生成能力。没有这种在线探索,仅用 DPO 训练的模型可能在离线数据上得分很高,但在实际生成过程中表现不佳。
离线训练的局限性
RLHF 本质上是一种在线学习方法,因为它需要持续纠正模型现有的知识。然而,DPO 完全是离线的;它迫使模型仅依赖于标注者认为“正确”的,并遵循预定的最优路径,几乎没有探索的空间。在实践中,通常使用诸如在首选响应上进行初始监督微调(SFT)或用多样化的输出增强偏好数据等技术,以引入一些在线学习和探索的元素。
要求高数据质量
由于 DPO 训练完全依赖于离线偏好数据,其有效性高度敏感于这些数据的质量和覆盖范围。如果训练数据不全面或与实际的生成分布不匹配,模型可能会生成具有正确相对比例的正负例子的响应,但绝对概率可能会被稀释,甚至可能出现训练数据中不存在的输出。
当然 DPO 也可以改造成在线的形式,即 online DPO[12] , 即对于一个输入 , 可以使用当前策略产生两个输出 , 然后引入一个一个标注器将样本标注为 , 然后进一步训练 DPO,该过程如下图所示

3.2 统一视角理解从 SFT 到 RL
在前文中,我们主要从经验的角度去讨论和比较各种方法,那么如果从第一性原理的角度,如果更加深刻理解这一问题呢?本节将围绕此点展开,以下内容主要参考 All Roads Lead to Likelihood: The Value of Reinforcement Learning in Fine-Tuning[13]。
从本质上来说,无论是SFT,PFT,RL,后训练的目标可以统一表述为
其中 ,
理想情况下,如果 能够覆盖所有轨迹对,就无需第二项,但在真实场景中,由于样本数量的限制,故添加第二项作为正则化。通常情况下,会把起始模型当作, 但随着训练的进行,的能力不断增强,此时反而成了限制进一步提高能力,因此也可以使用 本身的熵
作为正则化项

按照以上理论,对于经典 SFT,其目标即在离线数据上通过最大似然估计(MLE)直接优化策略参数。而对于在线策略,该过程包括两个阶段:
-
• (1)通过 MLE 拟合奖励模型(RM,空间 ); -
• (2)使用 RM 为强化学习(RL,空间 )过程提供反馈。
其中RM的训练通常采用 BT 模型,即
如果 RM 是局部的,我们可以通过用 的对数概率之和替换 来通过 MLE 拟合策略
由此可知,离线 PFT 方法如 DPO 本质上是一个在局部奖励模型上的轨迹级分类问题。
进一步可推出,当 (即覆盖了相同的奖励函数集合),此时 RLHF 等价于 MLE (DPO)
也就是说从信息论的角度,以上方法无法区分, 但是,以上假设条件过于理想,在真实情况下的经验是 online policy (如 PPO) > offline policy (如 DPO) > SFT, 那么这之间的差异是由什么导致的呢?
从计算机科学的角度来看,将策略视为生成器,将奖励模型视为验证器,奖励函数(可以用深度更低的电路表示)比最优策略更容易表示。因此反向强化学习(即从演示中学习奖励模型并通过强化学习解码)优于行为克隆(即通过最大似然估计直接学习策略)的方法,即在线学习是更优的策略学习。从端到端来看,在线微调只需要在 中搜索策略,而不是像离线微调那样在整个 中进行搜索。
引用链接
[1]
深度强化学习(五):策略梯度的方法:https://zhuanlan.zhihu.com/p/450690041[2]
trl/ppo_trainer:https://github.com/huggingface/trl/blob/main/trl/trainer/ppo_trainer.py#L506[3]
OpenRLHF/get_advantages_and_returns:https://github.com/OpenRLHF/OpenRLHF/blob/main/openrlhf/trainer/ppo_utils/experience_maker.py#L569[4]
verl/compute_gae_advantage_return:https://github.com/volcengine/verl/blob/main/verl/trainer/ppo/core_algos.py#L66[5]
trl/rloo_trainer (token-level & response-level):https://github.com/huggingface/trl/blob/main/trl/trainer/rloo_trainer.py#L432[6]
OpenRLHF (token-level):https://github.com/OpenRLHF/OpenRLHF/blob/main/openrlhf/trainer/ppo_utils/experience_maker.py#L539[7]
verl/compute_rloo_outcome_advantage (response-level):https://github.com/volcengine/verl/blob/main/verl/trainer/ppo/core_algos.py#L197[8]
trl/grpo_trainer:https://github.com/huggingface/trl/blob/main/trl/trainer/grpo_trainer.py#L927[9]
OpenRLHF/grpo & dr_grpo:https://github.com/OpenRLHF/OpenRLHF/blob/main/openrlhf/trainer/ppo_utils/experience_maker.py#L539[10]
verl/compute_grpo_outcome_advantage:https://github.com/volcengine/verl/blob/main/verl/trainer/ppo/core_algos.py#L107[11]
Dr_GRPO/compute_advantages:https://github.com/sail-sg/understand-r1-zero/blob/main/train_zero_math.py#L293[12]
online DPO:https://arxiv.org/pdf/2402.04792[13]
All Roads Lead to Likelihood: The Value of Reinforcement Learning in Fine-Tuning:https://arxiv.org/pdf/2503.01067
(文:机器学习算法与自然语言处理)