温馨提示:
本篇文章已同步至"AI专题精讲" PPO:近端策略优化算法

摘要

我们提出了一类新的用于强化学习的 policy gradient 方法,该方法在与环境交互以采样数据和使用随机梯度上升优化一个“代理”目标函数之间交替进行。与标准的 policy gradient 方法每个数据样本只进行一次梯度更新不同,我们提出了一种新颖的目标函数,使得可以对同一批数据进行多个 epoch 的小批量更新。这些新方法被称为 Proximal Policy Optimization(PPO),它们继承了 Trust Region Policy Optimization(TRPO) 的一些优势,但实现更简单、适用范围更广,并且在经验上具有更好的样本效率。我们的实验在一系列基准任务上对 PPO 进行了测试,包括模拟的机器人运动和 Atari 游戏,结果表明 PPO 在所有在线 policy gradient 方法中表现更优,整体上在样本效率、简单性和运行时间之间达成了良好的平衡。

1 引言

近年来,已经提出了多种使用神经网络函数逼近器进行强化学习的方法。主要的候选方案包括 Deep Q-learning [Mni+15]、“vanilla” policy gradient 方法 [Mni+16] 以及 Trust Region / Natural Policy Gradient 方法 [Sch+15b]。不过,目前在开发一种具备可扩展性(适用于大型模型与并行实现)、数据高效性以及鲁棒性(即在多种问题中无需超参数调节即可成功)的算法方面,仍有改进空间。Q-learning(带函数逼近) 在许多简单问题上都会失败¹,且机制尚不清楚;vanilla policy gradient 方法 的数据效率和鲁棒性都较差;而 TRPO相对复杂,且不兼容某些结构中存在噪声(如 dropout)或参数共享(比如策略与价值函数间或与辅助任务共享参数)。

本文旨在通过引入一种仅依赖一阶优化的算法,来实现 TRPO 所具有的数据效率与可靠性。我们提出了一个带有截断概率比的全新目标函数,它构成了策略性能的悲观估计(即下界)。为了优化策略,我们在从策略中采样数据和在采样数据上进行多个 epoch 优化之间进行交替。我们的实验比较了不同版本的代理目标函数的性能,发现使用截断概率比的版本表现最佳。我们还将 PPO 与文献中的多种算法进行了对比。在连续控制任务中,它优于我们比较的其他算法;在 Atari 游戏中,其样本效率显著超过 A2C,且与 ACER 表现相当,但实现更为简单。

2 背景:策略优化

2.1 Policy Gradient 方法

Policy Gradient 方法通过估计策略梯度,并将其代入随机梯度上升算法来实现优化。最常用的梯度估计器形式如下:

g^=E^t[∇θlog⁡πθ(at∣st)A^t](1)\hat{g} = \hat{\mathbb{E}}_t\left[\nabla_\theta \log \pi_\theta(a_t \mid s_t) \hat{A}_t\right] \quad(1) g^=E^t[θlogπθ(atst)A^t](1)

其中,πθ\pi_\thetaπθ 是一个随机策略,A^t\hat{A}_tA^t 是在时间步 ttt 的 Advantage Function 的估计值。这里的期望 E^t[…]\hat{\mathbb{E}}_t[\dots]E^t[] 表示在有限样本批次上的经验平均,该算法在采样和优化之间交替进行。

在使用自动微分软件的实现中,策略梯度估计器是通过构建一个目标函数来获得的,该目标函数的梯度即为策略梯度估计器 g^\hat{g}g^;该目标函数为:

LPG(θ)=E^t[log⁡πθ(at∣st)A^t](2)\begin{array} { r } { L ^ { P G } ( \theta ) = \hat { \mathbb { E } } _ { t } \Bigl [ \log \pi _ { \theta } ( a _ { t } \mid s _ { t } ) \hat { A } _ { t } \Bigr ] } \end{array}\quad(2) LPG(θ)=E^t[logπθ(atst)A^t](2)

虽然在相同轨迹上对该损失 LPGL^{PG}LPG 执行多步优化听起来是有吸引力的,但这种做法缺乏理论支撑,且在实践中常常会导致策略更新过大,从而产生破坏性效果(见第6.1节;相关结果未展示,但与“无剪切或惩罚”设定下的结果相似或更差)。

