专栏名称: PaperWeekly
PaperWeekly是一个分享知识和交流学问的学术组织,关注的领域是自然语言处理的各个方向。我们热爱知识,分享知识,希望通过我们大家的努力为自然语言处理的发展做出一点点贡献。我们每周会分享一期特定话题的论文笔记和本周值得读的相关论文。
目录
相关文章推荐
科研大匠  ·  永久解决DeepSeek“服务器繁忙”问题 ·  9 小时前  
PaperWeekly  ·  北京/杭州内推 | ... ·  昨天  
研之成理  ·  Science:烯中除炔,铋有奇效! ·  3 天前  
募格学术  ·  河南大学公布学术副校长海霞的排名 ·  3 天前  
51好读  ›  专栏  ›  PaperWeekly

从Policy Gradient到REINFORCE++,万字长文梳理强化学习最新进展

PaperWeekly  · 公众号  · 科研  · 2025-02-17 22:05

正文


强化学习的核心目标是通过不断调整策略(即根据当前状态选择动作的规则),使智能体表现得更好。在强化学习中,有几个关键元素至关重要:首先是奖励模型和价值函数,它们用于评估每个动作或策略的优劣,从而决定模型优化的方向;其次是更新规则,主要涉及损失函数的约束项,它决定了策略更新的力度和稳定性。

本文首先介绍了 三类基础的强化学习算法 ,这三类算法主要在奖励计算和更新规则上有所不同,是 RLHF(人类反馈强化学习)的核心。接着,重点讨论了 四种改进方法 :REINFORCE、RLOO、PRIME 和 REINFORCE++,它们通过引入 EMA、在线采样、过程奖励等技术,使奖励更加无偏并提高密集成都。

最后,介绍了 GRPO(Group Relative Policy Optimization)方法,它在奖励函数的计算和策略更新规则上做出了进一步的改进,以提升训练的稳定性和效率。



Policy Gradient

最早的 Policy Gradient Methods 就是直接优化策略的一种方法。简单来说,策略梯度方法通过计算“策略梯度”(表示如何调整策略模型以提升表现)来更新策略,从而让智能体在长期内获得更高的奖励。
具体步骤是:
1. 计算策略梯度: 通过当前策略和动作的效果(优势函数),我们可以计算出一个梯度(action 对于 policy model 的梯度),告诉我们如何调整策略。
2. 优化策略: 通过梯度上升的方法调整策略参数,以提升智能体的表现。
3. 反复更新: 这个过程是一个 反复的采样和优化过程 ,每次都会根据新的数据调整策略。
策略梯度的定义如下所示:

表示在状态 下,采取动作 的概率, 是策略的参数,控制策略的行为。
是策略梯度,表示策略参数变化时,策略的行为(即动作选择概率)如何变化。
是优势函数的估计值,它表示动作 相对于当前策略的“好坏”。如果 ,说明该动作相较于平均水平是好的,应该增加这种动作的概率;如果 ,则说明该动作不好,应该减少其概率。
表示对多个样本的平均,意思是我们在进行多次实验后,计算这个期望值。

这是我们的 目标函数 ,我们希望最大化这个目标。简而言之,就是通过调整策略参数 ,使得智能体选择的动作(那些优势高的动作)变得更加可能。
对于 LLM,也就是直接将 outcome reward 作为每个 token 的 advantage。例如有两个 sample,分别为错误和正确,第一个 sample 有 5 个 token,它的 advantage 矩阵为 [0,0,0,0,0];第二个 sample 有 6 个 token,它的 advantage 矩阵为 [1,1,1,1,1,1],不断提升正确样本的 token 概率。
这里的问题在于,如果我们对同一批数据做多次优化,可能会导致策略的更新过大(比如参数调整过猛)。这样会使得策略发生剧烈变化,导致性能反而变差。因此, 过度更新 会导致学习不稳定。

图片

TRPO (Trust Region Policy Optimization)

TRPO(Trust Region Policy Optimization)是一种改进的策略优化方法,核心思想是限制策略更新的幅度,避免策略变化过大导致学习不稳定。简单来说,TRPO 通过引入“信赖区域”的概念,确保每次更新后的策略不会偏离旧策略太远,从而保证学习过程的平稳性。他的目标函数如下所示:

