强化学习系列第二篇 更多专栏文章点击查看:
LLM 架构专栏
大模型架构专栏文章阅读指南
Agent系列
强化学习系列
欢迎加入大模型交流群:加群链接 https://docs.qq.com/doc/DS3VGS0NFVHNRR0Ru#
公众号【柏企阅文
知乎【柏企】
个人网站https://chenbaiqi.com

在强化学习领域,近端策略优化(Proximal Policy Optimization,简称PPO)致力于解决一个至关重要的问题:如何充分利用现有数据实现策略的最大化改进,同时又能规避性能崩塌的风险呢?PPO作为一系列一阶方法,运用了多种技术来维持新旧策略之间的相近程度。

PPO的核心原则

PPO的核心要义在于,通过限制每个训练周期内策略更新的幅度,提升训练的稳定性。这一方法基于两大关键洞察:

  • 小步调整更易收敛:从经验可知,较小幅度的增量式策略调整,往往更有希望趋向于最优解。
  • 大幅更新易致性能灾难:过度剧烈的策略更新,可能引发灾难性的性能下滑,就好比从悬崖坠落一般。这种剧烈变化极有可能导致策略陷入次优状态,恢复起来或许需要耗费大量时间,最坏的情况甚至可能无法挽回。PPO正是通过审慎地限制策略修改,力求在改进与稳定之间找到平衡,保障学习过程更加可靠、连贯。

PPO属于基于策略的算法,无论是离散动作空间还是连续动作空间的环境,它都能大显身手。

PPO的不同变体

PPO-Penalty

近端策略优化(PPO)作为一种旨在在维持稳定性的同时改进策略更新的强化学习算法,主要有两个变体:PPO-Penalty和PPO-Clip。

PPO-Penalty在处理KL约束更新问题时,采取的策略是在目标函数中对KL散度进行惩罚,而非施加硬性约束。在训练过程中,它会动态调整惩罚系数,确保达到合适的缩放效果。这样一来,既能实现更为灵活的策略更新,又能与先前的策略保持相近。

PPO-Clip

PPO-Clip则另辟蹊径,其目标函数中既不包含KL散度项,也没有任何显式约束。它在目标函数里运用了一种特殊的裁剪机制,以此抑制新旧策略之间出现过大偏差。裁剪函数依据新旧策略之间的概率比开展工作,通常会将这个概率比限制在[1-ε, 1+ε]的区间内,这里的ε一般取值为0.2。

PPO的方程

PPO-clip通过下面的方式更新策略:

通常会采用多个步骤(一般是小批量)的随机梯度下降(SGD)来最大化目标。这里的 $L$ 由下式给出:

其中,$\epsilon$ 是一个(较小的)超参数,它大致界定了新策略相较于旧策略所能偏离的程度。

借助PPO,我们以保守的方式更新策略。为此,需要通过当前策略与先前策略之间的比率计算,衡量当前策略的变化情况。然后将这个比率裁剪到[1 - ε, 1 + ε]范围内,这就意味着削弱了当前策略过度偏离旧策略的动力(这便是“近端策略”这一术语的由来)。简单来讲:

  • 优势为正时:因为优势为正,若某个动作发生的可能性增大,目标值就会提升。但该式中的最小值会对目标值的提升幅度加以限制。所以,新策略并不会因过度偏离旧策略而获益。
  • 优势为负时:假设某状态 - 动作对的优势为负,由于优势为负,若该动作发生的可能性降低,目标值就会增加。然而该式中的最大值同样会限制目标值的增长幅度。所以,新策略同样不会因远离旧策略而获得好处 。

对于PPO而言,核心思路是借助一个名为剪辑代理目标函数(Clipped surrogate objective function)的新目标函数,来约束策略更新。这个函数会利用裁剪操作,将策略变化限定在一个较小的范围内。

在这里,裁剪操作发挥着正则化器的作用,消除了策略剧烈变动的诱因,而超参数 $\epsilon$ 则决定了新策略在仍能使目标获益的前提下,可偏离旧策略的最大程度。

尽管这种裁剪操作在很大程度上保证了策略更新的合理性,但仍有可能出现新策略与旧策略偏差过大的情况。不同的PPO实现方式会采用一系列技巧来避免这一问题,比如提前停止。一旦新策略与旧策略的平均KL散度超出某个阈值,我们就停止进行梯度更新。

PPO的探索与利用

PPO作为基于策略的强化学习算法,通过随机策略训练方法来应对探索与利用之间的困境。其探索策略是依据概率策略的最新迭代结果对动作进行采样。动作选择的随机性既受初始参数的影响,也与具体的训练过程有关。随着训练逐步推进,由于更新规则侧重于利用已知的奖励源,策略往往会变得越来越确定。这种逐渐向利用已知信息的转变,有可能使策略陷入局部最优解,这也凸显了在强化学习中,探索新的可能性与利用已有知识之间需要把握的微妙平衡。