2.2 Trust Region 方法

在 TRPO [Sch+15b] 中,目标函数(即“代理”目标函数)在策略更新幅度受到约束的条件下被最大化。具体如下:

在这里插入图片描述

满足以下约束条件:

E^t[KL[πθold(⋅∣st),πθ(⋅∣st)]]≤δ(4)\hat{\mathbb{E}}_t \left[ \text{KL}[\pi_{\theta_{\text{old}}}(\cdot \mid s_t), \pi_\theta(\cdot \mid s_t)] \right] \leq \delta \quad(4) E^t[KL[πθold(st),πθ(st)]]δ(4)

这里,θold\theta_{\text{old}}θold 是更新之前的策略参数向量。这个问题可以通过共轭梯度算法(conjugate gradient algorithm)高效地近似求解,方法是在目标函数上做线性近似、在约束项上做二次近似。

TRPO 的理论实际上建议使用惩罚项替代约束,即求解如下的无约束优化问题:

maximize⁡θE^t[πθ(at∣st)πθold(at∣st)A^t−βKL⁡[πθold(⋅∣st),πθ(⋅∣st)]](5)\operatorname* { m a x i m i z e } _ { \theta } \hat { \mathbb { E } } _ { t } \left[ \frac { \pi _ { \theta } ( a _ { t } \mid s _ { t } ) } { \pi _ { \theta _ { \mathrm { o l d } } } ( a _ { t } \mid s _ { t } ) } \hat { A } _ { t } - \beta \operatorname { K L } [ \pi _ { \theta _ { \mathrm { o l d } } } ( \cdot \mid s _ { t } ) , \pi _ { \theta } ( \cdot \mid s _ { t } ) ] \right]\quad(5) θmaximizeE^t[πθold(atst)πθ(atst)A^tβKL[πθold(st),πθ(st)]](5)

其中 β\betaβ 是某个系数。这一做法的理论基础是,某种代理目标(其对状态取最大 KL 而非平均)构成了策略 π\piπ 表现的下界(即悲观估计)。TRPO 之所以采用硬约束而不是惩罚项,是因为很难选择一个在不同问题中都能表现良好的固定 β\betaβ 值——甚至在同一个问题中,随着学习过程的推进,问题特性也会发生变化。因此,为了实现我们提出的目标:使用一阶优化算法复现 TRPO 的单调性能改进,实验表明,仅仅使用固定惩罚系数 β\betaβ 并用 SGD 优化带惩罚项的目标函数(公式 (5))是不够的;还需要额外的修改。

3 Clipped Surrogate Objective

rt(θ)r_t(\theta)rt(θ) 表示概率比:

rt(θ)=πθ(at∣st)πθold(at∣st),因此 r(θold)=1。r_t(\theta) = \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t \mid s_t)},\quad \text{因此}~r(\theta_{\mathrm{old}}) = 1。 rt(θ)=πθold(atst)πθ(atst)因此 r(θold)=1

TRPO 最大化一个“代理”目标函数:

LCPI(θ)=E^t[πθ(at∣st)πθold(at∣st)A^t]=E^t[rt(θ)A^t](6)L^{CPI}(\theta) = \hat{\mathbb{E}}_t\left[ \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t \mid s_t)} \hat{A}_t \right] = \hat{\mathbb{E}}_t\left[ r_t(\theta)\, \hat{A}_t \right] \quad(6) LCPI(θ)=E^t[πθold(atst)πθ(atst)A^t]=E^t[rt(θ)A^t](6)

上标 CPI 指的是 conservative policy iteration(保守策略迭代)[KL02],该目标函数即源自于此。如果没有约束,直接最大化 LCPIL^{CPI}LCPI 会导致过大的策略更新。因此,我们考虑如何修改该目标函数,以惩罚使 rt(θ)r_t(\theta)rt(θ) 偏离 1 的策略变动。

我们提出的主要目标函数如下:

