近端策略优化算法(PPO)
策略梯度算法(PG)
策略梯度迭代,通过计算策略梯度的估计,并利用随机梯度上升算法进行迭代。其常用的梯度估计形式为:
E^t[∇θlogπθ(at∣st)A^t]\hat{\mathbb{E}}_t[\nabla_\theta log \pi_\theta(a_t | s_t)\hat{A}_t] E^t[∇θlogπθ(at∣st)A^t]
其中πθ\pi_\thetaπθ为随机策略,A^t\hat{A}_tA^t是优势函数在时间步t的估计,其损失函数为:
LPG(θ)=E^t[logπθ(at∣st)A^t]L^{PG}(\theta)=\hat{\mathbb{E}}_t[log_{\pi_\theta}(a_t|s_t)\hat{A}_t] LPG(θ)=E^t[logπθ(at∣st)A^t]
信赖域策略优化(TRPO)
TRPO要优化的目标函数如下:
maximizeθE^[πθ(at∣st)πθold(at∣st)A^t]maximize_\theta \hat{\mathbb{E}}[\frac{\pi_{\theta(a_t|s_t)}}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t] maximizeθE^[πθold(at∣st)πθ(at∣st)A^t]
subjecttoEt^[KL[πθold(⋅∣st)∣∣πθ(⋅∣st)]]≤Usubject\ to \ \hat{\mathbb{E}_t}[KL[\pi_{\theta_{old}}(·|s_t)||\pi_\theta(·|s_t)]] \leq U subject to Et^[KL[πθold(⋅∣st)∣∣πθ(⋅∣st)]]≤U
近端策略优化算法(PPO)
截断替代目标(PPO1)
令rt(θ)=πθ(at∣st)πold(at∣st)r_t({\theta})=\frac{\pi_{\theta(a_t|s_t)}}{\pi_{old}(a_t|s_t)}rt(θ)=πold(at∣st)πθ(at∣st),那么rt(θold)=1r_t(\theta_{old})=1rt(θold)=1。TRPO把目标函数替换为:
LCPL(θ)=E^[πθ(at∣st)πθold(at∣st)A^t]=E^t[rt(θ)A^t]L^{CPL}(\theta) =\hat{\mathbb{E}}[\frac{\pi_{\theta(a_t|s_t)}}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t]=\hat{\mathbb{E}}_t[r_t(\theta)\hat{A}_t] LCPL(θ)=E^[πθold(at∣st)πθ(at∣st)A^t]=E^t[rt(θ)A^t]
LCPLL^{CPL}LCPL指的是前述TRPO中的保守策略迭代,如果不加约束,最大化LCPLL^{CPL}LCPL会产生较大幅度的梯度更新。为了惩罚策略的变化(使得rt(θ)r_t(\theta)rt(θ)远离1,新旧策略的KL散度不能太大),使用了以下的目标函数:
LCLIP(θ)=E^[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]L^{CLIP}(\theta)=\hat{\mathbb{E}}[min(r_t(\theta)\hat{A}_t, clip(r_t({\theta}),1-\epsilon, 1+\epsilon)\hat{A}_t)] LCLIP(θ)=E^[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
原论文中取ϵ=0.2\epsilon=0.2ϵ=0.2,直观示意图如下:
即:
当A>0时,如果rt(θ)>1+ϵr_t(\theta)>1+\epsilonrt(θ)>1+ϵ,则LCLIP(θ)=(1+ϵ)A^tL^{CLIP}(\theta)=(1+\epsilon)\hat{A}_tLCLIP(θ)=(1+ϵ)A^t;如果rt(θ)<1+ϵr_t(\theta)<1+\epsilonrt(θ)<1+ϵ,则LCLIP(θ)=rt(θ)A^tL^{CLIP}(\theta)=r_t(\theta)\hat{A}_tLCLIP(θ)=rt(θ)A^t;
当A<0时,如果rt(θ)>1−ϵr_t(\theta)>1-\epsilonrt(θ)>1−ϵ,则LCLIP(θ)=rt(θ)A^tL^{CLIP}(\theta)=r_t(\theta)\hat{A}_tLCLIP(θ)=rt(θ)A^t;如果rt(θ)<1−ϵr_t(\theta)<1-\epsilonrt(θ)<1−ϵ,则LCLIP(θ)=(1−ϵ)A^tL^{CLIP}(\theta)=(1-\epsilon)\hat{A}_tLCLIP(θ)=(1−ϵ)A^t;
自适应KL惩罚系数 (PPO2)
在TRPO中,使用"自适应惩罚系数"β\betaβ来约束KL散度,在该算法的最简单实例中,在每一步策略更新中执行以下步骤:
使用多个minibatch SGD,优化KL惩罚的目标
LKLPEN(θ)=E^t[πθ(at∣st)πθold(at∣st)A^t−βKL[πθold(⋅∣st),π(⋅∣st)]]L^{KLPEN}(\theta)=\hat{\mathbb{E}}_t[\frac{\pi_{\theta(a_t|s_t)}}{\pi_{\theta_{old}}}(a_t|s_t)\hat{A}_t-\beta KL[\pi_{\theta_{old}}(·|s_t), \pi(·|s_t)]] LKLPEN(θ)=E^t[πθoldπθ(at∣st)(at∣st)A^t−βKL[πθold(⋅∣st),π(⋅∣st)]]计算d=E^[KL[πθold(⋅∣st),π(⋅∣st)]]d=\hat{\mathbb{E}}[KL[\pi_{\theta_{old}}(·|s_t), \pi(·|s_t)]]d=E^[KL[πθold(⋅∣st),π(⋅∣st)]]
如果d<dtarg/1.5,β<−β/2d<d_{targ}/1.5, \beta <-\beta/2d<dtarg/1.5,β<−β/2
如果d>dtarg∗1.5,β<−β∗2d>d_{targ}*1.5, \beta<-\beta*2d>dtarg∗1.5,β<−β∗2
实验中,PPO2的效果可能没有PPO1的效果好。
更复杂的版本
LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)−c1LtVF(θ)]+c2S[πθ](st)]L_t^{CLIP+VF+S}(\theta) = \hat{E}_t[L_t^{CLIP}(\theta)-c_1L_t^{VF}(\theta)]+c_2 S[\pi_{\theta}](s_t)] LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)−c1LtVF(θ)]+c2S[πθ](st)]
其中c1c1c1,c2c2c2是系数,SSS表示熵奖励,LtVFL_t^{VF}LtVF是平方误差损失(Vθ(st)−Vttarg)2(V_\theta(s_t)-V_t^{targ})^2(Vθ(st)−Vttarg)2
优势估计函数为
A^t=−V(st)+rt+γrt+1+...+γT−t+1rT−1+γT−tV(sT)\hat{A}_t = -V(s_t)+r_t+\gamma r_{t+1}+...+\gamma^{T-t+1}r_{T-1}+\gamma^{T-t}V(s^T) A^t=−V(st)+rt+γrt+1+...+γT−t+1rT−1+γT−tV(sT)
另外,我们可以使用广义优势函数来扩广A^t\hat{A}_tA^t,当λ=1\lambda=1λ=1时,它趋近于上面的等式
A^t=δ+(γλ)δt+1+...+...+γλT−t+1δT−1\hat{A}_t=\delta+(\gamma\lambda)\delta_{t+1}+...+...+{\gamma\lambda^{T-t+1}}\delta_{T-1} A^t=δ+(γλ)δt+1+...+...+γλT−t+1δT−1
whereδt=rt+γV(st+1−V(st))where \ \delta_t = r_t+\gamma V(s_{t+1}-V(s_t))where δt=rt+γV(st+1−V(st))
使用固定长度轨迹的近端策略优化(PPO)算法
如下所示:
AlgorithmPPO,Actor−CriticStyleAlgorithm \ PPO, Actor-Critic \ StyleAlgorithm PPO,Actor−Critic Style
foriteration=1,2,...,dofor \ iteration=1,2,...,dofor iteration=1,2,...,do
foractor=1,2,...,N,do\qquad for \ actor=1,2,...,N, dofor actor=1,2,...,N,do
Runpolicyπθold\qquad \qquad Run \ policy \ \pi_{\theta_{old}}Run policy πθold in environment for T timesteps
ComputeadvantageestimatesA^1,...,A^T\qquad \qquad Compute \ advantage \ estimates \hat{A}_1,...,\hat{A}_{T}Compute advantage estimatesA^1,...,A^T
endfor\qquad end forendfor
OptimizesurrogateLwrtθ,withKepochsandminibatchsizeM<=NTOptimize \ surrogate \ L \ wrt \ \theta, with \ K \ epochs \ and \ minibatch \ size \ M <= NTOptimize surrogate L wrt θ,with K epochs and minibatch size M<=NT
endforend \ forend for
推荐阅读:
李宏毅机器学习系列-强化学习之近端策略优化PPO
该博文从Import Sampling的角度叙述了PPO的演化。
个人认为写得最好的TRPO讲解
该博文从数学方面叙述了PPO的推导。
近端策略优化算法(PPO)相关推荐
- 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)
强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...
- 基于近端策略优化算法的车载边缘计算网络频谱资源分配
摘要 [目的]在车载网络边缘计算中,合理地分配频谱资源对改善车辆通讯质量具有重要意义.频谱资源稀缺是影响车辆通讯质量的重要原因之一,车辆的高移动性以及在基站处准确收集信道状态信息的困难给频谱资源分配带 ...
- PPO近端策略优化算法概述
Policy Gradient算法存在两个问题,一是蒙特卡罗只能回合更新,二是on-policy采集的数据只能使用一次. 对于第一个更新慢的问题,改用时序差分方法,引入critic网络估计V值,就能实 ...
- 【详解+推导!!】PPO 近端策略优化
近端策略优化(PPO, Proximal Policy Optimization)是强化学习中十分重要的一种算法,被 OpenAI 作为默认强化学习算法,在多种强化学习应用中表现十分优异. 文章目录 ...
- 强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】
1 前言 我们回顾一下policy network: 强化学习笔记:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客 它先去跟环境互动,搜集很多的 路径τ.根据它搜集 ...
- 基于近端策略优化的阻变存储硬件加速器自动量化
摘 要 卷积神经网络在诸多领域已经取得超出人类的成绩.但是,随着模型存储开销和计算复杂性的不断增加,限制处理单元和内存单元之间数据交换的"内存墙"问题阻碍了其在诸如边缘计算和物联网 ...
- ICLR 2022 | 绝艺学会打麻将,腾讯AI Lab提出全新策略优化算法ACH
感谢阅读腾讯AI Lab微信号第144篇文章.本文介绍「绝艺」在二人麻将游戏环境取得的进展,相关算法及benchmark已开源,论文被机器学习国际顶会 ICLR 2022 接收. 「绝艺」是腾讯AI ...
- 近端策略优化深度强化学习算法
PPO:Proximal Policy Optimization Algorithms,其优化的核心目标是: ppo paper 策略梯度 以下是马尔可夫决策过程MDP的相关基础以及强化学习的优化目标 ...
- 多目标优化算法:多目标鳄鱼狩猎策略优化算法MOCHS(提供Matlab代码)
源代码见评论区或欢迎私信博主
最新文章
- Libvirt 版本降级过程记录 4.5.0 to 3.9.0
- 疯狂C#~伴随着我的库存管理¥
- 1px问题在ios与android,IOS安卓常见问题
- 影响个人计算机系统功能的因素,影响个人计算机系统功能的因素除了系统使用哪种位的微处理器外,还有CPU的时钟频率、CPU主内存容量、CPU所能提供的指令集。...
- mysql 笔记打包下载_mysql 5.7压缩包安装笔记
- 《塔木德智慧全书》(之四)
- Git笔记(28) 签署工作
- mysql group by聚合字段合并_mysql groupby 字段合并问题(group_concat)
- 那些漂亮有创意的思维导图真的更吸引人吗?
- 如何在线翻译PDF文件
- 国产化复旦微开发板FMG0系列学习过程
- 第四章 语料库与语言知识库
- 各大搜索引擎收录地址
- verdi中如何查看force信号信息
- MICCAI 2022中的医学扩散模型
- niuke题霸SQ/L篇
- 强化学习是如何解决问题的?
- .NET/C# 使用 SpanT 为字符串处理提升性能
- 英雄会,会英雄,CSDN大会有感
- 【TypeScript入门】TypeScript入门篇——对象
热门文章
- [深度学习] embedding 在test阶段遇到OOV怎么办
- 搞一下整车以太网技术 | A1 整车以太网技术概述
- vue3+quasar+capacitor开发多平台项目,使用cordova和capacitor插件(支持所有前端框架)
- “希希敬敬对”团队作业-敏捷冲刺1
- Cryptology Asset Group p.l.c.决定增加现金资本和出售库存股份
- 计算机在药店管理系统中的应用,计算机系统在药店管理系统中的应用(国外英语资料).doc...
- 干货长文《对抗中的主动防御》
- 微信小程序那点事儿(必看踩坑实用解决BUG)------持续更新(2)
- 使用计算机来进行翻译是,利用计算机进行中英文翻译的探讨
- 网络编程经典好书推荐