【深度强化学习】TRPO、PPO

策略梯度的缺点

  • 步长难以确定,一旦步长选的不好,就导致恶性循环
    步长不合适 → 策略变差 → 采集的数据变差 → (回报 / 梯度导致的)步长不合适 步长不合适 \to 策略变差 \to 采集的数据变差 \to (回报/梯度导致的)步长不合适 步长不合适策略变差采集的数据变差(回报/梯度导致的)步长不合适

  • 一阶信息不限制步长容易越过局部最优,而且很难回来
    在这里插入图片描述

TRPO 置信域策略优化

思想:

  • 步子不要太大,应该保证更新在某个邻域内 ∣ ∣ θ − θ o l d ∣ ∣ < Δ ||\theta-\theta_{old}||<\Delta ∣∣θθold∣∣<Δ(或者 K L ( π θ ( ⋅ ∣ ⋅ ) ) , π θ o l d ( ⋅ ∣ ⋅ ) ) < Δ \mathrm{KL}(\pi_\theta(\cdot|\cdot)),\pi_{\theta_{old}}(\cdot|\cdot))<\Delta KL(πθ()),πθold())<Δ
  • 利用二阶信息估计邻域 N ( θ o l d ) \mathcal{N}(\theta_{old}) N(θold) 内的 θ \theta θ

步骤

  1. 对循环的每一步,用 θ o l d \theta_{old} θold 策略采样一条轨迹(MC 思想)
  2. 对每一个轨迹位置,都计算它们的折扣回报 G i G_i Gi
  3. 用采样的样本估计期望作为近似的目标函数 L ( θ ∣ θ o l d ) L(\theta|\theta_{old}) L(θθold)(除以 π o l d \pi_{old} πold是因为重要性采样)
    L ( θ ∣ θ o l d ) = E a i ∼ π [ π ( a i ∣ s i ; θ ) G i ] L(\theta|\theta_{old}) = \mathbb{E}_{a_i\sim\pi}[{\pi(a_i|s_i;\theta)}G_i] L(θθold)=Eaiπ[π(aisi;θ)Gi]
    L ( θ ∣ θ o l d ) = E a i ∼ π o l d [ π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) G i ] \red{L(\theta|\theta_{old}) = \mathbb{E}_{a_i\sim\pi_{old}}[\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})}G_i]} L(θθold)=Eaiπold[π(aisi;θold)π(aisi;θ)Gi]
  4. 利用某种(二阶)优化方法(涉及 Fisher Information Matrix、共轭梯度法)求邻域内的能够最大化近似代价函数的最大值
    在这里插入图片描述

优势:

  • 训练更稳定,收敛曲线不会剧烈波动,而且对超参数不敏感
  • 样本有效,用更少的经验就能达到和 PG 相同的表现

缺点:

  • 重要性采样:除法引起高方差
  • 有约束优化问题,不容易优化

PPO 近端策略优化

PPO 实际上就是为了解决 TRPO 的这两个问题而提出的,做的改进是:

  • Clip 截断重要性采样的值,防止过大(类似于梯度截断)
    C l i p { π ( a i ∣ s i ; θ ) π ( a i ∣ s i ; θ o l d ) , 1 − ϵ , 1 + ϵ } \mathrm{Clip} \left\{ \frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})} , 1-\epsilon, 1+\epsilon \right\} Clip{π(aisi;θold)π(aisi;θ),1ϵ,1+ϵ}
  • KL散度条件转为无约束,自适应 β \beta β超参
    max ⁡ θ L ( θ ∣ θ o l d ) − β K L ( θ ∣ θ o l d ) \max_\theta L(\theta|\theta_{old}) - \beta \mathrm{KL} (\theta|\theta_{old}) θmaxL(θθold)βKL(θθold)

John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov: Proximal Policy Optimization Algorithms. CoRR abs/1707.06347 (2017)

总结

策略梯度
REINFORCE (MC,从梯度上升开始、除以 π \pi π变成 Ln)