LCLIP(θ)=E^t[min⁡(rt(θ)A^t,clip⁡(rt(θ),1−ϵ,1+ϵ)A^t)](7)L^{CLIP}(\theta) = \hat{\mathbb{E}}_t\left[ \min\left( r_t(\theta) \hat{A}_t, \operatorname{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon)\, \hat{A}_t \right) \right] \quad(7) LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)](7)

其中 ϵ\epsilonϵ 是一个超参数,例如 ϵ=0.2\epsilon = 0.2ϵ=0.2

该目标函数的动机如下:min 内的第一个项即为 LCPIL^{CPI}LCPI;第二项 clip(rt(θ),1−ϵ,1+ϵr_t(\theta), 1 - \epsilon, 1 + \epsilonrt(θ),1ϵ,1+ϵ)对概率比进行截断,从而移除了将 rtr_trt 移出区间 [1−ϵ,1+ϵ][1 - \epsilon, 1 + \epsilon][1ϵ,1+ϵ] 的动机。最终我们取截断前后的最小值,因此最终目标函数是未截断目标的一个下界(即悲观估计)。该方法只在改变概率比会提升目标函数时忽略这种改变,而当其会使目标变差时就保留这种惩罚。注意,在 θold\theta_{\mathrm{old}}θold 附近的一阶近似下,LCLIP(θ)=LCPI(θ)L^{CLIP}(\theta) = L^{CPI}(\theta)LCLIP(θ)=LCPI(θ)(即 r=1r = 1r=1 时),然而当 θ\thetaθ 远离 θold\theta_{\mathrm{old}}θold 时,两者将会不同。图 1 绘制了 LCLIPL^{CLIP}LCLIP 中单个 ttt 项的图像;注意,概率比 rrr1−ϵ1 - \epsilon1ϵ1+ϵ1 + \epsilon1+ϵ 处被截断,具体取决于优势值是正还是负。
在这里插入图片描述

图 2 提供了关于代理目标 LCLIPL^{CLIP}LCLIP 的另一种直观理解。它展示了在策略更新方向上插值得到的多个目标函数是如何变化的,该更新方向是通过 proximal policy optimization(我们即将介绍的算法)在一个连续控制问题中得到的。我们可以看到,LCLIPL^{CLIP}LCLIPLCPIL^{CPI}LCPI 的一个下界,并对策略更新过大的情况施加了惩罚。
在这里插入图片描述

4 自适应 KL 惩罚系数

另一种方法可以作为 clipped surrogate objective 的替代方案,或者与其结合使用,即对 KL 散度施加惩罚,并自适应地调整惩罚系数,以便在每次策略更新时达到某个目标 KL 散度 dtargd_{\text{targ}}dtarg。在我们的实验中,我们发现 KL 惩罚的表现不如 clipped surrogate objective,然而我们仍在此处包括这一方法,因为它是一个重要的基线方法。

在该算法最简单的实现中,每次策略更新执行以下步骤:

  • 使用多个 epoch 的小批量 SGD,优化带 KL 惩罚的目标函数:

    LKLPEN(θ)=E^t[πθ(at∣st)πθold(at∣st)A^t−βKL[πθold(⋅∣st),πθ(⋅∣st)]](8)L^{KLPEN}(\theta) = \hat{\mathbb{E}}_t \left[ \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\text{old}}}(a_t \mid s_t)} \hat{A}_t - \beta \, \mathrm{KL}[\pi_{\theta_{\text{old}}}(\cdot \mid s_t), \pi_\theta(\cdot \mid s_t)] \right] \quad(8) LKLPEN(θ)=E^t[πθold(atst)πθ(atst)A^tβKL[πθold(st),πθ(st)]](8)

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

    – 如果 d<dtarg1.5d < \frac{d_{\text{targ}}}{1.5}d<1.5dtarg,则令 β←β/2\beta \leftarrow \beta / 2ββ/2

    – 如果 d>dtarg×1.5d > d_{\text{targ}} \times 1.5d>dtarg×1.5,则令 β←β×2\beta \leftarrow \beta \times 2ββ×2

更新后的 β\betaβ 会在下一次策略更新中使用。在该机制下,我们偶尔会看到 KL 散度与 dtargd_{\text{targ}}dtarg 相差较大的策略更新,但这类情况比较罕见,且 β\betaβ 会快速调整。上述参数 1.5 和 2 是启发式选择的,但该算法对它们并不敏感。初始值 β\betaβ 是另一个超参数,但在实践中影响不大,因为算法能迅速调整它。

