近端策略优化 (PPO) 是一种深度强化学习算法,它可通过使用强化学习来提升模型性能。PPO 中的策略表明了某一智能体(例如,机器人或程序)如何学会在现实中执行操作。这一可彻底改变学习的方法是智能体和系统在与用户和世界交互时的学习方式的关键组成部分。现代大语言模型(如 OpenAI ChatGPT 的衍生模型)使用 PPO 来实现基于人类反馈的强化学习 (RLHF)。此外,PPO 也是在电子游戏、机器人流程自动化和自动驾驶汽车领域用于训练智能体的最常见算法之一。
PPO 最初由 John Schulman、Filip Wolski 等人1在一篇名为《Proxmal Policy Optimization Algorithms》的论文中提出。要了解 PPO 的工作原理及其重要性,则应从强化学习 (RL) 入手。RL 流程使用机器学习来帮助系统根据环境和目标选择操作。人类经常会做出此类策略;例如,在二十一点游戏中,我们需决定是“要”(拿到一张新牌)还是“过”(保留已有的牌)。强化学习有四个基本要素:智能体、环境、操作和奖励。以玩二十一点游戏为例:
智能体:玩游戏的人。
环境:玩家有哪些牌,以及他们能看到庄家有哪些牌。
操作:是“要”(拿到一张新牌)还是“过”(保留当前的牌)。
奖励:用户是赢得还是输掉这局游戏。
“策略”是智能体(如机器人或软件程序)所遵循的一个战略或一系列规则,用于根据其环境来选择离散操作。该策略提供了从环境到智能体应执行的潜在操作的映射。政策可以十分简单,且每个状态对应固定的操作;同时,它也可较为复杂,其中包含估计或计算,以便选择和学习用以确定最优操作的机制。目标是找到一种策略,以使智能体随时间推移所获得的累积奖励最大化。您可以想象一个针对二十一点游戏的简单策略:“如果您的牌低于 17,则拿牌;如果大于 18,则过。”智能体会将环境与策略进行比较,并根据此策略选择操作。
RL 是一种帮助智能体学习策略的方法,而该策略将帮助其决定执行哪些操作来最大化奖励。PPO 是一种强大的技术,可帮助智能体更有效地学习。它已广泛应用于各种应用:从构建机器人,到改进大语言模型 (LLM) 推理与响应提示的方式。PPO 是用于训练 LLM 的基于人类反馈的强化学习 (RLHF) 的基本组成部分之一。正是这些方法中的后者推动了近期对 RL 的大部分研究。
强化学习方法大致可分为两类。第一种是基于价值的方法,它可评估环境并根据预期奖励确定针对该环境的最佳操作。所有潜在操作都会经过评估,而智能体会选择预期奖励最高的操作。为了确定最佳操作,智能体会专注于学习某一价值函数,而该函数可估计每个环境或“环境-行动”对的预期累计奖励(回报)。该策略是通过使用一个值来选择能使估计值最大化的操作来间接推导出的。其思想是:为每个潜在的操作发现一个最优价值函数,从而制定最优策略。当可供深入了解的操作与环境对有限时,此方法可能非常有效。智能体将计算每个操作的预期奖励,并根据该估算做出选择。在较大的操作空间中,当潜在操作数量较多时,估算每个潜在操作的回报会变得困难。当一个机器人在三维空间中决定如何旋转一个带多个关节的机械臂时,它面临成千上万种潜在决策,而这些决策的数量过多,因而难以计算每种关节位置潜在组合的对应函数。此外,它还限制智能体只能执行预定义的操作,因此智能体无法提出新的或新颖的战略。
由此,便会引出第二种方法:基于策略的方法。策略是指智能体(如机器人或软件程序)所遵循的战略或规则,用于根据其环境做出决策。该策略提供了从环境到智能体应执行的潜在操作的映射。政策可以十分简单,且每个状态对应固定的操作;同时,它也可较为复杂,其中包含优势估算和计算,以便选择和学习用以确定最优操作的机制。目标是找到一种策略,以使智能体随时间推移所获得的累积奖励最大化。想象一个模型,它试图决定何时购买、出售或持有特定股票。策略会根据股票的趋势或整个股票市场的情况,来定义智能体何时应考虑买入或卖出股票。
基于策略的学习方法可学习在给定状态下应选择哪些操作,而无需直接估计其预期结果。此方法意味着智能体可为每个状态学习更多潜在的操作,而无需为每个状态估计一个价值函数。智能体可通过调整选择某一操作的可能性来优化策略,从而最大化预期回报,而无需为每个操作估计一个优势函数。此过程需使用大量的数据和复杂的学习架构,因为针对给定状态的潜在操作在理论上是数量无限的。策略梯度属于第二类。
通过策略学习,有两种基本方法可用于为智能体学习策略。正策略方法仅使用当前操作来驱动学习,即从您正在执行的操作中进行学习。试想有一辆自动驾驶汽车,它尝试通过多次行程找到抵达目的地的最佳路线。在正策略学习中,汽车只会从其行驶的路线中学习。
该策略会指导智能体在每个环境中的操作,包括学习时的决策流程。智能体会评估其当前操作的结果,从而逐步完善其策略。此方法可让智能体通过直接与环境互动并从自身实时交互中学习,来进行适应并改进决策。
离策略方法则会让汽车观察其他自动驾驶汽车所行驶的路线,以学习对方的行为。此汽车不必遵循与被观察车辆相同的策略,但可以观察这些车辆从其操作中获得的奖励,并相应更新自己的策略。它涉及独立于智能体的操作来学习最优策略的值。这些方法可让代理从有关最优策略的观察中进行学习,即使它并未遵循最优策略。此方法对于从固定数据集或教学策略中进行学习非常有用。
策略梯度是一种基于策略的方法,它可通过遵循预期回报的梯度来直接优化策略本身。从概念上讲,它类似于随机梯度下降 (SGD),后者试图用损失函数最小化预测的误差。但两者之间存在一个关键区别:SGD 通常会用于估计参数以最小化损失。而策略梯度则会试图估计策略分布的参数,以优先执行可最大化奖励的操作。其目标是为所有潜在操作创建一个概率分布,使得获得更高奖励的操作较可能出现,而奖励较低的行为则较不可能出现。
策略梯度即是所谓的“演员-评判家方法”。“演员”是一个策略网络,用于选择操作;而评判家则用于估计该策略将针对状态的操作与特定奖励进行匹配的程度。
如果您的策略是(针对操作的概率分布),则代理的目标是最大化预期回报(记作 ,然后它将采用如下定义的 梯度上升步长:
在此公式中, 是用于决定操作概率分布的策略参数的向量。此时,旧政策已更新,,即先前的策略加上学习率 再乘以策略梯度。策略梯度为 相关梯度 乘以目标函数 (代表此策略的预期回报)。
策略梯度会通过应用当前策略、选择操作、评估奖励,然后计算目标函数的梯度来进行学习。当此算法能执行行动并观察此更新带来的优势时,该算法便会为下一次迭代应用策略更新。
策略梯度方法的核心在于策略梯度定理,而该定理表明了如何优化策略。梯度为该策略导致某一操作的概率上升或减少的程度乘以此操作实现的奖励。策略梯度定理的方程式如下:
该方程表明给定策略的梯度 (对于参数 )可设定为预期 。该期望为分数函数 乘以所选操作的 与 (从执行操作的智能体获得的奖励 ,状态 下)的对数概率。
借助策略梯度,智能体便可深入了解多种变体,并快速高效地计算哪些变体能带来最大奖励。但是,此技术并非没有缺陷。例如,策略梯度方法通常会收敛到局部最大值,而不是全局最优值。计算策略梯度可能比其他类型的同策略方法需要更长的训练时间。策略梯度自身会产生高方差,因此估算梯度本身就非常不准确。此结果可能导致该流程误估梯度轨迹以及策略变化对梯度的影响程度。
策略梯度算法的其中一个经典示例是信任区域策略优化 (TRPO)2。它刚推出时可谓一大突破,但也存在几个众所周知的问题,从而使其在实践中难以运用。
PPO 是对使用策略梯度进行学习的一种改进。从根本上讲,它致力于实现:如何利用当前数据,在不进行过大的策略更新以致性能崩溃的情况下,对策略进行尽可能大的改进。在策略梯度方法中,会通过将相关参数向增加预期奖励的方向进行微调来改进策略。然而,大规模更新可能会破坏性能,而一个过于激进的梯度步长则可能会严重改变智能体行为并导致学习崩溃。早期算法(如 TRPO)通过限制新策略与旧策略的差异来解决此问题,但它们在数学层面却相当复杂。
PPO 可保持策略更新接近前一策略,同时避免需引入复杂的约束。PPO 不会随机选择下一更新点,而是使用所谓的截断代理目标来阻止策略出现大幅跳跃。该策略仍会改进,即智能体在应用奖励并观察结果时的奖励梯度,但它将安全地执行此操作。
通过使用策略梯度,每次迭代均会应用针对策略目标函数的梯度上升步长。步长的大小会带来挑战。如果步长过小,训练过程会十分缓慢;如果步长过大,策略的变异性会过高,从而导致智能体无法找到最优解。
在 PPO 中,其核心思想是通过一个截断代理目标函数来约束策略更新,从而将策略变更限制在特定范围内。该函数约定:
要分解此公式,第一部分为比率函数:。该比率函数为:
这是在当前策略中执行操作的概率(状态为 )除以前一政策。此公式将计算当前与旧策略的概率比。如果 ,则操作 (状态为 )在当前政策中执行的可能性比旧政策中更大。如果该比率小于 1,则此操作在当前策略中的执行可能性低于在旧策略中。
其中的 部分演示了 PPO 如何使用代理约束来惩罚导致比率偏离 1 的更改,从而截断该函数。这一步表明,当该算法尝试执行此策略中的变更时,这些变更会被 ε 值 保持为较小。 下)的对数概率。
此阶段代理方法的主要优点在于,它带来的变化很小并且计算效率较高。较早的方法(如 TRPO)在计算目标函数后会使用 KL 散度来约束策略更新。此方法可有效约束更新,但需要复杂的实现和更长的计算时间。PPO 可直接在目标函数中实现该截断概率比,从而加快每个训练周期。
与很多其他方法相比,PPO 的另一优势在于它实现了更高的样本效率;即,每次环境交互都会带来更大的策略改进。PPO 可通过创建小批量发布数据来实现此效率,而这些数据可在多次更新中使用相同的交互数据。Deep Q-Networks 一类的其他方法可能更为高效,但计算密集度更高,因此在有足够数据的情况下并非首选。
更新某一策略的其中一个关键部分是估计该策略相对于之前的迭代有多大优势。这一步的计算复杂性比简单计算两个策略在给定步长下的奖励差异要复杂得多。智能体需了解跨多个步长的操作概率分布情况。即使在相对简单的二十一点游戏中,“演员”所执行的操作也要到几轮游戏后才能实现。此方法在国际象棋等比赛或涉及机器人导航的场景中变得更为重要。
为了学习这些更新,PPO 会使用所谓的迭代广义优势估计 (GAE) 策略。这一步有助于确定策略的效果如何,以及应与当前策略拉开多大差距才能实现改进。GAE 通过对未来误差进行指数加权来计算优势,从而为 PPO 提供低方差、低偏差的学习信号,从而使策略更新变得稳定且样本使用效率高。
过早停止积累实际奖励会引入较高偏差,因为只有一小部分真实回报会与极少的实际奖励一起纳入考量。积累过多的奖励会导致方差较大,因为依赖大量真实样本会导致估计不稳定。
Stable-Baselines3 和 RLlib 等库提供了功能齐全的 PPO 实现,并可应用于各种领域和问题。此外,还可在 GitHub 上找到 CleanRL 一类更轻量级的实现,其中包括用 PyTorch 和 Tensorflow 编写的自学教程。
HuggingFace 一类的 Transformer 强化学习 (TRL) 库经过专门优化,可通过使用 PPO 之类的 RL 算法来帮助训练 Transformer 语言模型。在此情况下,PPO 有助于确保模型学习如何选择更符合模型创建者的目标及人类反馈的回复。
使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。