通过最大化这个目标函数,TRPO 试图找到一种策略,使得新策略在优势动作上的概率更高。同时,KL 散度用于衡量当前策略和旧策略之间的差异。这个约束确保了策略的更新不会过于激进。
当然直接求解这个问题是很困难的,TRPO 在其具体实现中做了一步近似操作来快速求解,作者对目标和约束进行了泰勒展开,并分别用一阶和二阶进行近似,最后得出的结果需要用到 hessian 矩阵 H 和 g(目标函数对 policy 的梯度)。

这对于 LLM 来说是不可接受的,因此作者又用了共轭梯度的方法避免存储 hessian 矩阵,总体优化比较复杂,而且因为 KL 散度和优化目标都是泰勒近似,很难保证 KL 散度的约束一定被满足。因此每一轮迭代 TRPO 还要通过先行搜索找到一个整数 i 来强行使得 KL diververge 的约束被满足。
这里就有一个有趣的问题,就是为什么选择把 KL 散度作为一个 hard constraint 而不是一个目标函数的惩罚项。

实际上原作者是证明了,这种形式的惩罚项会形成一个 lower bound 来限制策略的变化。但是作者认为如果使用惩罚项,𝛽 系数需要针对不同任务进行调整。在一个任务中,合适的 𝛽 值可能在学习的不同阶段有所不同。固定的 𝛽 值在某些情况下可能会导致策略更新过大或过小,从而影响训练效果。


图片

PPO (Proximal Policy Optimization Algorithms)
TRPO 算法在很多场景上的应用都很成功,但是我们也发现它的计算过程非常复杂,每一步更新的运算量非常大。于是,TRPO 算法的改进版——PPO 算法在 2017 年被提出,PPO 基于 TRPO 的思想,但是其算法实现更加简单。并且大量的实验结果表明,与 TRPO 相比,PPO 能学习得一样好(甚至更快),这使得 PPO 成为非常流行的强化学习算法。
从这里开始我们使用 LLM 的 notion 方便理解,即 q 作为 state(输入token),o 作为 action,输出 token,policy model 即 LLM 模型。传统的 PPO 由如下公式训练,直接将 KL divergence 的 term 替换成了 CLIP 的操作。

3.1 优势函数(Advantage Function)

优势函数 衡量了在当前状态下选择某个动作的优越性,相对于其他动作的预期回报的提升。实际中,优势函数通常是通过 累计折扣奖励 减去基准来实现的。公式为:

其中, 折扣因子 ,决定了未来奖励的权重。 是环境在时间步 提供的奖励。 基准 (baseline),用来减小优势函数的方差,常见的选择包括直接使用值函数或奖励的 群体平均

3.2 值函数(Value Function)

尽管 蒙特卡洛估计 (MC 估计)是无偏的,但它因为依赖所有未来的动作和奖励,而可能受到很高的方差影响。为了降低方差,引入了 值函数 ,它预测从某个状态出发,智能体能够获得的累计奖励。 值函数 有助于在计算优势函数时减少波动。
常见的方式是使用 广义优势估计(GAE) 来减少方差,同时保持估计的偏差在可接受范围内。GAE 公式如下:

其中, 时序差分(TD)误差 是值函数,表示每个状态的预期回报。 控制偏差和方差的折衷。
PPO (Proximal Policy Optimization)等 actor-critic 算法中,值函数和策略模型是一起训练的。

图片

REINFORCE在LLM对齐中的应用

在 LLM 应用中,奖励 r(x, y) 通常只在完整序列生成后获得。这种方法允许使用 REINFORCE 估计器 来优化整个序列的奖励目标:

为了在保持无偏估计的同时减少方差,引入了一个基线 b:

一个简单有效的基线是训练过程中所有奖励的 移动平均值

其中 是训练步数, 是第 步的 prompt-completion 对。

图片

RLOO ( REINFORCE Leave-One-Out )
移动平均基线 虽然简单,但可以通过使用 多个在线样本 来进一步改进。

REINFORCE Leave-One-Out (RLOO) 估计器利用多个样本来 减少方差

  • 每个样本的奖励可以作为其他样本的基线;

  • 策略更新通过对每个样本的梯度估计取平均来实现,从而得到一个 方差减少的蒙特卡洛(MC)估计
RLOO 估计器的定义如下:

其中 是从 中生成的 个独立样本。
RLOO 为每个样本创建了一个 即时的、无参数的基线 ,比 更有效, 但需要额外的采样时间。

图片

PRIME

6.1 稠密奖励信号的重要意义