温馨提示:
阅读全文请访问"AI深语解构" PPO:近端策略优化算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89213.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89213.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89213.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构的算法分析与线性表<1>

一、算法分析&#xff1a; 由于语句执行一次的实际所需时间与机器的软硬件有关&#xff0c;则算法分析是针对语句执行次数&#xff0c;而非执行时间。 时间复杂度 计算时间复杂度&#xff1a; 常量阶 如果算法中的n是固定的&#xff0c;或者说n是常数&#xff0c;或者时间复杂…

esp32使用ESP-IDF在Linux下的升级步骤,和遇到的坑Traceback (most recent call last):,及解决

因为之前使用的是ESP-IDF5.3版本。而5.3版本又不支持ESP32P4。而V5.4版本开始正式对P4的支持。所以我把ESP-IDF 升级到V5.4.2的release版本。 一、升级版本&#xff1a;【根据乐鑫官方的方式升级】ESP-IDF 版本简介 - ESP32-P4 - — ESP-IDF 编程指南 v5.4.2 文档 更新至一个稳…

【算法】贪心算法:最大数C++

文章目录前言题目解析算法原理字典序代码示例策略证明前言 题目的链接&#xff0c;大家可以先试着去做一下再来看一下思路。179. 最大数 - 力扣&#xff08;LeetCode&#xff09; 题目解析 还是老样子&#xff0c;把题目读懂&#xff0c;画出有用信息。 认真看示例&#xff0…

网络安全职业指南:探索网络安全领域的各种角色

本文旨在为对网络安全领域感兴趣的粉丝读者提供一份全面的职业指南。我们将探讨网络安全领域中各种不同的职业角色&#xff0c;包括其职责、所需技能以及职业发展路径&#xff0c;帮助你了解网络安全领域的职业选择&#xff0c;并为你的职业规划提供参考。网络安全职业概览 身处…

Design Vision:显示扇入/扇出逻辑

相关阅读 Design Visionhttps://blog.csdn.net/weixin_45791458/category_13006970.html?spm1001.2014.3001.5482 在使用Design Vision中查看示意图时&#xff0c;可以在示意图中查看所选单元(Cell)、引脚(Pin)、端口(Port)或线网(Net)的扇入/扇出逻辑。用户可以在当前激活的…

13.7 Meta LLaMA2-Chat核心技术突破:三重强化学习实现91.4%安全评分,超越ChatGPT的对话模型架构全解析

Meta LLaMA2-Chat核心技术突破:三重强化学习实现91.4%安全评分,超越ChatGPT的对话模型架构全解析 指令微调模型:LLaMA2-Chat 技术深度解析 LLaMA2-Chat 作为 Meta 推出的对话优化大模型,其技术实现展现了大模型对齐(Alignment)领域的前沿突破。与基础版 LLaMA2 相比,该…

二维仿射变换笔记

二维仿射变换笔记 1. 数学基础 1.1 变换矩阵 二维仿射变换使用3x3的齐次坐标矩阵表示: [a b tx] [c d ty] [0 0 1 ]其中: [a b; c d] 是线性变换部分,表示旋转、缩放和错切[tx; ty] 是平移部分最后一行 [0 0 1] 是齐次坐标的固定形式1.2 基本变换 1.2.1 平移变换 将点…

创建自定义Dataset类与多分类问题实战

codes 文章目录&#x1f31f; 6 多分类问题与卷积模型的优化&#x1f9e9; 6.1 创建自定义Dataset类⚠️ 数据集特点&#xff1a;&#x1f511; 关键实现步骤&#xff1a;&#x1f6e0;️ 自定义Dataset类实现&#x1f4ca; 数据集划分与可视化&#x1f9e0; 6.2 基础卷积模型&…

用vue自定义指令设置页面权限

