美文网首页
近端策略优化(PPO)

近端策略优化(PPO)

作者: 博士伦2014 | 来源:发表于2018-11-20 09:32 被阅读0次

1. 背景

我们如何使用我们目前拥有的数据对策略进行可能的改进步骤,而不会踩到意外导致性能崩溃?TRPO尝试使用复杂的二阶方法解决这个问题,PPO是一系列一阶方法,这些方法使用一些其他技巧来保持新策略接近旧的。 PPO方法实现起来非常简单,并且在经验上似乎至少与TRPO一样好。

2. 基本事实

\bullet  PPO是一种on-policy的算法。

\bullet  PPO可用于具有离散或连续动作空间的环境。

\bullet  PPO的Spinning Up实现支持与MPI的并行化。

3. 关键方程

PPO-clip通过下式更新策略

                            \theta_{k+1} = \arg \max_{\theta} \underset{s,a \sim \pi_{\theta_k}}{{\mathrm E}}\left[
    L(s,a,\theta_k, \theta)\right],

通常采取多步骤(通常是minibatch)SGD来最大化目标,这里的L由下式给出

L(s,a,\theta_k,\theta) = \min\left(
\frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)}  A^{\pi_{\theta_k}}(s,a), \;\;
\text{clip}\left(\frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)}, 1 - \epsilon, 1+\epsilon \right) A^{\pi_{\theta_k}}(s,a)
\right),

其中\epsilon 是一个(小)超参数,大致说明新策略与旧策略相差多少。

这是一个非常复杂的表达,乍一看很难说明它正在做什么,或者它如何帮助保持新策略接近旧政策。事实证明,这个目标有一个相当简化的版本[1],它更容易解决(也是我们在代码中实现的版本):

               L(s,a,\theta_k,\theta) = \min\left(
\frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)}  A^{\pi_{\theta_k}}(s,a), \;\;
g(\epsilon, A^{\pi_{\theta_k}}(s,a))
\right),

其中

                                       g(\epsilon, A) = \left\{
    \begin{array}{ll}
    (1 + \epsilon) A & A \geq 0 \\
    (1 - \epsilon) A & A < 0.
    \end{array}
    \right.

为了弄清楚其中的细节,让我们看一下单一的状态 - 动作对(s,a),并考虑一下情况

3.1 Advantage is positive:  假设该状态 - 行动对的优势是正的,在这种情况下,它对目标的贡献减少到

                          L(s,a,\theta_k,\theta) = \min\left(
\frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)}, (1 + \epsilon)
\right)  A^{\pi_{\theta_k}}(s,a).

因为优势是正的,所以如果动作变得更可能,目标将会增加——也就是说,如果 \pi_{\theta}(a|s)增加。但是这个术语中的最小值限制了目标可以增加多少。一旦 \pi_{\theta}(a|s) > (1+\epsilon) \pi_{\theta_k}(a|s),最小值开始,这一项达到 (1+\epsilon) A^{\pi_{\theta_k}}(s,a)的上限。因此:新策略不会因远离旧策略而受益

3.2 Advantage is negative:假设该状态 - 行动对的优势是负的,在这种情况下,它对目标的贡献减少到

                             L(s,a,\theta_k,\theta) = \max\left(
\frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)}, (1 - \epsilon)
\right)  A^{\pi_{\theta_k}}(s,a).

因为优势是负的,如果行动变得不太可能 - 即如果\pi_{\theta}(a|s) 减少,则目标将增加。但是这个术语的最大值限制了目标可以增加多少。一旦 \pi_{\theta}(a|s) < (1-\epsilon) \pi_{\theta_k}(a|s),最大值开始,,这一项达到就达到了 (1-\epsilon) A^{\pi_{\theta_k}}(s,a)的上限。因此,再次说明:新策略不会因远离旧策略而受益

到目前为止,我们所看到的是切片(clip)作为一个正则化项,通过消除对策略发生巨大变化的激励,而超参数\epsilon 对应于新策略离旧政策有多远,同时仍然有利于实现目标。

You Should Know

虽然这种切片在确保合理的策略更新方面走了很长的路,但仍然有可能最终得到一个与旧策略相差太远的新策略,并且不同的PPO实现使用了一堆技巧来阻止这个off。

在我们的实现中,我们使用一种特别简单的方法:提前停止。如果新策略的平均KL-差异从旧的增长超过阈值,我们就停止采取梯度步骤。

当你对基本的数学和实现细节比较熟悉时,值得查看其他实现以了解它们如何处理此问题!

[1] 有关PPO-Clip目标的简化形式的推导,请参阅此注释

4. 探索与开发

PPO以on-policy方式训练随机政策。 这意味着它通过根据其随机策略的最新版本采样动作进行探索。 动作选择中的随机性量取决于初始条件和训练过程。 在训练过程中,策略通常变得越来越随机,因为更新规则鼓励它利用它已经找到的奖励。 这可能导致策略陷入局部最优。

5. 伪码

PPO-clip

相关文章

  • 近端策略优化(PPO)

    1. 背景 我们如何使用我们目前拥有的数据对策略进行可能的改进步骤,而不会踩到意外导致性能崩溃?TRPO尝试使用复...

  • 详解近端策略优化(ppo,干货满满)

    本文首发于行者AI[https://xingzheai.cn/] 引言 上一篇文章我们详细介绍了策略梯度算法(PG...

  • PC前端优化

    PC 浏览器前端优化策略 PC 端优化的策略很多,如 YSlow(YSlow 是 Yahoo 发布的一款 Fire...

  • 前端性能优化(摘录汇总)

    PC浏览器前端优化策略 pc端优化的策略很多,如Slow(YSlow时Yahoo发布的一款Firefox插件,现C...

  • 2018-12-20 PPO debug experience

    PPO Debug Experience Recently, I need to perform PPO in a...

  • 前端页面性能优化

    一、PC端优化策略 主要包括网络加载类、页面渲染类、CSS优化类、JavaScript执行类、缓存类、图片类、架构...

  • LunarLander-v2 in reinforcement

    这篇文章讲的是ppo算法,训练lunarlander。 ( 关于这个环境:火箭轨迹优化在最优控制中是一个经典的主题...

  • Unity优化技巧

    CPU优化策略: 内存优化策略: GPU优化策略: 以下技巧并不是必须的,但是对于想要提升游戏性能的人来说应该还是...

  • PPO

    On-policy VS Off-policy On-policy: The agent learned and ...

  • 深度强化学习--TRPO与PPO实现

    PPO是2017年由OpenAI提出的一种基于随机策略的DRL算法,它不仅有很好的性能(尤其是对于连续控制问题),...

网友评论

      本文标题:近端策略优化(PPO)

      本文链接:https://www.haomeiwen.com/subject/fbctqqtx.html