目录

  • 一、为什么要从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)相关推荐

  1. 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)

    强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...

  2. ADPRL - 近似动态规划和强化学习 - Note 8 - 近似策略迭代 (Approximate Policy Iteration)

    Note 8 近似策略迭代 Approximate Policy Iteration 近似策略迭代 Note 8 近似策略迭代 Approximate Policy Iteration 8.1 通用框 ...

  3. 强化学习《基于策略价值 - Pathwise Derivative Policy Grident》

    一:算法介绍 二:训练过程 三:和Q-Learning训练的具体算法的不同 Q-Learning的方式 本算法的改动

  4. 102页PPT,DeepMind强化学习最新进展,含图文、公式和代码

    来源:专知 本文多图,建议阅读9分钟 本文提供涵盖了强化学习RL基础概念.策略梯度.动态规划以及D4PG.R2D3等RL算法的资源. [ 导读 ]在DeepMing任职的Nando de Freita ...

  5. DeepMind Nando(原牛津大学教授)强化学习最新进展,含图文、公式和代码,附102页PPT下载...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 转自:专知 [导读]在DeepMing任职的Nando de Freitas(原牛津大学 ...

  6. 中科院自动化所介绍深度强化学习进展:从AlphaGo到AlphaGo Zero

    来源:德先生 概要:2016年初,AlphaGo战胜李世石成为人工智能的里程碑事件.其核心技术深度强化学习受到人们的广泛关注和研究,取得了丰硕的理论和应用成果. 深度强化学习进展:  从AlphaGo ...

  7. 近端策略优化深度强化学习算法

    PPO:Proximal Policy Optimization Algorithms,其优化的核心目标是: ppo paper 策略梯度 以下是马尔可夫决策过程MDP的相关基础以及强化学习的优化目标 ...

  8. 强化学习重点文献汇总

    理论 文献名 引用信息 备注 Reinforcement learning: An introduction Sutton R S, Barto A G. Reinforcement learning ...

  9. 综述向:强化学习经典方法梳理

    最近组内需要做强化学习相关研究,因为面对的是新项目,同事们对强化学习的原理都不太了解,我们就计划轮流在组内做一些不定期分享,补充相关的基础知识.于是我对强化学习的一些经典算法进行了梳理,并在此进行记录 ...

  10. 深度强化学习系列(15): TRPO算法原理及Tensorflow实现

    深入浅出理解TRPO算法 1.论文思想与原理 1.1 Surrogate function(替代函数) 1.2 目标函数 1.3 一阶近似: L函数 1.3.1 技巧一:一阶近似 1.3.2 重要性采 ...

最新文章

  1. 【ML】【GM】【转】图模型(graphical model, GM)的表示
  2. 在HYPER-V中利用差异磁盘和SYSPREP技术安装多个WINDOWS 2008
  3. IT人士有哪些保健建议
  4. vue3.0中使用计算属性时报错
  5. 程序员常犯的5个非技术性错误
  6. JDK(Install)
  7. 编程之美:从无头单链表中删除节点,讨论
  8. mysql 复制权限不够_解决不能mysqldump备份权限不够的问题
  9. 风景园林设计专业要学哪些软件?这几款软件你一定要了解!
  10. java小游戏实战局域网联机_结对编程3——黄金点小游戏实现局域网联机
  11. Appsec在RSA 2013上
  12. SQL注入之布尔型盲注
  13. 360°全景图制作步骤和技巧有哪些?
  14. 惠普服务器开机显示系统恢复选项,惠普一键恢复出厂设置【操作办法】
  15. 扑克牌的牌型基础判断
  16. 什么行业程序员不用996?
  17. 【Gorilla】Gorilla平台实现刺激随机呈现
  18. redis list操作leftpop
  19. CDA LEVEL 1 考试,知识点汇总《市场调研》
  20. #遗憾#重重的挫败感再次袭来!!!

热门文章

  1. C语言实现简单小游戏---扫雷
  2. 软件工程实训有必要吗_软件工程实训心得体会
  3. 赛迪顾问看好中国信息安全市场稳步发展
  4. VB/VBA,请让我点名表扬你
  5. 什么是mysql的慢查询,看完你就懂了
  6. Java 环境下使用 AES 加密的特殊问题处理
  7. excel提取奇数行
  8. 过程计算机系统 pcs,科学网-对PCS(等离子体控制系统)软件基本结构的理解-章勇的博文...
  9. y700支持m2硬盘_别再浪费电脑的潜力,这些笔记本电脑都能升级NVMe固态硬盘
  10. 用pyQt实现信号采集数据图形化显示