【强化学习】PPO:近端策略优化算法

近端策略优化算法
《Proximal Policy Optimization Algorithms》

论文地址:https://arxiv.org/pdf/1707.06347.pdf

一、 置信域方法(Trust Region Methods)

​ 设 π θ o l d \pi_{\theta_{old}} πθold是先前参数为 θ o l d \theta_{old} θold的策略网络, π θ \pi_{\theta} πθ则是当前待优化的策略网络,则TRPO的优化目标是:
maximize θ E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] subject    to E ^ t [ KL [ π θ o l d ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] ≤ δ \begin{align} &\mathop{\text{maximize}}_{\theta}\quad\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t \Big] \\ &\mathop{\text{subject}\;\text{to}}\quad\hat{\mathbb{E}}_t[\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]]\leq\delta \end{align} maximizeθE^t[πθold(atst)πθ(atst)A^t]subjecttoE^t[KL[πθold(st),πθ(st)]]δ
其中, A ^ t \hat{A}_t A^t t t t时刻的优势函数估计值。 r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta)=\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} rt(θ)=πθold(atst)πθ(atst)是用来控制新旧策略的差异,若差异到则会增加更新幅度,反之则降低更新幅度。约束条件则是新旧策略函数的KL散度,该约束会控制新旧策略的差距不会太大。但是,求解这个带约束的优化问题实现复杂且计算量大。

​ 理论上证明TRPO在实践中,建议使用惩罚项而不是约束,即转换为无约束优化问题。
maximize θ E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β KL [ π θ o l d ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] \mathop{\text{maximize}}_{\theta}\quad\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t-\beta\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]\Big] maximizeθE^t[πθold(atst)πθ(atst)A^tβKL[πθold(st),πθ(st)]]
其中, β \beta β是超参数。TRPO使用硬约束而不是惩罚项,是因为很难选择单个 β \beta β在所有不同问题上均表现良好。实验也表明,简单选择固定的惩罚系数 β \beta β并用SGD优化惩罚目标是不够的,需要额外的修改。

二、Clipped Surrogate Objective

​ 由于 r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta)=\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} rt(θ)=πθold(atst)πθ(atst),显然 r t ( θ o l d ) = 1 r_t(\theta_{old})=1 rt(θold)=1。TRPO最大化”代理“目标函数:
L CPI ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] = E ^ t [ r t ( θ ) A ^ t ] L^{\text{CPI}}(\theta)=\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t\Big]=\hat{\mathbb{E}}_t[r_t(\theta)\hat{A}_t] LCPI(θ)=E^t[πθold(atst)πθ(atst)A^t]=E^t[rt(θ)A^t]
在没有约束的情况下,最大化 L CPI L^{\text{CPI}} LCPI有可能会大幅度更新策略;因此,需要修改目标函数来惩罚 r t ( θ ) r_t(\theta) rt(θ)远离1。

​ 因此提出目标函数
L CLIP ( θ ) = E ^ t [ min ⁡ ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ] L^{\text{CLIP}}(\theta)=\hat{\mathbb{E}}_t\Big[\min(r_t(\theta)\hat{A}_t,\text{clip}(r_t(\theta),1-\epsilon,1+\epsilon)\hat{A}_t\Big] LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t]
ϵ \epsilon ϵ截断超参数,通常设置为0.2。 clip() \text{clip()} clip()代表截断函数,负责将 r t r_t rt限制在 [ 1 − ϵ , 1 + ϵ ] [1-\epsilon,1+\epsilon] [1ϵ,1+ϵ],以保证收敛性。最后,使用无截断和截断目标函数的最小值,从而形成未截断目标函数的下界。

​ 优势函数A可以分为正负两种情况。若优势函数为正,当 r t > 1 + ϵ r_t>1+\epsilon rt>1+ϵ时,将不提供额外的奖励;若优势函数为负,当 r t < 1 − ϵ r_t<1-\epsilon rt<1ϵ时,同样不提供额外的奖励,这样就能限制新旧策略的差异。
在这里插入图片描述

三、自适应KL惩罚系数

​ 另一种代替或者补充clipped surrogate objective的方案是使用KL散度惩罚,并调整惩罚系数,每次策略更新时使得KL散度 d targ d_{\text{targ}} dtarg达到某个目标值。在作者的实验中,KL惩罚的表现要差于clipped surrogate objective,但其可以作为重要的baseline。