REINFORCE基线 REINFORCE (MC, G − v ( s ) G-v(s) Gv(s))→ Actor-Critic(TD, r + γ v ( s ) − v ( s ′ ) r+γv(s)-v(s') r+γv(s)v(s)
REINFORCETRPO (有约束、二阶信息)→ PPO(有约束转无约束、截断重要性)
REINFORCE → …

More

https://spinningup.openai.com/en/latest/algorithms/trpo.html
https://jonathan-hui.medium.com/rl-the-math-behind-trpo-ppo-d12f6c745f33
https://towardsdatascience.com/trust-region-policy-optimization-trpo-explained-4b56bd206fc2

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

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

相关文章

RabbitMQ 消息持久化

默认情况下&#xff0c;exchange、queue、message 等数据都是存储在内存中的&#xff0c;这意味着如果 RabbitMQ 重启、关闭、宕机时所有的信息都将丢失。 RabbitMQ 提供了持久化来解决这个问题&#xff0c;持久化后&#xff0c;如果 RabbitMQ 发送 重启、关闭、宕机&#xff…

信息安全和网络安全的区别

信息安全与网络安全都属于安全领域&#xff0c;但它们的范围和重点不同。 信息安全主要关注数据的保护&#xff0c;包括对敏感数据进行加密、防止数据丢失或泄露等措施。信息安全通常与数据存储、传输和处理相关。 而网络安全更侧重于保护计算机系统和网络免受攻击、病毒、蠕…

C++类与对象 (上)

目录 前言&#xff1a; 类和对象的理解 类的引入 类的定义与使用方式 访问限定符 类的两种定义方式 成员变量的命名规则 类的作用域 类的实例化 类对象模型 计算类对象的大小 类对象的存储方式 this指针 前言&#xff1a; C语言是面向过程的&#xff0c;关注的是过…

我想开发一款跨平台桌面软件,请告诉我qt、electron、tauri、pyqt、flutter分别适合开发哪些跨平台桌面

不同的跨平台桌面开发工具适用于不同的应用场景和开发者需求。以下是关于 Qt、Electron、Tauri、PyQt、Flutter 的简要说明&#xff0c;以帮助你更好地选择适合你项目的工具&#xff1a; Qt: 适用场景&#xff1a; Qt 是一个强大的 C 框架&#xff0c;适用于开发需要高性能和原…

【LeetCode】数组精选17题——双指针、滑动窗口、前缀和

目录 快慢指针&#xff1a; 1. 移动零&#xff08;简单&#xff09; 2. 复写零&#xff08;简单&#xff09; 对撞指针&#xff1a; 1. 两数之和 II - 输入有序数组&#xff08;中等&#xff09; 2. 三数之和&#xff08;中等&#xff09; 3. 有效三角形的个数&#xff…

python语言中“缩进”说法,python中的缩进规则

本篇文章给大家谈谈python语言中“缩进”说法&#xff0c;以及python中的缩进规则&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 缩进是Python的灵魂 Python是一门独特的语言&#xff0c;它的代码块是通过缩进&#xff08;Indentation&#xff09;来标记的&…

QT自带打包问题:无法定位程序输入点?metaobject@qsound

文章目录 无法定位程序输入点?metaobjectqsound……检查系统环境变量的配置&#xff1a;打包无须安装qt的文件 无法定位程序输入点?metaobjectqsound…… 在执行release打包程序后&#xff0c;相应的release文件夹下的exe文件&#xff0c;无法打开 如有错误欢迎指出 检查系…

LCR 181. 字符串中的单词反转

解题思路&#xff1a; class Solution {public String reverseMessage(String message) {message message.trim(); // 删除首尾空格int j message.length() - 1, i j;StringBuilder res new StringBuilder();while (i > 0) {while (i >…

如何批量获取CSDN文章数据并进行持久化

自己去看文章数据的话&#xff0c;比较慢&#xff0c;所以一直想通过程序来批量获取CSDN的文章数据&#xff0c;最近研究了一下&#xff0c;发现还是挺简单的&#xff0c;能够直接通过解析json来获取文章数据&#xff0c;跟大家分享一下。 文章目录 一、步骤1、首先我们到自己的…

JavaScript数组分组groupBy

JavaScript 最近发布了一个方法 Object.groupBy&#xff0c;可以对可迭代对象中的元素进行分组。 语法&#xff1a; Object.groupBy(items, callbackFn)items 被分组的可迭代对象&#xff0c;如 Array。 callbackFn 对可迭代对象中的每个元素执行的函数。 举个例子&#…

结构型设计模式(一):门面模式 组合模式

门面模式 Facade 1、什么是门面模式 门面模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;旨在为系统提供一个统一的接口&#xff0c;以便于访问子系统中的一群接口。它通过定义一个高层接口&#xff0c;简化了客户端与子系统之间的交互&#xf…

基于Java SSM框架实现图书店仓库进销存管理系统项目【项目源码+论文说明】

基于java的SSM框架实现图书店仓库进销存管理系统演示 摘要 仓库作为储存货物的核心功能之一&#xff0c;在整个仓储中具有非常重要的作用&#xff0c;是社会物质生产的必要条件。良好的仓库布局环境能够对货物进入下一个环节前的质量起保证作用&#xff0c;能够为货物进入市场…

FPGA设计与实战之时钟及时序简介1

文章目录 一、时钟定义二、基本时序三、总结一、时钟定义 我们目前设计的电路以同步时序电路为主,时钟做为电路工作的基准而显得非常重要。 简单的接口电路比如I2C、SPI等,复杂一点接口比如Ethernet的MII、GMII等接口,它们都有一个或多个时钟信号。 那么什么是时钟信号?它…

PADS9.5 : 原图绘图图纸尺寸下修改

原图绘图图纸尺寸下修改 图页边界线也要修改 如果二者选择不一致&#xff1a; 会出现下图所示情况&#xff1a;

Android hwcomposer服务启动流程

Android hwcomposer服务启动流程 客户端 binder远程调用 服务端 surfaceflinger --binder--> hwcomposer .hal文件编译时生成支持binder进程间远程调用通信的cpp文件 在out/soong/.intermediates/hardware/interfaces/graphics/composer/2.1/ 目录下找…

基于VGG-16+Android+Python的智能车辆驾驶行为分析—深度学习算法应用(含全部工程源码)+数据集+模型(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建3. 模型训练及保存1&#xff09;模型训练2&#xff09;模型保存 4. 模型生成1&#xff09;模型导入及调用2&#xff09;相关代码&#xff08;1&#xff09;布局文件&#xff08;2&#xff…

LCR 120. 寻找文件副本

解题思路&#xff1a; 利用增强for循环遍历documents&#xff0c;将遇见的id加入hmap中&#xff0c;如果id在hamp中存在&#xff0c;则直接返回id class Solution {public int findRepeatDocument(int[] documents) {Set<Integer> hmapnew HashSet<>();for(int d…

插入排序----希尔排序

希尔排序 希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有记录分成个gap组&#xff0c;所有距离为的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后&#xff0c;取&#xff0c;重复上述分组和排序…