近端策略优化(PPO, Proximal Policy Optimization)是强化学习中十分重要的一种算法,被 OpenAI 作为默认强化学习算法,在多种强化学习应用中表现十分优异。
文章目录
1. From On-policy to Off-policy
- 如果被训练的agent和与环境做互动的agent(生成训练样本)是同一个的话,那么叫做on-policy(同策略)。
- 如果被训练的agent和与环境做互动的agent(生成训练样本)不是同一个的话,那么叫做off-policy(异策略)。
换一种拟人的方式来讲:
- on-policy:我们来学习下象棋,先和大家下若干把棋,然后总结经验提升自己,成为2.0的自己。2.0的自己再和大家下棋,再总结2.0期间下过棋局的经验,成为3.0的自己,以此类推。其中关键点在于,2.0升级到3.0的过程中不能利用1.0时的下棋经验。
- off-policy:与on-policy不同的是我们,我们可以反复利用1.0期间的下棋经验,从2.0升级到3.0再升级到4.0,等等。甚至我们还可以用其他人的下棋经验提升自己。
为什么要考虑使用Off-policy?
我们可以回顾Policy Gradient的过程,Policy Gradient是一种on-policy的方法,他首先要利用现有策略和环境互动,产生学习资料(决策数据 τ \tau τ),然后利用产生的资料,按照Policy Gradient的方法更新策略参数。然后再用新的策略去交互、更新、交互、更新,如此重复。这其中有很多的时间都浪费在了产生资料的过程中,Off-Policy的目的就是更加充分的利用actor产生的交互资料,增加学习效率。
2. Importance Sampling
为什么要使用Importance Sampling呢?
我们可以看一下Policy Gradient的梯度公式:
∇ R ˉ ( τ ) = E τ ~ p θ ( τ ) [ A θ ( s t , a t ) ∇ l o g p θ ( a t n ∣ s t n ) ] \nabla\bar{R}(\tau) = E_{\tau~p_\theta(\tau)}[A^\theta(s_t, a_t)\nabla log p_\theta(a_t^n|s_t^n) ] ∇Rˉ(τ)=Eτ~pθ(τ)[Aθ(st,at)∇logpθ(atn∣stn)]
问题在于上面的式子是基于 τ ~ p θ ( τ ) \tau~p_\theta(\tau) τ~pθ(τ)采样的,一旦更新了参数,从 θ \theta θ到 θ ′ \theta' θ′,这个概率 P θ P_{\theta} Pθ就不对了。而Importance Sampling解决的正是从 τ ~ p θ ( τ ) \tau~p_\theta(\tau) τ~pθ(τ)采样,计算 θ ′ \theta' θ′的 ∇ R ˉ ( τ ) \nabla\bar{R}(\tau) ∇Rˉ(τ)的问题。
重要性采样(Importance Sampling)的推导可以点击链接查看,这里直接给出公式:
E x ~ p [ f ( x ) ] = ∫ f ( x ) p ( x ) d x = ∫ f ( x ) p ( x ) q ( x ) q ( x ) d x = E x ~ q [ f ( x ) p ( x ) q ( x ) ] E_{x~p}[f(x)] = \int f(x)p(x)dx = \int f(x) \frac{p(x)}{q(x)}q(x)dx = E_{x~q}[f(x) \frac{p(x)}{q(x)}] Ex~p[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex~q[f(x)q(x)p(x)]
上面的式子表示,已知 x x x服从分布 p p p,我们要计算 f ( x ) f(x) f(x),但是 p p p不方便采样,我们就可以通过 q q q去采样,计算期望。
E x ~ q [ f ( x ) p ( x ) q ( x ) ] E_{x~q}[f(x) \frac{p(x)}{q(x)}] Ex~q[f(x)q(x)p(x)]
这里我们用 q q q做采样, p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x)叫做重要性权重,用来修正 q q q与 p p p两个分布的差异。理论上利用重要性采样的方法我们可以用任何 q q q来完成采样,但是由于采样数量的限制, q q q与 p p p的差异不能太大。如果差异过大, E x ~ q [ f ( x ) p ( x ) q ( x ) ] E_{x~q}[f(x) \frac{p(x)}{q(x)}] Ex~q[f(x)q(x)p(x)]与 E x ~ p [ f ( x ) ] E_{x~p}[f(x)] Ex~p[f(x)]的差异也会很大。
3. 推导off-policy下的梯度公式
在on-policy情况下,Policy Gradient公式为:
∇ R ˉ ( τ ) = E ( s t , a t ) ~ π θ [ A θ ( s t , a t ) ∇ l o g p θ ( a t n ∣ s t n ) ] \nabla\bar{R}(\tau) = E_{(s_t,a_t)~\pi_\theta}[A^\theta(s_t, a_t)\nabla log p_\theta(a_t^n|s_t^n) ] ∇Rˉ(τ)=E(st,at)~πθ[Aθ(st,at)∇logpθ(atn∣stn)]
由上面的推导可得,我们利用 θ ′ \theta' θ′采样,优化 θ \theta θ时的公式为:
∇ R ˉ ( τ ) = E ( s t , a t ) ~ π θ ′ [ p θ ( s t , a t ) p θ ′ ( s t , a t ) A θ ( s t , a t ) ∇ l o g p θ ( a t n ∣ s t n ) ] \nabla\bar{R}(\tau) = E_{(s_t,a_t)~\pi_{\theta'}}[\frac{p_{\theta(s_t,a_t)}}{p_{\theta'(s_t,a_t)}}A^{\theta}(s_t, a_t)\nabla log p_\theta(a_t^n|s_t^n) ] ∇Rˉ(τ)=E(st,at)~πθ′[pθ′(st,at)pθ(st,at)Aθ(st,at)∇logpθ(atn<