📜  近端策略优化简介

📅  最后修改于: 2022-05-13 01:58:08.329000             🧑  作者: Mango

近端策略优化简介

近端策略优化 (PPO) 是强化学习领域的最新进展,它提供了对信任区域策略优化 (TRPO) 的改进。该算法于 2017 年提出,并在 OpenAI 实现时表现出显着的性能。要理解和欣赏算法,我们首先需要了解什么是策略。

Note: This post is ideally targeted towards people who have a fairly basic understanding of Reinforcement Learning.

在强化学习术语中,策略是从动作空间到状态空间的映射。可以想象它是 RL 代理的指令,根据它当前所处的环境状态,它应该采取什么行动。当我们谈论评估代理时,我们通常是指评估策略函数以找出根据给定的策略,代理的执行情况如何。这就是策略梯度方法发挥重要作用的地方。当代理正在“学习”并且并不真正知道哪些动作在相应状态下产生最佳结果时,它通过计算策略梯度来做到这一点。它的工作原理类似于神经网络架构,其中输出的梯度,即特定状态下动作概率的对数,是相对于环境参数获取的,并且变化反映在策略中,基于梯度.

虽然这种久经考验的方法效果很好,但这些方法的主要缺点是它们对超参数调整(例如步长的选择、学习率等)过于敏感,而且样本效率低下。与通过相对较少的超参数调整有保证的成功或收敛途径的监督学习不同,强化学习要复杂得多,需要考虑各种移动部分。 PPO 旨在在诸如易于实施、易于调整、样本复杂性、样本效率等重要因素之间取得平衡,并尝试在每一步计算更新以最小化成本函数,同时确保与先前策略的偏差相对较小。 PPO 实际上也是一种从在线数据中学习的策略梯度方法。它只是确保更新后的策略与旧策略没有太大差异,以确保训练中的低方差。 PPO 最常见的实现是通过使用 2 个深度神经网络的 Actor-Critic 模型,一个执行动作(actor),另一个处理奖励(critic)。 PPO的数学方程如下图所示:

L^{CLIP}(\theta) = \bar E_{t}[min(r_t(\theta)\bar A_t,clip(r_t(\theta),1-\epsilon,1+\epsilon)\bar A_t)] \\ \\ where,\\ \theta\:is\:the\:policy\:parameter\\ \bar E_t\:denotes\:the\:empirical\:expectation\:over\:timesteps\\ r_t\:denotes\:the\:ratio\:of\:the\:probabilities\:under\:the\:new\:and\:old\:policies\:respectively\:(also\:known\:as\:Importance\:Sampling\:Ratio)\\ \bar A_t\:is\:the\:estimated\:advantage\:at\:time\:t\\ \epsilon \:is\:a\:hyperparameter,\:usually\:0.1\:or\:0.2.

从 PPO 方程可以得出以下重要推论:

  • 它是一种策略梯度优化算法,即在每一步中都会对现有策略进行更新,以寻求对某些参数的改进
  • 它确保更新不会太大,即旧策略与新策略没有太大差异(它通过本质上将更新区域“裁剪”到非常窄的范围来实现)
  • 优势函数是特定状态和动作的未来折扣奖励总和与该策略的价值函数之间的差异。
  • Importance Sampling ratio,即新旧策略下概率的比值,用于更新
  • ε 是一个超参数,表示允许更新的范围的限制

这是工作 PPO 算法的整体外观,以 Actor-Critic 风格实现:

Algorithm\:for\:PPO\:using\:Actor-Critic\:implementation: \\ Input:\:initial\:policy\:paramters\\ for\:iteration=1,2,...do\\ \:\:for\:actor=1,2,....do\\ \:\:\:\:Run\:policy\:\pi_{\theta_{old}}\:in\:environment\:for\:T\:timesteps\\ \:\:\:\:Compute\:Advantage\:estimates\:\bar A_1,...,\bar A_t\\ \:\:end\:for\\ \:\:Optimize\:surrogate\:L\:wrt\:\theta ,\:with\:K\:epochs\:and\:minibatch\:size\:M<=NT\\ \:\:\theta_{old}\:\leftarrow \:\theta\\ end\:for

我们可以观察到,小批量的观察被用于更新,然后被丢弃以合并新的一批新的观察,也就是“小批量”。更新后的策略将被 ε-clipped 到一个小区域,以不允许可能会造成不可恢复的有害的巨大更新。简而言之,PPO 的行为与其他策略梯度方法完全一样,因为它还涉及基于各种参数计算前向传播中的输出概率,并计算梯度以改进后向传播中的这些决策或概率。它涉及使用重要性采样率,就像它的前身 TRPO 一样。但是,它也确保了旧策略和新策略至少有一定的接近度(用ε表示),并且不允许非常大的更新。它已成为强化学习领域应用最广泛的策略优化算法之一。