PPO 的方法可以自然地将稠密奖励融入到优势函数中,但在大多数LLM实践中比如 RLOO 和 Reinforce,实际可用的奖励模型(ORM)通常是 输出奖励模型(Outcome Reward Models) 。这意味着通常只有 最后一个 token 才会得到有意义的奖励,而 中间的 token 不会获得奖励。
例如,在这种设置下, 对于 是非零的,公式(2)变为:


这种简化形式虽然更易实现,但 奖励稀疏性 问题会导致许多问题:

1. 错误过程的解决方案: 励只出现在生成过程的最后,可能会导致策略学习出错的过程(如不正确的生成过程),但最终得到正确的答案。

2. 样本效率降低: 由于奖励仅在最后提供,智能体需要较长的时间来感知并学习每个 token 对最终结果的影响,导致样本效率下降。

3. 信用分配问题(Credit Assignment Problem): 这种奖励结构使得很难追溯每个 token 的贡献,尤其在生成过程中,智能体需要学习如何将奖励归因于先前的生成步骤。

这些问题在 复杂任务 中尤为突出,因为这些任务可能需要更多的思考和执行步骤,因此需要 稠密奖励 (即在每个 token 生成时提供反馈)。使用采用稠密奖励模型(PRM)来缓解奖励稀疏性问题是比较直观的,但是难以训练,而且成本较高。

6.2 PRM-free的dense reward

PRIME 的核心思想是应用隐式过程奖励,这些奖励可以从隐式奖励模型(Implicit PRM)中推导出来,而这个模型只需要结果标签(outcome labels)来训练。

推理阶段: 在推理阶段,使用隐式奖励模型来计算每个 token 级的奖励,这里的 implicit reward 是和 ORM 的唯一区别,公式为:


这里, 是在生成过程中当前时刻的 token, 是该时刻之前生成的 tokens。通过这种方式,隐式奖励模型在生成每个 token 时提供了奖励反馈。
6.3 优势估计
因为现在我们可以为每个 token 提供 reward,那么就可以进一步考虑如何利用这些奖励估算优势,从而指导策略更新。PRIME 发现 蒙特卡洛估计 (MC)比 广义优势估计(GAE) 更简单,效果也更好,因此选择 MC 作为默认选择。
对于每个生成的样本,优势函数通过 leave-one-out baseline 来估算进一步减小方差:

其中, 是第 个响应在最终步骤 的奖励。 是每个提示生成的样本数。
作者将 process reward 与 outcome reward 都利用了起来:
隐式过程奖励的计算过程:
1. 使用平均的隐式过程奖励来计算留一法基准(LOO);
2. 通过减去基准值来 规范化 每个步骤的过程奖励;
3. 计算每个响应的折扣回报(discounted return);
结果奖励(Outcome Rewards) 则直接采用留一法(LOO),无需修改。而且结合得到最终的 reward:

训练算法采用传统的 PPO 策略。

图片

REINFORCE++

这里的核心贡献主要有两个:对 KL 散度的限制更加严格,以及优势函数逐 batch 做归一化,更加稳定。
7.1 Token-Level KL惩罚
在 REINFORCE++ 中,Token-Level KL 惩罚被整合到奖励函数中。 奖励函数的定义如下:

其中, 是一个指示函数,当 token 是序列结束符(End of Sequence, EOS)时取值为 1,否则为 0。 是模型生成的完整序列 对应的奖励。 是一个超参数,用于控制 KL 惩罚的强度。 是 token 的 KL 散度,计算公式为:


其中: 是 RL 模型在状态 下生成 token 的概率。 是 SFT 模型在状态 下生成 token 的概率。
这种做法有助于更好的 credit 分配,同时与 过程奖励模型(PRM) 无缝集成,增强了训练的稳定性。

7.2 Advantage Normalization(优势标准化)

为了确保梯度的稳定性并避免训练中的发散,文章对优势进行 z-score 标准化

其中 分别是 batch 中的平均值和标准差。优势标准化有助于平衡不同训练步骤中的梯度幅度,确保训练过程的稳定性,并防止出现梯度爆炸或消失的问题。

图片

GRPO

GRPO 是 PPO 的又一改进,主要是想去掉 value model 的存在,同时克服奖励稀疏性的问题。GRPO 的目标函数如下:

其中, 是超参数。 是基于组内相对奖励计算的优势函数。
通过以下方式解决了 PPO 的局限性:
1. 去除价值函数: GRPO 不需要额外的价值函数模型,而是使用 多组采样输出的平均奖励






请到「今天看啥」查看全文