论文阅读-PPO

论文阅读-PPO

论文地址: Proximal Policy Optimization Algorithms


Background

TRPO所解决的是参数更新过快的而导致的难收敛问题,通过提供一个置信域来约束参数的更新幅度,如下所示:


\begin{array} { l l } { \underset { \theta } { \operatorname { maximize } } } & { \hat { \mathbb { E } } _ { t } \left[ \frac { \pi _ { \theta } \left( a _ { t } | s _ { t } \right) } { \pi _ { \theta _ { \text { old } } } | s _ { t } ) } \hat { A } _ { t } \right] } \\ { \text { subject to } } & { \hat { E } _ { t } \left[ \mathrm { KL } \left[ \pi _ { \theta _ { \text { old } } } ( \cdot | s _ { t } ) , \pi _ { \theta } ( \cdot | s _ { t } ) \right] \right] \leq \delta } \end{array}


在这之后OpenAi也提出过TRPO的一个改进版本,即对“surrogate”函数添加一个惩罚项来将上述问题转化为一个无约束的优化问题:


\underset { \theta } { \operatorname { maximize } } \hat { \mathbb { E } } _ { t } \left[ \frac { \pi _ { \theta } \left( a _ { t } | s _ { t } \right) } { \pi _ { \theta _ { \text { old } } } \left( a _ { t } | s _ { t } \right) } \hat { A } _ { t } - \beta \mathrm { KL } \left[ \pi _ { \theta _ { \text { old } } } ( \cdot | s _ { t } ) , \pi _ { \theta } ( \cdot | s _ { t } ) \right] \right]


那么问题来了,如何选择惩罚系数 \beta 呢?

这的确是一个难点,这也是TRPO之所以选用约束条件而不使用惩罚项的一个因素。大量的实验表明,直接选用一个固定大小的 \beta 然后再进行SGD是远远不够的。因此必须要有一个规则来对其大小进行计算。

OpenAi提供了一种方法:

其中 d_{targ} 是个预设的超参数。

Clipped 方法

除了上面的方法,其实还有一个更见简洁的方法,既然想要控制更新的“步伐”,那干脆控制 \frac { \pi _ { \theta } \left( a _ { t } | s _ { t } \right) } { \pi _ { \theta _ { \mathrm { old } } } \left( a _ { t } | s _ { t } \right) } 的大小。自然而然的就衍生出了下面clipped版本的“surrogate”函数:

首先令 r _ { t } ( \theta ) = \frac { \pi _ { \theta } \left( a _ { t } | s _ { t } \right) } { \pi _ { \theta _ { \text { old } } } \left( a _ { t } | s _ { t } \right) } ,然后令:

\\L ^ { C L I P } ( \theta ) = \hat { \mathbb { E } } _ { t } \left[ \min \left( r _ { t } ( \theta ) \hat { A } _ { t } , \operatorname { clip } \left( r _ { t } ( \theta ) , 1 - \epsilon , 1 + \epsilon \right) \hat { A } _ { t } \right) \right]

其中 \epsilon 是个超参数,一般设置为 \epsilon=0.2 ,然后对 L^{CLIP} 使用SGD进行优化。

PPO的方法总结来说就是控制新旧策略的比值 r_{t}(\theta) 的大小来防止更新幅度的变化影响Agent的学习效果。Clip会把 r_{t}(\theta) 的值限制在 (1-\epsilon,1+\varepsilon) 范围内:

  1. 当Advantage函数 \hat { A } _ { t }>0 时说明此时策略更棒,要加大优化力度,但是当 r_{t}(\theta)>1-\epsilon 时会将其Clip为 1-\epsilon ,Min操作会选择 r_{t}(\theta)=1-\epsilon ,这样一来就会防止其过度优化。
  2. 当Advantage函数 \hat { A } _ { t }<0时说明此事策略更差,要减小其优化力度,即选择更小的 r_{t}(\theta) ,当 r_{t}(\theta)<1-\epsilon 时虽然会将其Clip到 1-\epsilon ,但是Min函数依旧会选择更小的 r_{t}(\theta)

一言以蔽之:当朝好的方向优化就会限制其优化力度,向差的方向优化则会尽可能选择小的优化力度。

Conclusion

  1. TRPO方法的优化使用的是共轭梯度法(Conjugate Gradient),在计算梯度的时候要计算KL divergence的二阶导数,而PPO方法只需要计算一阶,这样一来大大减小了计算量。
  2. 在实现时Clip版本的“surrogate”函数所用更多,因为其更加简洁好用,效果的表现不输于ACER方法。
  3. DeepMind还在《Emergence of Locomotion Behaviours in Rich Environments》中提供了分布式版本的PPO,用来适用大规模训练。

发布于 2018-11-22 01:02