强化学习——Proximal Policy Optimization Algorithms
文章目录
- 前言
- 为什么需要PPO
- TRPO
- PPO
前言
本文对论文《Proximal Policy Optimization Algorithms》进行总结,如有错误,欢迎指出。
为什么需要PPO
随机策略梯度的数学表达式为
∇J(θ)=ES[EA∼π(.∣S;θ)[Qπ(S,A)∇θlnπ(A∣S;θ)]](1.0)\nabla J(\theta)=E_S[E_{A\sim \pi(.|S;\theta)}[Q_\pi(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)]]\tag{1.0} ∇J(θ)=ES[EA∼π(.∣S;θ)[Qπ(S,A)∇θlnπ(A∣S;θ)]](1.0)
如无特殊提及,本文中的AAA表示动作,SSS表示状态,π\piπ表示策略。每使用一次式1.0更新策略网络,就需要策略网络控制智能体与环境交互,从而获得SSS与AAA,这种做法非常耗时。若能在训练前提前采样好SSS与AAA,并将其存储在经验回放数组中,接着从经验回放数组中抽取SSS与AAA训练策略网络,这将将极大程度减少训练时间。基于上述考虑,便有了Proximal Policy Optimization(PPO),在介绍PPO之前,我们先介绍下TRPO。
TRPO
TPRO利用重要性采样,对随机策略梯度进行近似,从而利用经验回放数组快速更新策略网络。依据期望的数学定义,可得重要性采样的数学形式:
Ex∼p[f(x)]=Ex∼q[p(x)q(x)f(x)](2.0)E_{x \sim p}[f(x)]=E_{x \sim q}[\frac{p(x)}{q(x)}f(x)]\tag{2.0} Ex∼p[f(x)]=Ex∼q[q(x)p(x)f(x)](2.0)
值得一提的是,式2.0等式两侧的分布虽然期望形式一致,但是方差却不同:
Varx∼p[f(x)]=Ex∼p[f(x)2]−(Ex∼p[f(x)])2Varx∼q[p(x)q(x)f(x)]=Ex∼p[f(x)2p(x)q(x)]−(Ex∼p[f(x)])2\begin{aligned} Var_{x\sim p}[f(x)]&=E_{x\sim p}[f(x)^2]-(E_{x\sim p}[f(x)])^2\\ Var_{x\sim q}[\frac{p(x)}{q(x)}f(x)]&=E_{x\sim p}[f(x)^2\frac{p(x)}{q(x)}]-(E_{x\sim p}[f(x)])^2 \end{aligned} Varx∼p[f(x)]Varx∼q[q(x)p(x)f(x)]=Ex∼p[f(x)2]−(Ex∼p[f(x)])2=Ex∼p[f(x)2q(x)p(x)]−(Ex∼p[f(x)])2
当分布p(x)p(x)p(x)与q(x)q(x)q(x)近似时,式2.0等式两侧分布的方差也近似。
利用式2.0对式1.0进行数学变化可得
∇J(θ)=ES[EA∼π(.∣S;θ)[Qπ(S,A)∇θlnπ(A∣S;θ)]]=ES[EA∼π′(.∣S;θold)[π(A∣S;θ)π′(A∣S;θold)Qπ(S,A)∇θlnπ(A∣S;θ)]]≈ES[EA∼π′(.∣S;θold)[π(A∣S;θ)π′(A∣S;θold)Qπ′(S,A)∇θlnπ(A∣S;θ)]](2.1)\begin{aligned} \nabla J(\theta)&=E_S[E_{A\sim \pi(.|S;\theta)}[Q_\pi(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)]]\\ &=E_S[E_{A\sim \pi'(.|S;\theta_{old})}[\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}Q_\pi(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)]]\\ &\approx E_S[E_{A\sim \pi'(.|S;\theta_{old})}[\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}Q_{\pi'}(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)]]\tag{2.1} \end{aligned} ∇J(θ)=ES[EA∼π(.∣S;θ)[Qπ(S,A)∇θlnπ(A∣S;θ)]]=ES[EA∼π′(.∣S;θold)[π′(A∣S;θold)π(A∣S;θ)Qπ(S,A)∇θlnπ(A∣S;θ)]]≈ES[EA∼π′(.∣S;θold)[π′(A∣S;θold)π(A∣S;θ)Qπ′(S,A)∇θlnπ(A∣S;θ)]](2.1)
当策略π\piπ与策略π′\pi'π′近似时,有Qπ(S,A)≈Qπ′(S,A)Q_\pi(S,A)\approx Q_{\pi'}(S,A)Qπ(S,A)≈Qπ′(S,A),由此可得式2.1中第三行的约等于符号。为了让策略π\piπ与策略π′\pi'π′近似,因此TPRO将策略π\piπ与策略π′\pi'π′的KL散度作为正则项。总体的损失函数为
maxL(θ)=maxEA∼π′(.∣S;θold),S[π(A∣S;θ)π′(A∣S;θold)Vπ(S)]−βKL(π(A∣S;θ),π′(A∣S;θold))\begin{aligned} \max L(\theta)=\max E_{{A\sim \pi'(.|S;\theta_{old})},S}[\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}V_{\pi}(S)]-\beta KL(\pi(A|S;\theta),\pi'(A|S;\theta_{old})) \end{aligned} maxL(θ)=maxEA∼π′(.∣S;θold),S[π′(A∣S;θold)π(A∣S;θ)Vπ(S)]−βKL(π(A∣S;θ),π′(A∣S;θold))
EA∼π′(.∣S;θold),S[π(A∣S;θ)π′(A∣S;θold)Vπ(S)]E_{{A\sim \pi'(.|S;\theta_{old})},S}[\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}V_{\pi}(S)]EA∼π′(.∣S;θold),S[π′(A∣S;θold)π(A∣S;θ)Vπ(S)]对θ\thetaθ的求导结果即为式2.1,β\betaβ为超参数。训练前,利用策略π′(A∣S;θold)\pi'(A|S;\theta_{old})π′(A∣S;θold)(可以是使用过去参数θold\theta_{old}θold的策略网络)控制智能体与环境交互,将一系列动作与状态对(sts_tst,ata_tat)存入经验回放数组中。训练时,从经验回放数组抽取一系列动作与状态,依据上述损失函数,利用梯度上升法更新策略网络(KL散度项如何计算可以参考交叉熵)。
PPO
PPO对TRPO的优化目标进行了改动,设r(θ)=π(A∣S;θ)π′(A∣S;θold)r(\theta)=\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}r(θ)=π′(A∣S;θold)π(A∣S;θ),A=Vπ(S)A=V_\pi(S)A=Vπ(S),则优化目标(省略了部分符号)变为
maxLclip(θ)=maxEA∼π′,S[min(r(θ)A,clip(r(θ),1−ϵ,1+ϵ))A)](3.0)\begin{aligned} \max L^{clip}(\theta)=\max E_{A\sim \pi',S}[\min (r(\theta)A,clip(r(\theta),1-\epsilon,1+\epsilon))A)]\tag{3.0} \end{aligned} maxLclip(θ)=maxEA∼π′,S[min(r(θ)A,clip(r(θ),1−ϵ,1+ϵ))A)](3.0)
clip(r(θ),1−ϵ,1+ϵ))clip(r(\theta),1-\epsilon,1+\epsilon))clip(r(θ),1−ϵ,1+ϵ))表示当r(θ)<1−ϵr(\theta)<1-\epsilonr(θ)<1−ϵ时,会被截断为1−ϵ1-\epsilon1−ϵ,当r(θ)>1+ϵr(\theta)>1+\epsilonr(θ)>1+ϵ时,会被截断为1+ϵ1+\epsilon1+ϵ。ϵ\epsilonϵ为超参数。式3.0的取值图像为
其基本思路为,当r(θ)r(\theta)r(θ)位于[1−ϵ,1+ϵ][1-\epsilon,1+\epsilon][1−ϵ,1+ϵ]时,策略π\piπ与策略π′\pi'π′较为近似,此时式2.1中的约等于符号成立,此时的梯度约等于随机策略梯度(式1.0)。当r(θ)r(\theta)r(θ)不位于[1−ϵ,1+ϵ][1-\epsilon,1+\epsilon][1−ϵ,1+ϵ]时,此时梯度与随机策略梯度差距较大,梯度提供的信号可能是错误的,因此更新参数的幅度应该要弱些。
基于上述分析,我们来看下Figure 1。当A>0时,若r(θ)r(\theta)r(θ)取值大于1+ϵ1+\epsilon1+ϵ,梯度可能包含错误的信息,此时更新参数的梯度满足
0<(1−ϵ)Qπ′(S,A)∇θlnπ(A∣S;θ)(用于更新的梯度)<π(A∣S;θ)π′(A∣S;θold)Qπ′(S,A)∇θlnπ(A∣S;θ)0<(1-\epsilon)Q_{\pi'}(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)(用于更新的梯度)<\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}Q_{\pi'}(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)0<(1−ϵ)Qπ′(S,A)∇θlnπ(A∣S;θ)(用于更新的梯度)<π′(A∣S;θold)π(A∣S;θ)Qπ′(S,A)∇θlnπ(A∣S;θ)
即使用较小的梯度更新参数。若r(θ)r(\theta)r(θ)取值小于1−ϵ1-\epsilon1−ϵ时,梯度可能包含错误的信息,此时更新参数的梯度满足
(1−ϵ)Qπ′(S,A)∇θlnπ(A∣S;θ)>π(A∣S;θ)π′(A∣S;θold)Qπ′(S,A)∇θlnπ(A∣S;θ)(用于更新的梯度)>0(1-\epsilon)Q_{\pi'}(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)>\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}Q_{\pi'}(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)(用于更新的梯度)>0(1−ϵ)Qπ′(S,A)∇θlnπ(A∣S;θ)>π′(A∣S;θold)π(A∣S;θ)Qπ′(S,A)∇θlnπ(A∣S;θ)(用于更新的梯度)>0
即使用较小的梯度更新参数。当A<0时,若r(θ)r(\theta)r(θ)取值大于1+ϵ1+\epsilon1+ϵ,梯度可能包含错误的信息,此时更新参数的梯度满足
0>(1+ϵ)Qπ′(S,A)∇θlnπ(A∣S;θ)>π(A∣S;θ)π′(A∣S;θold)Qπ′(S,A)∇θlnπ(A∣S;θ)(用于更新的梯度)0>(1+\epsilon)Q_{\pi'}(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)>\frac{\pi(A|S;\theta)}{\pi'(A|S;\theta_{old})}Q_{\pi'}(S,A)\nabla_{\theta}\ln\pi(A|S;\theta)(用于更新的梯度)0>(1+ϵ)Qπ′(S,A)∇θlnπ(A∣S;θ)>π′(A∣S;θold)π(A∣S;θ)Qπ′(S,A)∇θlnπ(A∣S;θ)(用于更新的梯度)
此时发现即使梯度中包含有错误信息,PPO仍使用其更新策略网络参数。对此一个理解是既然A<0A<0A<0,表明这个动作不被提倡,因此依然使用较大的梯度更新网络,以使其尽量不做出该动作,当r(θ)r(\theta)r(θ)取值小于1−ϵ1-\epsilon1−ϵ时同理。原文的解释如下
With this scheme, we only ignore the change in probability ratio when it
would make the objective improve, and we include it when it makes the objective worse
PPO在A<0部分的做法有点违反我的直觉,事实上,《Mastering Complex Control in MOBA Games with Deep Reinforcement Learning》一文指出PPO在A<0时会导致策略网络难以收敛,由此提出了Dual PPO,在A<0时,式3.0的取值为下图(b),当取值大于ccc时,此时使用较小的梯度做更新。
强化学习——Proximal Policy Optimization Algorithms相关推荐
- 【文献阅读】Proximal Policy Optimization Algorithms
Author: John Schulman 原文摘要 我们提出了一种新的强化学习的 策略梯度方法,该方法在 与环境互动中进行采样 和 使用随机梯度提升算法优化"surrogate" ...
- Proximal Policy Optimization Algorithms翻译
摘要 我们提出了一类新的用于强化学习的策略梯度方法,该方法可以在与环境交互进行数据采样和使用随机梯度上升优化一个"替代"目标函数之间进行交替.标准策略梯度方法对每个数据样本执行一个 ...
- 深度增强学习PPO(Proximal Policy Optimization)算法源码走读
原文地址:https://blog.csdn.net/jinzhuojun/article/details/80417179 OpenAI出品的baselines项目提供了一系列deep reinfo ...
- Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始
近端策略优化(PPO)算法是OpenAI在2017提出的一种强化学习算法,被认为是目前强化学习领域的SOTA方法,也是适用性最广的算法之一.本文将从PPO算法的基础入手,理解从传统策略梯度算法(例如R ...
- 强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】
1 前言 我们回顾一下policy network: 强化学习笔记:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客 它先去跟环境互动,搜集很多的 路径τ.根据它搜集 ...
- ChatGPT 使用 强化学习:Proximal Policy Optimization算法(详细图解)
ChatGPT 使用 强化学习:Proximal Policy Optimization算法 强化学习中的PPO(Proximal Policy Optimization)算法是一种高效的策略优化方法 ...
- 【强化学习】Policy Gradient算法详解
DeepMind公开课https://sites.google.com/view/deep-rl-bootcamp/lectures David Silver教程 http://www0.cs.ucl ...
- 李宏毅深度强化学习(国语)课程(2018) 笔记(二)Proximal Policy Optimization(PPO)
李宏毅深度强化学习(国语)课程(2018)_哔哩哔哩_bilibili on-policy:要learn的agent和环境互动的agent是同一个,即agent一边跟环境互动,一边学习: off-po ...
- Lee Hung-yi强化学习 | (2) Proximal Policy Optimization算法(PPO)
Lee Hung-yi强化学习专栏系列博客主要转载自CSDN博主 qqqeeevvv,原专栏地址 课程视频 课件地址 1. On-policy vs. Off-policy 所谓 on-policy ...
最新文章
- rsync源目录写法的一点小细节
- SQL Server 索引重建或索引重組
- spring-mvc(基础)
- 怎么博客圆的文章越来越杂?
- HDU 5832——A water problem 2016CCPC网络赛1001
- php函数巧用 array_column
- Devops - 概述
- 微信小程序怎么弄成链接_自己怎么弄微信小程序?
- 大量数据丢失且无法恢复!欧洲云服务巨头数据中心起火
- 在.net 当中如何XML序列化一个Collection
- SolidWorks2020无法获得下列许可SOLIDWORKS Standard.Server节点已经关闭或是没有响应。(-96,7,11003)
- 解决Autodesk License Patcher (NLM Crack)重命名电脑名的问题
- 计算机无法启动print,Win7无法启动print spooler服务报错1068怎么办
- 使用JAVA编程实现多人聊天室(多线程实践)
- (生活篇)对恋爱谈心大事件的思考与反思——于五周年纪念日20211225
- html5中translate,css3 中translate和transition的使用方法
- 为什么我们创业失败了和选择创业公司的思考
- js获取不同时区时间
- LOJ#6198. 谢特 SAM+启发式合并+01trie
- 找出知晓秘密的所有专家