​ 在每次策略更新中执行下面的步骤:

  • 利用若干个minibatch SGD的epochs,优化KL惩罚目标
    L KLPEN ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β KL [ π θ o l d ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] L^{\text{KLPEN}}(\theta)=\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t-\beta\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]\Big] LKLPEN(θ)=E^t[πθold(atst)πθ(atst)A^tβKL[πθold(st),πθ(st)]]

  • 计算 d = E ^ t [ KL [ π θ o l d ( ⋅ ∣ s t ) , π θ ( ⋅ ∣ s t ) ] ] d=\hat{\mathbb{E}}_t[\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]] d=E^t[KL[πθold(st),πθ(st)]]

    d < d targ / 1.5 , β ← β / 2 d<d_{\text{targ}}/1.5,\beta\leftarrow\beta/2 d<dtarg/1.5,ββ/2

    d > d targ × 1.5 , β ← β × 2 d>d_{\text{targ}}\times1.5,\beta\leftarrow\beta\times 2 d>dtarg×1.5,ββ×2

​ 更新后的 β \beta β用于下一次的策略更新。

四、完整算法

在这里插入图片描述

​ 前面推导的surrogate损失函数能够在典型的策略梯度上简单改动即可实现。大多数的优势函数都使用一个可学习的状态价值函数 V ( s ) V(s) V(s)。若策略网络和价值网络共享神经网络架构,那么需要使用一个结合了策略函数和值函数误差项的损失函数。目标函数可以进一步添加熵正则来确保充分的探索。合并这些项,就能够获得下面的目标函数:
L CLIP+VF+S ( θ ) = E ^ t [ L t CLIP ( θ ) − c 1 L t VF ( θ ) + c 2 S [ π θ ] ( s t ) ] L^{\text{CLIP+VF+S}}(\theta)=\hat{\mathbb{E}}_t[L_t^{\text{CLIP}}(\theta)-c_1L_t^{\text{VF}}(\theta)+c_2S[\pi_{\theta}](s_t)] LCLIP+VF+S(θ)=E^t[LtCLIP(θ)c1LtVF(θ)+c2S[πθ](st)]
其中, c 1 c_1 c1 c 2 c_2 c2是控制各个项比例的超参数, S S S是熵正则项, L t SF L^{\text{SF}}_t LtSF是均方误差损失 ( V θ ( s t ) − V t targ ) 2 (V_{\theta}(s_t)-V_t^{\text{targ}})^2 (Vθ(st)Vttarg)2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/269224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5个适合初学者的初级网络安全工作

前言&#xff1a; 网络安全涉及保护计算机系统、网络和数据免受未经授权的访问、破坏和盗窃 - 防止数字活动和数据访问的中断 - 同时也保护用户的资产和隐私。鉴于公共事业、医疗保健、金融以及联邦政府等行业的网络犯罪攻击不断升级&#xff0c;对网络专业人员的需求很高&…

三级安全教育二维码怎么生成

三级安全教育是工人进场上岗前必备的过程&#xff0c;也是施工项目中非常重要的一项工作&#xff0c;我们要合理规范地进行安全教育培训工作&#xff0c;提升真实性和可靠性&#xff0c;保障工人的安全到位。 1、将三级安全教育制作成二维码,放在施工现场等位置,工人可以随时随…

行人重识别数据集-统一为market1501数据集进行多数据集联合训练

一、前言 常用的数据集&#xff1a; 数据集下载链接&#xff1a;https://kaiyangzhou.github.io/deep-person-reid/datasets.html https://kaiyangzhou.github.io/deep-person-reid/datasets.html#sensereid-sensereid 二、数据集合并 第一步&#xff1a;market1501的数据集…

【史上最小白】Bert:双向 Transformer 编码器

Bert&#xff1a;双向 Transformer 编码器 Bert&#xff1a;论洞察语境&#xff0c;GPT 不如我深刻&#xff1b;论理解含义&#xff0c;ELMo 不如我全面输入阶段词嵌入&#xff1a;把词语转换为向量第一个预训练 Masked&#xff1a;学习语言的深层次理解尝试 1&#xff1a;预测…

一款CAT1产品天线定制-FPC天线无源数据测试示例

需求情况 根据产品的壳料内部结构&#xff0c;定制一款PFC天线&#xff0c;设备类型是4G-TLE&#xff0c;所以需要支持的频段范围比较宽&#xff0c;谐振要落在800MHz~1GHz与1.6GHz~2.6GHz之内。 天线阻抗、回波损耗、电压驻波情况 天线无源效率及增益情况 小结&#xff1a;整…

【交叉编译环境】安装arm-linux交叉编译环境到虚拟机教程(简洁版本)

就是看到了好些教程有些繁琐&#xff0c;我就写了一个 我这个解压安装的交叉编译环境是Linaro GCC的一个版本&#xff0c;可以用于在x86_64的主机上编译arm-linux-gnueabihf的目标代码 步骤来了 在你的Ubuntu系统中创建一个目录&#xff0c;例如/usr/local/arm&#xff0c;然后…

cesium实现区域贴图及加载多个gif动图

