【强化学习】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 PPO
- 3.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-blog.csdnimg.cn/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−blog.csdnimg.cn/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。
【强化学习】PPO:从On-policy到Off-policy(PPO/TRPO/PPO-Penalty/PPO-Clip)相关推荐
- 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)
强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...
- ADPRL - 近似动态规划和强化学习 - Note 8 - 近似策略迭代 (Approximate Policy Iteration)
Note 8 近似策略迭代 Approximate Policy Iteration 近似策略迭代 Note 8 近似策略迭代 Approximate Policy Iteration 8.1 通用框 ...
- 强化学习《基于策略价值 - Pathwise Derivative Policy Grident》
一:算法介绍 二:训练过程 三:和Q-Learning训练的具体算法的不同 Q-Learning的方式 本算法的改动
- 102页PPT,DeepMind强化学习最新进展,含图文、公式和代码
来源:专知 本文多图,建议阅读9分钟 本文提供涵盖了强化学习RL基础概念.策略梯度.动态规划以及D4PG.R2D3等RL算法的资源. [ 导读 ]在DeepMing任职的Nando de Freita ...
- DeepMind Nando(原牛津大学教授)强化学习最新进展,含图文、公式和代码,附102页PPT下载...
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 转自:专知 [导读]在DeepMing任职的Nando de Freitas(原牛津大学 ...
- 中科院自动化所介绍深度强化学习进展:从AlphaGo到AlphaGo Zero
来源:德先生 概要:2016年初,AlphaGo战胜李世石成为人工智能的里程碑事件.其核心技术深度强化学习受到人们的广泛关注和研究,取得了丰硕的理论和应用成果. 深度强化学习进展: 从AlphaGo ...
- 近端策略优化深度强化学习算法
PPO:Proximal Policy Optimization Algorithms,其优化的核心目标是: ppo paper 策略梯度 以下是马尔可夫决策过程MDP的相关基础以及强化学习的优化目标 ...
- 强化学习重点文献汇总
理论 文献名 引用信息 备注 Reinforcement learning: An introduction Sutton R S, Barto A G. Reinforcement learning ...
- 综述向:强化学习经典方法梳理
最近组内需要做强化学习相关研究,因为面对的是新项目,同事们对强化学习的原理都不太了解,我们就计划轮流在组内做一些不定期分享,补充相关的基础知识.于是我对强化学习的一些经典算法进行了梳理,并在此进行记录 ...
- 深度强化学习系列(15): TRPO算法原理及Tensorflow实现
深入浅出理解TRPO算法 1.论文思想与原理 1.1 Surrogate function(替代函数) 1.2 目标函数 1.3 一阶近似: L函数 1.3.1 技巧一:一阶近似 1.3.2 重要性采 ...
最新文章
- 【ML】【GM】【转】图模型(graphical model, GM)的表示
- 在HYPER-V中利用差异磁盘和SYSPREP技术安装多个WINDOWS 2008
- IT人士有哪些保健建议
- vue3.0中使用计算属性时报错
- 程序员常犯的5个非技术性错误
- JDK(Install)
- 编程之美:从无头单链表中删除节点,讨论
- mysql 复制权限不够_解决不能mysqldump备份权限不够的问题
- 风景园林设计专业要学哪些软件?这几款软件你一定要了解!
- java小游戏实战局域网联机_结对编程3——黄金点小游戏实现局域网联机
- Appsec在RSA 2013上
- SQL注入之布尔型盲注
- 360°全景图制作步骤和技巧有哪些?
- 惠普服务器开机显示系统恢复选项,惠普一键恢复出厂设置【操作办法】
- 扑克牌的牌型基础判断
- 什么行业程序员不用996?
- 【Gorilla】Gorilla平台实现刺激随机呈现
- redis list操作leftpop
- CDA LEVEL 1 考试,知识点汇总《市场调研》
- #遗憾#重重的挫败感再次袭来!!!