GRPO相对于PPO的优势

在训练大型语言模型(LLMs)的场景下,GRPO(组相对策略优化,Group Relative Policy Optimization)相较于PPO展现出诸多优势:

  • 消除价值函数:GRPO无需单独的价值函数,这是对PPO的一项重大改进。在PPO中,价值函数通常需要一个与策略模型规模相当的模型,这无疑会带来可观的内存和计算成本。而GRPO通过将多个采样输出的平均奖励作为基线,有效避免了对额外大型模型的需求。
  • 高效的优势估计:GRPO摒弃了依赖价值函数来估计优势的做法,转而采用组相对方法。对于每个输入问题,它从旧策略中采样多个输出,并将这些输出的平均奖励作为基线。这种方式特别适用于大型语言模型,因为在这类模型中,奖励通常仅分配给最后一个令牌。
  • 计算效率更高:由于无需训练单独的价值函数,GRPO显著降低了训练所需的计算资源,使得训练过程更为高效,速度也可能更快。
  • 稳定性提升:GRPO借助裁剪和KL散度机制,保留了PPO在稳定性方面的优势。而且,它在实现这种稳定性的同时,并没有引入单独价值网络所带来的复杂性。
  • 与LLM训练更契合:GRPO的方法与LLM训练的特性高度契合。在LLM训练中,奖励往往较为稀疏,并且仅在序列末尾才会出现。这使得GRPO在语言生成、数学推理等任务中更具优势。
  • 训练过程简化:与PPO相比,GRPO的目标函数更为简洁、流畅。它利用一组采样输出来构建相对优势,在语言模型的情境下,这种方式更加直观,实现起来也更为简便。
  • 无偏KL散度估计:GRPO对KL散度采用无偏估计器,能够确保估计值为正。这一点改进了标准PPO实现中使用的KL惩罚项。

在PPO中,需要与策略模型同时训练一个价值函数。为了缓解奖励模型的过度优化问题,标准做法是在每个令牌的奖励中,添加来自参考模型的每个令牌的KL惩罚(欧阳等人,2022),即:

其中,$r_{\varphi}$ 是奖励模型,$\pi_{\text{ref}}$ 是参考模型(通常为初始的监督微调模型),$\beta$ 是KL惩罚系数。

由于PPO中使用的价值函数通常与策略模型规模相近,这无疑带来了沉重的内存和计算负担。此外,在强化学习训练过程中,价值函数在计算优势时被用作基线,以降低方差。但在LLM场景里,通常只有最后一个令牌会被奖励模型赋予奖励分数,这就可能使每个令牌上都要保证准确的价值函数的训练过程变得复杂。

为解决这些问题,如图4所示,DeepSeek提出了组相对策略优化(GRPO)。它不再需要像PPO那样对价值函数进行近似,而是将针对同一问题生成的多个采样输出的平均奖励作为基线。具体来说,对于每个问题 $q$,GRPO从旧策略 $\pi_{\theta_{\text{old}}}$ 中采样一组输出 $\{o_1, o_2, \cdots, o_G\}$,然后通过最大化以下目标来优化策略模型:

与(2)中使用的KL惩罚项不同,我们使用以下无偏估计器(Schulman,2020)来估计KL散度,该估计器能确保结果为正:

GRPO的算法如下:

小结

PPO的目标函数可以表示为:

$$ L(\theta)=\mathbb{E}\left[\min\left(r_t(\theta)A_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon)A_t\right)\right] $$

其中:

  • $r_t(\theta)$ 是新旧政策的概率比
  • $A_t$ 是估计的优势
  • $\epsilon$ 是裁剪参数(通常为0.1或0.2)

这种表达式确保了策略更新始终处于一个“信任区域”内,有助于实现稳定且连贯的学习过程,并且无需借助复杂的二阶优化方法。

然而,DeepSeek的GRPO在将强化学习应用于语言模型方面实现了重大突破。与传统的PPO相比,它的关键创新点,即分组采样、相对优势估计以及对价值网络的摒弃,为语言模型训练提供了一个更为高效、稳定且针对性更强的训练过程。

附录

  1. https://huggingface.co/learn/deep-rl-course/en/unit8/intuitio...
  2. https://spinningup.openai.com/en/latest/algorithms/ppo.html#b...
  3. https://arxiv.org/pdf/2402.03300

本文由mdnice多平台发布


柏企科技圈
15 声望4 粉丝