1、cesium加载多个gif动图 Cesium的Billboard支持单帧纹理贴图&#xff0c;如果能够将gif动图进行解析&#xff0c;获得时间序列对应的每帧图片&#xff0c;然后按照时间序列动态更新Billboard的纹理&#xff0c;即可实现动图纹理效果。为此也找到了相对于好一点的第三方库libg…

Wireshark网络工具来了

Wireshark是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包&#xff0c;并尝试显示包的尽可能详细的情况。 Wireshark是一个免费开源软件&#xff0c;不需要付费&#xff0c;免费使用&#xff0c;可以直接登陆到Wireshark的官网下载安装。 在windows环境中&#x…

【网络安全】一次SRC挖掘经历

本文仅供网络安全学习研究&#xff0c;违F绕路 资产发现 首先是信息收集子域名&#xff0c;谷歌语句直接site:xxx.com -www,一个登录口网站吸引了我的注意力。 我点击电信、网通、自动的时候&#xff0c;发现域名跳转到了真实IP 这样&#xff0c;就可以对真实IP进行端口扫描-&…

医学影像处理与智能医学:数据集资源和云端加速路径

医学影像处理识别是一种利用计算机技术影像进行识别、分析和处理的方法。它主要应用于医学影像学领域&#xff0c;如 X 射线、CT 扫描、MRI 和超声等。通过图像处理技术&#xff0c;可以对这些影像进行数字化处理&#xff0c;提取有用信息&#xff0c;辅助医生进行疾病诊断、治…

音频修复增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件。 iZotope RX 10 mac软件特点 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。 音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等处…

使用 OpenTelemetry 和 Loki 实现高效的应用日志采集和分析

在之前的文章陆续介绍了 如何在 Kubernetes 中使用 Otel 的自动插桩 以及 Otel 与 服务网格协同实现分布式跟踪&#xff0c;这两篇的文章都将目标聚焦在分布式跟踪中&#xff0c;而作为可观测性三大支柱之一的日志也是我们经常使用的系统观测手段&#xff0c;今天这篇文章就来体…

springCould中的zookeeper-从小白开始【3】

目录 1.启动zookeeper❤️❤️❤️ 2.创建8004模块 ❤️❤️❤️ 3.临时节点还是永久节点❤️❤️❤️ 4.创建zk80消费模块❤️❤️❤️ 1.启动zookeeper❤️❤️❤️ 进入自己zookeeper的bin目录下 分别使用命令&#xff1a; ./zkServer.sh start 和 ./zkCli.sh -serve…

旅游品牌网站搭建的作用是什么

我国旅游业规模非常高&#xff0c;各地大小旅游景区也是非常多&#xff0c;尤其节假日更是可以达到峰值&#xff0c;无论周边游还是外地游对所要去的景区&#xff0c;消费者总是需要来回了解很多&#xff0c;浏览器查或旅行社咨询等。 对旅游企业而言&#xff0c;传统线下方式…

QT 构建项目报错Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

问题 Getting NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7获取 NoClassDefFoundError&#xff1a;无法初始化类 org.codehaus.groovy.vmplugin.v7.Java7 解决方法一 java版本 过高 将java版本降低&#xff0c;例如从java17降…

虹科方案|车内智慧大脑:基于车载网络捕获的全景数据处理

导读&#xff1a;随着汽车电子技术的不断发展&#xff0c;车载网络已经成为汽车智能化和互联互通的关键组成部分。然而随着汽车系统的复杂性增加&#xff0c;CAN的带宽和数据处理能力已不足以满足快速增长的数据需求。为了应对这一挑战&#xff0c;虹科智能互联提出了基于车载网…

哪个超声波清洗机好?适合洗眼镜超声波清洗机有哪些?

随着科技的进步&#xff0c;超声波清洗机已经成为了家居清洁的必备神器。尤其是对于眼镜、珠宝、饰品等需要深度清洁的小物件&#xff0c;超声波清洗机更是不可或缺。眼镜店最经常看见超声波清洗机的身影&#xff0c;可以很好帮我们清洗眼镜同时有些比较好的超声波清洗机还会带…

Matplotlib ------ 纵坐标科学计数法含义

matplotlib 纵坐标科学计数法含义 引言正文 引言 今天画图时遇到了一个问题&#xff0c;发现纵坐标是科学计数法的表示&#xff0c;但是很难理解它的含义&#xff0c;这里特来记录一下。 正文 我们以下图为例&#xff0c; 由图上我们可以看出&#xff0c;纵坐标显示为 1e-…

高压放大器的考虑因素有哪些

高压放大器是一种重要的电子设备&#xff0c;用于放大高电压信号。其设计和应用需要考虑多种因素&#xff0c;以确保性能稳定、安全可靠。以下是设计高压放大器时需要考虑的主要因素&#xff1a; 电压范围需求&#xff1a;首要考虑是要放大的电压信号范围。高压放大器应能够处理…

SpringBoot的测试

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…