强化学习的数学基础2—PPO系列算法

这篇笔记来自于李宏毅老师的公开课

PPO算法全称是Proximal Policy Optimization算法。该类算法是为了解决Policy Gradient算法速度慢的问题。

先给出两个学习的概念:

  • On-Policy学习:学习的Agent和与环境互动的Agent是同一个。可以理解为Agent一边互动一边学习。
  • Off-Policy学习:学习的Agent和与环境互动的Agent不是同一个,可以理解为有一个Agent在学习,还有一个Agent在与环境互动产生数据。

在Policy Gradient算法中,每完成一次游戏就要进行一次迭代更新,Agent大部分的时间都浪费在产生数据上了;而且很明显,这是On-Policy的策略。

回顾更新的梯度公式:
(1)∇Rˉθ=Eτ∼Pθ(τ)[R(τ)∇log⁡Pθ(τ)]\nabla \bar{R}_{\theta}=E_{\tau\sim P_{\theta}(\tau)}\left[R(\tau)\nabla \log {P_{\theta}(\tau)} \right] \tag{1} ∇Rˉθ​=Eτ∼Pθ​(τ)​[R(τ)∇logPθ​(τ)](1)

先引入Importance Sampling的概念:

假设两个分布p(x)p(x)p(x)和q(x)q(x)q(x),我们只知道p(x)p(x)p(x)满足某个分布,但是无法对p(x)p(x)p(x)进行积分;而且假设我们只能从q(x)q(x)q(x)中进行sampling data。

先给出一个转换公式:
Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)p(x)q(x)q(x)dx=Ex∼q[f(x)p(x)q(x)]E_{x\sim p}[f(x)] = \int{f(x)p(x)dx} =\int{f(x)\frac{p(x)}{q(x)}q(x)dx}=E_{x\sim q}\left[f(x)\frac{p(x)}{q(x)}\right] 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)​]
这样就把满足ppp分布的均值转换成满足qqq分布的均值了。

但是,这么做有缺陷,因为虽然通过变换,使得两者的均值相等,但是两者的方差是不同的。根据方差公式:
Var(X)=E(X2)−E2(X)Var(X)=E(X^2)-E^2(X) Var(X)=E(X2)−E2(X)
那么,有
Varx∼p(x)=Ex∼p[f2(x)]−Ex∼p2[f(x)]Var_{x\sim p}(x) = E_{x\sim p}\left[f^2(x)\right]-E_{x \sim p}^2\left[f(x)\right] Varx∼p​(x)=Ex∼p​[f2(x)]−Ex∼p2​[f(x)]

Varx∼q(x)=Ex∼q[f(x)p(x)q(x)]=Ex∼q[f2(x)(p(x)q(x))2]−Ex∼q2[f2(x)(p(x)q(x))]=Ex∼p[f2(x)(p(x)q(x))]−Ex∼p2[f(x)]Var_{x\sim q}(x) = E_{x\sim q}\left[f(x)\frac{p(x)}{q(x)}\right]\\=E_{x\sim q}\left[f^2(x)\left(\frac{p(x)}{q(x)}\right)^2\right]-E_{x\sim q}^2\left[f^2(x)\left(\frac{p(x)}{q(x)}\right)\right]\\=E_{x\sim p}\left[f^2(x)\left(\frac{p(x)}{q(x)}\right)\right]-E_{x\sim p}^2\left[f(x)\right] Varx∼q​(x)=Ex∼q​[f(x)q(x)p(x)​]=Ex∼q​[f2(x)(q(x)p(x)​)2]−Ex∼q2​[f2(x)(q(x)p(x)​)]=Ex∼p​[f2(x)(q(x)p(x)​)]−Ex∼p2​[f(x)]
所以,p(x)q(x)\frac{p(x)}{q(x)}q(x)p(x)​很明显影响分布,即方差。注意x∼qx\sim qx∼q分布的计算中,省去了最后转换的一步,计算比较麻烦,直接给出了结论。

