近端策略优化(PPO)

1. 背景

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

2. 基本事实

 PPO是一种on-policy的算法。

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

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

3. 关键方程

PPO-clip通过下式更新策略

                            

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

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),

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

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

               

其中

                                       

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

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

                          

因为优势是正的,所以如果动作变得更可能,目标将会增加——也就是说,如果增加。但是这个术语中的最小值限制了目标可以增加多少。一旦,最小值开始,这一项达到的上限。因此:新策略不会因远离旧策略而受益

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

                             


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

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

You Should Know

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

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

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


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

4. 探索与开发

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

5. 伪码


PPO-clip

你可能感兴趣的:(近端策略优化(PPO))