PPO:近端策略优化

  • Post author:
  • Post category:其他




基本概念



PPO

PPO算法和TRPO算法一样,也是一样常用的策略优化方法。与TRPO不同,PPO算法使用自适应KL惩罚系数



β

\beta






β





来约束KL散度,并且在每次策略更新中动态设置惩罚系数



β

\beta






β





;PPO算法还有另一种实现方式,不将KL散度直接放入似然函数中,而是进行一定程度的裁剪。

PPO训练过程的伪代码如下图所示:

在这里插入图片描述



PPO with clip

在TRPO中,使用的目标函数为:

在这里插入图片描述

如果令



r

t

(

θ

)

=

π

θ

(

a

t

s

t

)

π

θ

o

l

d

(

a

t

s

t

)

r_t(\theta)=\frac {\pi_\theta(a_t|s_t)} {\pi_{\theta_{old}}(a_t|s_t)}







r










t


















(


θ


)




=





















π












θ










o


l


d



































(



a










t






















s










t


















)

















π










θ


















(



a










t






















s










t


















)
























,那么可以得到:

在这里插入图片描述

上标



C

P

I

CPI






C


P


I





指的是TRPO中的保守政策迭代,如果没有约束,最大化



L

C

P

L

L^{CPL}







L











C


P


L













将会导致非常大幅度的梯度更新。为了惩罚策略的变化(即



r

t

(

θ

)

r_t(\theta)







r










t


















(


θ


)





远离1,即新旧策略的KL散度不能太大),PPO算法提出了如下的目标函数:

在这里插入图片描述

如果新策略和旧策略之间的概率比落在区间 (1-



ϵ

\epsilon






ϵ





)和 (1 +



ϵ

\epsilon






ϵ





)外面,那么优势函数就会被剪贴。论文中



ϵ

=

0.2

\epsilon=0.2






ϵ




=








0


.


2





,直观示意图如下:

在这里插入图片描述

PPO with clip的算法伪代码如下图所示:

在这里插入图片描述



PPO with penalty

在这种形式下,PPO算法和TRPO算法的优化问题相同:

在这里插入图片描述

TRPO算法与PPO算法之间的区别在于TRPO算法使用了KL散度作为约束条件,而PPO算法在训练时可以采用适应性的KL惩罚因子。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在每次策略更新时,当KL散度过大时,增大



β

\beta






β





的值来增加惩罚力度;当KL散度过小时,减小



β

\beta






β





值来降低惩罚力度。



版权声明:本文为weixin_49346755原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。