200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【强化学习】PPO:从On-policy到Off-policy(PPO/TRPO/PPO-Penalty/PPO-Clip)

【强化学习】PPO:从On-policy到Off-policy(PPO/TRPO/PPO-Penalty/PPO-Clip)

时间:2023-02-04 13:20:19

相关推荐

【强化学习】PPO:从On-policy到Off-policy(PPO/TRPO/PPO-Penalty/PPO-Clip)

目录

一、为什么要从On- Policy到Off-Policy?二、如何从On- Policy到Off-Policy?三、如何使 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta'}(a_t|s_t) pθ′​(at​∣st​)不相差太多?3.1 PPO3.1.1 PPO-Penalty (PPO1)3.1.2 PPO-Clip (PPO2) 争议:PPO是on-policy还是off-policy?

一、为什么要从On- Policy到Off-Policy?

举例经典的policy gradient,当我们的agent和环境交互之后要进行policy model的更新,也就是采样之后需要更新策略参数。策略不同,那么对于相同状态产生的trajectory就会不同。因此,策略更新后就要重新采集采样,然后再更新参数。所以on-policy采样成本较高。

因此我们想要off-policy,用另外一个policy,另外一个actor θ ′ \theta' θ′与环境交互,用 θ ′ \theta' θ′收集的数据训练 θ \theta θ。

On-Policy:要训练的agent和与环境交互的agent是同一个,此时的policy.

Off-Policy:要训练的agent和与环境交互的agent不是是同一个的policy.

二、如何从On- Policy到Off-Policy?

重要性采样(Importance Sampling):从另一个分布中采样从而逼近所求分布。

从q分布中采样,求p的期望可以通过如下方法:

∫ 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 ) ] \int f(x)p(x)dx=\int f(x)\frac{p(x)}{q(x)}q(x)dx=E_{x \sim q}[f(x)\underset {}{\frac{p(x)}{q(x)}}] ∫f(x)p(x)dx=∫f(x)q(x)p(x)​q(x)dx=Ex∼q​[f(x)q(x)p(x)​​]

p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x)​是重要性权重,相当于做了一个分布差异的修正。理论上 q ( x ) q(x) q(x)可以是任意分布,但在实际上p和q不能差太多。因为两个随机变量的期望相同不代表它们的方差也相同。