根据[给出的公式,有:
∇Rˉθ=Eτ∼pθ′(τ)[pθ(x)pθ′(x)R(τ)∇log⁡Pθ(τ)]\nabla \bar{R}_{\theta}=E_{\tau\sim p_{{\theta}'}(\tau)}\left[\frac{p_{\theta}(x)}{p_{{\theta}^{'}}(x)} R(\tau)\nabla\log P_{\theta}(\tau)\right] ∇Rˉθ​=Eτ∼pθ′​(τ)​[pθ′​(x)pθ​(x)​R(τ)∇logPθ​(τ)]
同时令Aθ(st,at)=∑τ(R(τ)−b)A^{\theta}(s_t,a_t)=\sum_{\tau}(R(\tau)-b)Aθ(st​,at​)=∑τ​(R(τ)−b),那么
(1)E(st,at)∼πθ[Aθ(st,at)∇log⁡Pθ(at(n)∣st(n))]=E(st,at)∼πθ′[pθ(st,at)pθ′(st,at)Aθ′(st,at)∇log⁡Pθ(at(n)∣st(n))]=E(st,at)∼πθ′[pθ(at∣st)pθ′(at∣st)pθ(st)pθ′(st)Aθ′(st,at)∇log⁡Pθ(at∣st)]E_{(s_t,a_t)\sim \pi_{\theta}}\left[A^{\theta}(s_t,a_t)\nabla \log {P_{\theta}(a_{t}^{(n)}|s_{t}^{(n)})}\right]\\=E_{(s_t,a_t)\sim \pi_{{\theta}^{'}}}\left[\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)})}\right]\\=E_{(s_t,a_t)\sim \pi_{{\theta}^{'}}}\left[\frac{p_{\theta}(a_t|s_t)}{p_{{\theta}^{'}}(a_t|s_t)}\frac{p_{\theta}(s_t)}{p_{{\theta}^{'}}(s_t)}A^{{\theta}^{'}}(s_t,a_t)\nabla \log {P_{\theta}(a_{t}|s_{t})}\right] \tag{1} E(st​,at​)∼πθ​​[Aθ(st​,at​)∇logPθ​(at(n)​∣st(n)​)]=E(st​,at​)∼πθ′​​[pθ′​(st​,at​)pθ​(st​,at​)​Aθ′(st​,at​)∇logPθ​(at(n)​∣st(n)​)]=E(st​,at​)∼πθ′​​[pθ′​(at​∣st​)pθ​(at​∣st​)​pθ′​(st​)pθ​(st​)​Aθ′(st​,at​)∇logPθ​(at​∣st​)](1)

在公式1的最后,因为状态出现的概率一般与Actor无关,所以有pθ(st)=pθ′(st)p_{\theta}(s_t)=p_{\theta}^{'}(s_t)pθ​(st​)=pθ′​(st​),所以最后有公式:
(2)E(st,at)∼πθ[Aθ(st,at)∇log⁡Pθ(at(n)∣st(n))]=E(st,at)∼πθ′[pθ(at∣st)pθ′(at∣st)Aθ′(st)∇log⁡Pθ(at∣st)]E_{(s_t,a_t)\sim \pi_{\theta}}\left[A^{\theta}(s_t,a_t)\nabla \log {P_{\theta}(a_{t}^{(n)}|s_{t}^{(n)})}\right]=E_{(s_t,a_t)\sim \pi_{{\theta}^{'}}}\left[\frac{p_{\theta}(a_t|s_t)}{p_{{\theta}^{'}}(a_t|s_t)}A^{{\theta}^{'}}(s_t)\nabla \log {P_{\theta}(a_{t}|s_{t})}\right] \tag{2} E(st​,at​)∼πθ​​[Aθ(st​,at​)∇logPθ​(at(n)​∣st(n)​)]=E(st​,at​)∼πθ′​​[pθ′​(at​∣st​)pθ​(at​∣st​)​Aθ′(st​)∇logPθ​(at​∣st​)](2)
又因为有公式:
∇f(x)=f(x)∇log⁡f(x)\nabla f(x) = f(x)\nabla \log{f(x)} ∇f(x)=f(x)∇logf(x)
所以(2)(2)(2)式化简为:
Jθ′(θ)=E(st,at)∼πθ′[pθ(at∣st)pθ′(at∣st)Aθ′(st,at)]J^{{\theta}^{'}}(\theta)=E_{(s_t,a_t)\sim \pi_{{\theta}^{'}}}\left[\frac{p_{\theta}(a_t|s_t)}{p_{{\theta}^{'}}(a_t|s_t)}A^{{\theta}^{'}}(s_t,a_t)\right] Jθ′(θ)=E(st​,at​)∼πθ′​​[pθ′​(at​∣st​)pθ​(at​∣st​)​Aθ′(st​,at​)]

在使用PPO系列的算法时,为了保证πθ\pi_{\theta}πθ​和πθ′\pi_{{\theta}^{'}}πθ′​分布尽可能均匀,应该使得这两个的输出尽量接近才可以。

最后给出PPO算法:

  • 初始化策略参数θ0\theta^{0}θ0
  • 在每一次迭代中:
    • 使用θk\theta^{k}θk与环境进行交互,收集{st,at}\{s_t,a_t\}{st​,at​}并计算Aθk(st,at)A^{\theta^{k}}(s_t,a_t)Aθk(st​,at​)
    • 寻找θ\thetaθ优化JPPO(θ)J_{PPO}(\theta)JPPO​(θ)
      JPPOθk(θ)=Jθk(θ)−βKL(θ,θk)其中,Jθk(θ)≈∑(st,at)pθ(at∣st)pθk(at∣st)Aθk(st,at)J_{PPO}^{\theta^{k}}(\theta)=J^{\theta^{k}}(\theta)-\beta KL(\theta,{\theta}^k) \\ 其中,J^{\theta^{k}}(\theta)\approx \sum_{(s_t,a_t)}\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}A^{\theta^k}(s_t,a_t) JPPOθk​(θ)=Jθk(θ)−βKL(θ,θk)其中,Jθk(θ)≈(st​,at​)∑​pθk​(at​∣st​)pθ​(at​∣st​)​Aθk(st​,at​)
    • 如果KL(θ,θk)>KLmaxKL(\theta,{\theta}^k)>KL_{max}KL(θ,θk)>KLmax​,增加β\betaβ
    • 如果KL(θ,θk)&lt;KLminKL(\theta,{\theta}^k)&lt;KL_{min}KL(θ,θk)<KLmin​,减小β\betaβ

其中,βKL(θ,θk)\beta KL(\theta,{\theta}^k)βKL(θ,θk)是限制参数,为了减少两个Agent之间输出的差距。

再给出一个修正后的PPO2算法的更新公式,一般使用这个:
JPPO2θk(θ)≈∑(st,at)min(pθ(at∣st)pθk(at∣st)Aθk(st,at),clip(pθ(at∣st)pθk(at∣st),1−ϵ,1+ϵ))J_{PPO2}^{\theta^{k}}(\theta)\approx \sum_{(s_t,a_t)}\mathop{min}\left(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}A^{\theta^k}(s_t,a_t),\mathop{clip}\left(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}, 1-\epsilon,1+\epsilon\right)\right) JPPO2θk​(θ)≈(st​,at​)∑​min(pθk​(at​∣st​)pθ​(at​∣st​)​Aθk(st​,at​),clip(pθk​(at​∣st​)pθ​(at​∣st​)​,1−ϵ,1+ϵ))
给出clipclipclip函数的定义:
clip(x,a,b)={a,x&lt;ax,a≤x≤bb,x&gt;bclip(x,a,b)=\begin{cases} a, &amp; x &lt; a \\ x, &amp; a \leq x \leq b \\ b, &amp; x &gt; b \end{cases} clip(x,a,b)=⎩⎪⎨⎪⎧​a,x,b,​x<aa≤x≤bx>b​

强化学习的数学基础2---PPO算法相关推荐

  1. 【强化学习】倒立摆-PPO算法

    先从最简单的开始入门吧 主要参考: 阿里云强化学习训练营 主要改动: 因为原代码使用Categorical,训练效果不佳,改成了比较简单的动作选择,效果改善了. 添加一部分函数的说明[Categori ...

  2. 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BRAC算法原理详解与实现(经验篇)

    论文原文:[Yifan Wu, George Tucker, Ofir Nachum: "Behavior Regularized Offline Reinforcement Learnin ...

  3. ChatGPT 使用 强化学习:Proximal Policy Optimization算法(详细图解)

    ChatGPT 使用 强化学习:Proximal Policy Optimization算法 强化学习中的PPO(Proximal Policy Optimization)算法是一种高效的策略优化方法 ...

  4. 离线强化学习(Offline RL)系列3: (算法篇)策略约束 - BEAR算法原理详解与实现

    论文信息:Stabilizing Off-Policy Q-Learning via Bootstrapping Error Reduction 本文由UC Berkeley的Sergey Levin ...

  5. 强化学习ppt_机器学习原理、算法与应用配套PPT第四部分(深度学习概论、自动编码器、强化学习、聚类算法、半监督学习等)...

    本文是SIGAI公众号文章作者雷明编写的<机器学习>课程新版PPT第四部分,包含了课程内容的深度学习概论,自动编码器,受限玻尔兹曼机,聚类算法1,聚类算法2,聚类算法3,半监督学习,强化学 ...

  6. 离线强化学习(Offline RL)系列3: (算法篇) IQL(Implicit Q-learning)算法详解与实现

    [更新记录] 论文信息:Ilya Kostrikov, Ashvin Nair, Sergey Levine: "Offline Reinforcement Learning with Im ...

  7. 离线强化学习(Offline RL)系列3: (算法篇) AWAC算法详解与实现

    [更新记录] 论文信息:AWAC: Accelerating Online Reinforcement Learning with Offline Datasets [Code] 本文由UC Berk ...

  8. 人群环境中基于深度强化学习的移动机器人避障算法

    摘要: 为了控制移动机器人在人群密集的复杂环境中高效友好地完成避障任务,本文提出了一种人群环境中基于深度强化学习的移动机器人避障算法.首先,针对深度强化学习算法中值函数网络学习能力不足的情况,基于行人 ...

  9. 离线强化学习(Offline RL)系列3: (算法篇) Onestep 算法详解与实现

    [更新记录] 论文信息: David Brandfonbrener, William F. Whitney, Rajesh Ranganath, Joan Bruna: "Offline R ...

最新文章

  1. 卷积网络基础知识---Group Convolution分组卷积
  2. 用电脑更新手机ios系统_手机系统频繁提示更新,到底要不要更新?
  3. java List集合转换为List Map集合
  4. android dp sp px_Android屏幕适配★★重点盘点★★
  5. 重磅!AWS任命张文翊女士为全球副总裁及大中华区执行董事!
  6. WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效...
  7. Linux管理员常用网络资源(收集帖)
  8. DemoKit编译过程错误
  9. Linux下安装配置maven
  10. web 打开pdf文件
  11. Java之图片添加文字
  12. 七脉轮位置_[转载]地球的七大脉轮位置
  13. Opengl中:屏幕坐标到世界坐标(GLFW实现)
  14. 菜狗为了打败菜猫,学了一套如来十三掌
  15. c语言密文加密解密问题注释,c语言通过openssl aes对称加解密和base64编解码将密码存储成密文...
  16. 新职业教育的三节课,凭什么做到今天这样
  17. ubuntu中显示实时网速的方法
  18. HDU5142 NPY and arithmetic progression BestCoder Round #23 1002
  19. CSS day_04(6.15)背景颜色图片、修饰元素、浮动
  20. 新技術讓大數據“看得見”

热门文章

  1. oracle 主键自增函数_Oracle数据库中创建自增主键的实例教程
  2. 第 20 次 CSP认证 202009-1 检测点查询
  3. Java 1.1字符串
  4. [转]优秀的女孩是没有性生活的
  5. YACC、LEX、JAVACC-------常用的编译工具
  6. SQL语句关联查询,UNION ALL用法,结果中查询
  7. 【QCustomPlot】1.3 - 运行官方例程Demo,介绍功能
  8. QString、QByteArray 相互转换、和16进制与asc2转换
  9. arm-none-linux-gnueabi交叉工具链 no such file or directory
  10. Mysql通过存储过程批量插入数据