DRL Lecture 2:Proximal Policy Optimization (PPO)

Policy Gradient的问题:每次sample的data只能使用一次,较为耗费时间。因此引入off-policy,每次sample的数据可以多次使用。

特点:on-policy中学习的agent与和环境交互的agent是一致的;而off-policy则是有两个agent,其中一个agent负责与环境交互来获得episode,另一个agent则通过这些episode更新参数。

在这里利用importance-sampling来达到这一目的。

importance-sampling

给定概率$p$要计算$f(x)$的期望:可以采用sample的方式来达到该目的。也即:

而若$p$分布无法获得,可以利用另一个可获得的分布$q$来近似。也即:

然后再由$q$来做sampling。

注意这里$p$与$q$的分布不应该差距太大,否则其variance则会相差很大,造成近似结果差距较大。

off-policy

将importance sampling用于off-policy。

原来:

变成:

其中$p_{\theta^{\prime}}$是另一个agent的分布,也即data是从该agent的分布sample得到的,因此可以使用该data来多次训练θ。

因此梯度公式则为:

其中,我们将$A^{\theta}\left(s_{t}, a_{t}\right)$改成$A^{\theta^{\prime}}\left(s_{t}, a_{t}\right)$,因为数据是从$\theta^{\prime}$ 来的;同时我们假设$\frac{p_{\theta}\left(s_{t}\right)}{p_{\theta^{\prime}}\left(s_{t}\right)}=1$,一方面是不方便计算,作此假设可以方便计算;另一方面该假设也有一定合理性,因为某个state出现的几率应该和agent的关系较小。

通过梯度公式我们可以还原出原式:

另一个问题是,在什么时候停止使用同一组data更新参数?也即同一组data能够更新参数几次?

一个原则是:我们希望两个agent的分布差异小一些,因为分布差异一旦大了,variance则会变大,因此这里添加一个constraint。

注意这里的KL散度是对action分布的KL散度而不是参数的。

所以最终的算法为:

其中$\theta_{k}$是上次更新完的agent的参数。也即与环境交互的agent的参数总是上个iteration 另一个agent更新后的参数。

还有几个细节,$\beta$可以是adaptive的;以及PPO2对PPO中constraint的改进,不过都是细枝末节。