V a r x ∼ p [ f ( x ) ] = E x ∼ p [ f ( x ) 2 ] − ( E x ∼ ! [ 请添加图片描述 ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 09997 d 816 f 1 f 49398 c 55 a a 105 c 83 f 4 e e . p n g ) p [ f ( x ) ] ) 2 V a r x ∼ q [ f ( x ) p ( x ) q ( x ) ] = E x ∼ q [ f ( x ) 2 p ( x ) q ( x ) ] − ( E x ∼ q [ f ( x ) ] ) 2 Var_{x\sim p}[f(x)]=E_{x\sim p}[f(x)^2]-(E_{x\sim ![请添加图片描述](https://img-/09997d816f1f49398c55aa105c83f4ee.png) p}[f(x)])^2 \\Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}]=E_{x\sim q}[f(x)^2 \frac{p(x)}{q(x)}]-(E_{x\sim q}[f(x)])^2 Varx∼p​[f(x)]=Ex∼p​[f(x)2]−(Ex∼![请添加图片描述](https://img−/09997d816f1f49398c55aa105c83f4ee.png)p​[f(x)])2Varx∼q​[f(x)q(x)p(x)​]=Ex∼q​[f(x)2q(x)p(x)​]−(Ex∼q​[f(x)])2

如果 p ( x ) , q ( x ) p(x),q(x) p(x),q(x)差异过大,方差就会差很多。

从第一个等式到第二个等式利用了重要性采样原理,第二等式到第三个等式利用了条件概率。第三个等式中 p θ ( s t ) p_\theta(s_t) pθ​(st​)和 p θ ′ ( s t ) p_{\theta '}(s_t) pθ′​(st​)可以假设是差不多的,因为 p θ ( s t ) p_\theta(s_t) pθ​(st​)很难算,用 θ \theta θ去跟环境做互动,算 s t s_t st​出现的概率,尤其是图片,同样的 s t s_t st​不会出现第二次,无法估算这一项因此无视这个问题。

但 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)很好算, θ \theta θ是一个网络,把 s t s_t st​代进去,就会告诉某个状态的 a t a_t at​概率是多少。

利用右上角蓝色方框内的公式,就能够反推原函数

J θ ′ ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] J^{\theta'}(\theta)=E_{(s_t,a_t)\sim \pi _{\theta'}}[\frac{p_\theta(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)] Jθ′(θ)=E(st​,at​)∼πθ′​​[pθ′​(at​∣st​)pθ​(at​∣st​)​Aθ′(st​,at​)]

三、如何使 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta'}(a_t|s_t) pθ′​(at​∣st​)不相差太多?

3.1 PPO

我们已经通过重要性采样把on-policy转换成off-policy,但重要性采样有一个问题:若 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta'}(a_t|s_t) pθ′​(at​∣st​)相差太多,重要性采样的结果就会不怎么好。这就是PPO在做的事情。

在训练的时候增加一个约束,这个约束是限制 θ \theta θ和 θ ′ \theta' θ′输出的动作KL散度。这里并不是指参数上的距离,而是衡量它们动作上的距离。

PPO的前身是TRPO信任区域策略优化,TRPO式子:

J T R P O θ ′ = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] K L ( θ , θ ′ ) < δ J^{\theta'}_{TRPO}=E_{(s_t,a_t)\sim \pi _{\theta'}}[\frac{p_\theta(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)] \\ KL(\theta,\theta')<\delta JTRPOθ′​=E(st​,at​)∼πθ′​​[pθ′​(at​∣st​)pθ​(at​∣st​)​Aθ′(st​,at​)]KL(θ,θ′)<δ

PPO的式子是:

J P P O θ ′ = J θ ′ ( θ ) − β K L ( θ , θ ′ ) J θ ′ ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] J^{\theta'}_{PPO}=J^{\theta'}(\theta)-\beta KL(\theta,\theta') \\ J^{\theta'}(\theta)=E_{(s_t,a_t)\sim \pi _{\theta'}}[\frac{p_\theta(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)] JPPOθ′​=Jθ′(θ)−βKL(θ,θ′)Jθ′(θ)=E(st​,at​)∼πθ′​​[pθ′​(at​∣st​)pθ​(at​∣st​)​Aθ′(st​,at​)]

所以两者的区别是,TRPO在求解时KL作为约束,PPO将约束放在式子里。在基于梯度的优化时,有约束很难处理,因此两者的效率差不多,但PPO更容易求解。

PPO算法有两个主要的变种:PPO-Penalty和PPO-Clip。

3.1.1 PPO-Penalty (PPO1)

J P P O θ ′ = J θ ′ ( θ ) − β K L ( θ , θ ′ ) i f K L ( θ , θ ′ ) > K L m a x , i n c r e a s e β i f K L ( θ , θ ′ ) < K L m a x , d e c r e a s e β J^{\theta'}_{PPO}=J^{\theta'}(\theta)-\beta KL(\theta,\theta')\\ if KL(\theta,\theta')>KL_{max},increase \beta\\ if KL(\theta,\theta')<KL_{max},decrease \beta JPPOθ′​=Jθ′(θ)−βKL(θ,θ′)ifKL(θ,θ′)>KLmax​,increaseβifKL(θ,θ′)<KLmax​,decreaseβ

β \beta β是一个自适应调整的权重。当KL过大,增加惩罚;当KL小于能够接受的最大值,减小惩罚项。

3.1.2 PPO-Clip (PPO2)

PPO2没有较复杂的KL散度。PPO2要最大化的目标函数如下所示:

J P P O 2 θ k ( θ ) = ∑ ( a t , s t ) m i n ( p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) A θ k ( s t , a t ) , c l i p ( p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) , 1 − ϵ , 1 + ϵ ) ) J^{\theta^k}_{PPO2}(\theta)=\sum_{(a_t,s_t)}min(\frac{p_\theta(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}A^{\theta^k}(s_t,a_t),clip(\frac{p_\theta(a_t|s_t)}{p_{\theta^k}(a_t|s_t)},1-\epsilon,1+\epsilon)) JPPO2θk​(θ)=(at​,st​)∑​min(pθk​(at​∣st​)pθ​(at​∣st​)​Aθk(st​,at​),clip(pθk​(at​∣st​)pθ​(at​∣st​)​,1−ϵ,1+ϵ))

clip这里是,如果第一项小于第二项,就输出第二项;如果大于第三项,就输出第三项。 ϵ \epsilon ϵ是一个超参数,需要tune,可以取0.1/0.2。

接下来看一下clip函数算出来究竟是神马形状。

那么,PPO2是如何实现减小 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta'}(a_t|s_t) pθ′​(at​∣st​)的差异的呢?

A>0时,取蓝线和绿线中最小的,就是红色线。A>0说明 ( s t , a t ) (s_t,a_t) (st​,at​)是相对较好的,因此我们希望尽可能提升 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​),但为了减小 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta'}(a_t|s_t) pθ′​(at​∣st​)的差异,训练到 p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) \frac{p_\theta(a_t|s_t)}{p_{\theta'}(a_t|s_t)} pθ′​(at​∣st​)pθ​(at​∣st​)​大到 1 + ϵ 1+\epsilon 1+ϵ就停止了。

A<0时,为了min,我们需要取蓝线和绿线中最大的,即红色线。A<0说明 ( s t , a t ) (s_t,a_t) (st​,at​)是相对较差的,因此我们希望尽可能减小 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​),但为了减小 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta'}(a_t|s_t) pθ′​(at​∣st​)的差异,训练到 p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) \frac{p_\theta(a_t|s_t)}{p_{\theta'}(a_t|s_t)} pθ′​(at​∣st​)pθ​(at​∣st​)​小到 1 − ϵ 1-\epsilon 1−ϵ就停止了。

争议:PPO是on-policy还是off-policy?

这个问题在内外网都是一个极具争议的。我个人认为它是on-policy,但严格上来说是off-policy的。因为ppo其实在探索利用阶段的策略只是说是相近不能说相同,从这个意义上来说是off-policy。但ppo利用了constraints来尽可能减小两个policy之间的差距,从思想上来讲其实是on-policy。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。