1.按钮权限处理/*** v-hasPermi 按钮权限处理*/import store from /storeexport default {inserted(el, binding, vnode) {const { value } bindingconst all_permission "*:*:*";const permissions store.getters && store.getters.permissionsif (value…

JPA / Hibernate

1. JPA 和 Hibernate 有什么区别&#xff1f;JPA 是 Java 官方提出的一套 ORM 规范&#xff0c;它只定义了实体映射、关系管理、查询接口等标准&#xff0c;不包含具体实现。Hibernate 是对 JPA 规范的最常用实现&#xff0c;提供了完整的 ORM 功能&#xff0c;并扩展了许多 JP…

kibana显示未准备就绪

kibana显示未准备就绪 最近在研究新版本的ELK&#xff08;Elasticsearch, Logstash, Kibana&#xff09;栈时遇到了一个问题&#xff1a;虽然服务器本身能够访问ELK服务&#xff0c;但通过浏览器尝试访问时却无法成功。这里我将分享一些可能的排查步骤和解决方案。连接es的地址…

语音对话秒译 + 视频悬浮字 + 相机即拍即译:ViiTor 如何破局跨语言场景?

在跨语言信息获取场景中&#xff0c;语言壁垒常导致效率降低。ViiTor Translate 试图通过 “场景化功能布局” &#xff0c;覆盖 语音、视频、图像、文本 四大维度翻译需求。以下基于产品功能展示&#xff0c;拆解其核心能力&#xff1a; 1. 实时语音对话翻译&#xff1a;打破交…

国内第一梯队终端安全产品解析:技术与场景实践

国内终端安全市场的第一梯队产品&#xff0c;通常具备技术领先性、场景覆盖度和规模化落地能力。结合 2025 年最新行业动态与实战案例&#xff0c;以下从技术架构、核心能力和典型应用三个维度&#xff0c;解析当前市场的头部产品及其差异化价值。一、技术架构与市场格局国内终…

FTP 备份,一种更安全的备份方式

备份数据后最重要的任务是确保备份安全存储&#xff0c;最好是异地存储。您可以通过物理方式将备份介质&#xff08;例如磁带和 CD/DVD&#xff09;移动到异地位置。这是一个乏味、耗时、不方便且不可靠的方式。更简单的解决方案是通过 FTP 备份到保存在异地的服务器。什么是 F…

理解 HTTP POST 请求中的 json 和 data 参数

在使用 Python 发送 HTTP POST 请求时&#xff08;无论是使用 requests 还是 aiohttp&#xff09;&#xff0c;json 和 data 参数有明确的区别和使用场景。理解这些区别对正确构建请求至关重要。关键区别特性json 参数data 参数内容类型自动设置为 application/json需要手动设置…

C#反射机制与Activator.CreateInstance

本文仅作为参考大佬们文章的总结。 反射是C#和.NET框架中一项强大的功能&#xff0c;允许程序在运行时检查、创建和操作类型、方法、属性等元数据。作为反射机制的核心组件&#xff0c;Activator.CreateInstance提供了动态实例化对象的灵活方式。本文将全面剖析C#反射的原理、…

Linux的用户和用户组与权限解析、环境变量说明与配置、sudo配置解析和使用

一、Linux的用户及用户组与权限 1.1、Linux的用户和用户组内容介绍 Linux的用户角色分类序号Linux的用户角色说明1超级用户拥有对系统的最高管理权限&#xff0c;可执行任意操作&#xff0c;默认是root用户2普通用户只能对自己目录下的文件进行访问和修改&#xff0c;具有登录系…

图解LeetCode:79递归实现单词搜索

网格 (board): 单词搜索 中等 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”…

2025 R3CTF

文章目录EvalgelistSilent Profit&#xff08;复现&#xff09;Evalgelist <?phpif (isset($_GET[input])) {echo <div class"output">;$filtered str_replace([$, (, ), , ", "", "", ":", "/", "!&…

WebView JSBridge 无响应问题排查实录 全流程定位桥接调用失效

在混合开发项目中&#xff0c;Web 页面与 Native 的通信桥梁——JSBridge&#xff0c;承担着极为关键的角色。它不仅让网页能调起原生功能&#xff08;分享、登录、拍照等&#xff09;&#xff0c;也支持原生传值、事件回调。 然而&#xff0c;当 JSBridge 调用“没有响应”、c…