深度策略梯度算法PPO

一、策略梯度核心思想和原理

从时序差分算法Q学习到深度Q网络,这些算法都侧重于学习和优化价值函数,属于基于价值的强化学习算法(Value-based)。

1. 基于策略方法的主要思想(Policy-based)

基于价值类方法当状态动作空间较大且连续时面临挑战,对基于策略的目标函数使用梯度上升优化参数最大化奖励。在策略梯度中,参数化的策略π不再是一个概率集合,而是一个概率密度函数

2. 优点:建模效率高、探索性更好、收敛性更优

3. 模型结构

是无环境模型的结构,神经网络作为策略函数近似器,其参数表示或策略

仍然是一个无环境模型结构,和之前基于价值类的方法有很大的不同。首先,策略不再是隐式的,而是要直接求解。对于深度策略梯度而言就是使用神经网络作为策略函数的函数逼近器,通过神经网络的参数来表示策略π。其次,在下边的PGM图中,没有画出价值结点,多了奖励累计部分,这是因为经典的策略梯度方法经常使用奖励和的期望作为优化的目标,而不直接使用状态价值函数V(s),或者动作价值函数Q(s,a)。与之前的Value-Based方法不同,基于策略的方法不依赖与价值函数的估计,不适用贝尔曼方程或者贝尔曼期望方程,是直接使用神经网络逼近策略函数,并使用策略梯度来进行更新。

R(t)和G(t)的区别:其中R(t)是累计奖励,G(t)是回报。回报是随时间步变化的量,累计奖励R是整个episode的奖励的总和。

4. 目标函数

episode可以用很多个,比如打游戏每个回合就是一个episode,希望在多个回合中找到最佳策略或者规律。目标函数的设计原则就是所有的回合总回报的加权平均值最大(用加权平均的原因是因为每条轨迹发生的概率不同,用的经常发生,有的发生的概率极小,显然不能平均)

5. 策略梯度的两种常见改进

5.1 添加基线:如前所述,策略梯度的计算往往采样轨迹的方法。通过多条轨迹,也就是多次与环境的交互来收集数据,每条轨迹都会算出来一个梯度用来更新函数的参数,然而单条轨迹梯度可能存在高方差的问题,容易导致训练过程的不稳定,或者说收敛的速度比较慢。为了解决这个问题,引入所谓基线这一概念,就是在目标函数梯度中减去一个b,其中b代表baseline,b是一个相对奖励的参考值,因为他的波动范围相对来说更小,因此可以使训练过程更加稳定并且加快收敛速度。具体可以通过减去奖励均值,再除以方差来实现,这样可以将奖励调整为正态分布,从而使得梯度更新的尺度更加合适。这一项叫优势函数,某种程度上可以将优势函数视为价值函数在策略梯度算法中的一种变体。在强化学习中,价值函数通常在基于价值的方法,如动态规划、Q-Learring等中使用,来估计状态或者动作的价值来指导agent的决策。在策略梯度的方法当中,通常使用优势函数,不过这都属于价值评估的范畴。如果我们用便想边干来比喻强化学习过程的话,想就代表求价值,干就是求策略,优势函数就是属于想的这个范畴中。

5.2 改进二:Credit-Assignment功劳分配

在前面的目标函数当中,同一个episode中所有时间步的状态动作对使用同样的奖励来进行加权,这显然是不公平的,因为在同一个episode中有些动作是好的,有些动作是不好的,不应该公平对待。改进如下:在计算总回报的时候,只计算当前时刻之后的奖励,忽略之前的。还可以再未来奖励前加个折扣,让影响力计算更加合理,因为一般情况下,时间拖的越久,未来时刻对当前时刻的影响力就越小。因此γ随时间呈指数级的减小。

6. 策略梯度的适用条件和常见的应用场景

6.1 策略梯度方法可以处理连续的问题,而不需要对动作空间进行离散化。

6.2 适用于高纬度状态空间的问题,可以处理包含大量状态的环境。

6.3 通过参数化的策略函数,使得策略可以灵活调整和优化

在应用场景方面,策略梯度方法适用于各种强化学习任务,比如机器人控制、游戏等等。这些问题中往往都有连续动作空间,此外面对高纬度状态空间问题,图像处理任务,自然语言处理任务等,策略梯度表现出良好的适应性,还有就是策略梯度方法可以很好的应用于带有约束的优化问题。总的来说策略梯度方法相对于基于价值的方法更加灵活,特别是在连续动作空间和高纬度状态空间的情况下。

面临的挑战:梯度估计的方差问题和采样效率等等,在离散动作空间和低纬状态空间中基于价值的方法更具有优势。

二、蒙特卡洛策略梯度

在强化学习中提到蒙特卡洛一般就是指基于经验的学习方法,使用采样轨迹进行学习,而且通常是用完整的轨迹进行学习和估计。

1. 主要思想:蒙特卡洛策略梯度就是一种结合了蒙特卡洛学习和策略梯度的方法,通过采样轨迹,采用梯度上升法,更新参数,最大化累计奖励。

2. 模型结构

属于无环境模型,用神经网络逼近策略函数。选用回报,而非总回报表示价值。

3. 概念对比

4. 目标函数:给定策略之后的累计期望

5. 适用条件

5.1 通常适用于离散空间的强化学习问题,不需要进行连续的动作选择。

5.2 不依赖环境模型的支持,而是通过环境模型的交互来收集经验的样本。

5.3 由于该方法使用完整的轨迹方法进行参数更新,进而可以处理高方差问题,更好地利用轨迹中的奖励信息

5.4 无需探索策略或探索率,因为可以通过与环境的交互来进行自然地探索,这使得他在探索利用平衡方面更加灵活。

三、近端策略优化算法(PPO)

Proximal Policy Optimization

1. 主要思想:

传统策略梯度方法是同策略的,有一些列显著的缺点:

采样效率低:每个样本只用于一次更新,用完就废掉,无法重复利用

方差大、收敛不稳定:受样本随机性和噪声的影响

难以探索新策略空间:只使用当前的采样数据,容易陷入局部最优

优点:异策略(off-policy)将采样与学习分离,数据复用,收敛性和稳定性更好

2. 前置知识

2.1 重要性采样(Importance Sampling)

是一种用于估计概率分布的统一方法,常常用于强化学习,概率推断和统计推断等领域,主要目的是用一个概率分布的样本来估计另一个概率的期望或者是累计的分布函数。比如:兄弟俩,其中有一个很神秘,不知道其连续分布长什么样。另外一个很熟悉,分布是已知的。两个人都可以采样,也就是说可以同时知道他们的一些具体的行为,比如他俩同时参加一次考试得到的分数,这样以来就能根据一个人的行为,再加上两个人在某些具体的事上的比值来估计另外一个人。

3. 目标函数

近端强调的就是KL项起到的约束作用。重要性采样+KL散度=PPO算法同策略到异策略的完美转换。其中KL散度是用来度量两种分布间相似程度的量,简单理解就是一个数值,约相似这个数值就约小。

4. 改进

4.1 改进一、自适应惩罚(PPO penalty)

在KL惩罚之前有个参数β,理想情况下是可以自适应调整的,用来实现动态惩罚的目的。具体调整如下:进一步前边的期望可以简化为一个求和的运算有两个原因,一是假定所有样本的概率相同。二是在求梯度的情况下除以样本数的意义也不是很大,去掉也不受影响。

4.2 PPO-clip

clip修剪:简化原有目标函数KL散度部分,提高运算效率。

5. 模型结构

重要性采样PPO和KL散度都是在修正或约束两个策略分布间相似度

其中虚线表示未知的目标策略,实线表示已知的采样策略

6. 适用条件:

6.1 在高纬度连续动作空间搜索最优策略的问题:机器人控制、自动驾驶等

6.2 适用于需要稳定收敛的任务:限制每次更新中策略改变幅度

6.3 大规模分布式训练:可以在多个并行训练实例上更新和采样

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

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

相关文章

【LaTeX】Word插入LaTeX行间公式如何编号和对齐

在 Word 文档中插入公式,需要用到 LaTeX \LaTeX LATE​X 。但遗憾的是,Word 只支持部分 LaTeX \LaTeX LATE​X 语法,这就导致很多在 Markdown 能正常渲染的公式在 Word 中无法正常显示。 “内嵌”和“显示” 首先介绍一下 Word 的“内嵌”…

互联网大厂Java面试实战:Spring Boot到微服务的技术问答解析

💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…

spring boot3.0自定义校验注解:文章状态校验示例

文章目录 Spring Boot 自定义校验注解:状态校验示例一、创建 State 注解步骤:1. 创建自定义注解:2. 实现校验逻辑: 二、 实现自定义校验步骤:1. 在实体类中使用自定义校验注解 State:2. 添加 State 注解: 总…

无侵入式弹窗体验_探索 Chrome 的 Close Watcher API

1. 引言 在网页开发中,弹窗(Popup)是一种常见的交互方式,用于提示用户进行操作、确认信息或展示关键内容。然而,传统的 JavaScript 弹窗方法如 alert()、confirm() 和 prompt() 存在诸多问题,包括阻塞主线程、样式不可定制等。 为了解决这些问题,Chrome 浏览器引入了 …

调出事件查看器界面的4种方法

方法1. 方法2. 方法3. 方法4.

Ubuntu 安装远程桌面连接RDP方式

1. 安装 XFCE4 桌面环境 如果你的 Ubuntu 系统默认使用 GNOME 或其它桌面环境,可以安装轻量级的 XFCE4: sudo apt update sudo apt install xfce4 xfce4-goodies 说明:xfce4-goodies 包含额外的插件和工具(如面板插件、终端等&a…

LWIP传输层协议笔记

传输协议简介 文件/图片/视频 都是一堆二进制数据 经过传输层来传输 这两种协议有什么区别呢? 传输层的TCP/UDP三个步骤 TCP使用传输流程 1、三次握手 作用:三次握手就是建立连接的过程 2、传输数据 作用:建立连接完成之后&#xff…

数据分析与逻辑思维:六步解决业务难题;参考书籍《数据分析原理:6步解决业务分析难题 (周文全, 黄怡媛, 马炯雄)》

文章目录 一、懂业务:业务背景与逻辑前提1.1 明确业务目标与问题定义1.2 培养批判性思维与高于业务视角 二、定指标:构建科学的指标体系2.1 指标拆解与维度分析2.2 典型指标体系案例:用户与业务视角 三、选方法:匹配业务需求的分析…

开启WSL的镜像网络模式

开启WSL的镜像网络模式 前提 Windows主机系统版本高于Windows 11 22H2。WLS版本>2.0。 可输入wsl --version查看当前系统wsl版本。 修改设置 图形界面修改 在开始菜单中搜索:wsl settings,结果如下图所示: 点击“打开”&#xff0…

Python爬虫第20节-使用 Selenium 爬取小米商城空调商品

目录 前言 一、 本文目标 二、环境准备 2.1 安装依赖 2.2 配置 ChromeDriver 三、小米商城页面结构分析 3.1 商品列表结构 3.2 分页结构 四、Selenium 自动化爬虫实现 4.1 脚本整体结构 4.2 代码实现 五、关键技术详解 5.1 Selenium 启动与配置 5.2 页面等待与异…

聚类分析的原理、常用算法及其应用

聚类分析的原理、常用算法及其应用 一、聚类分析的基本原理 (一)什么是聚类分析 聚类分析是一种无监督学习方法,其目标是将数据集中的样本划分为若干个簇,每个簇包含相似的样本。聚类分析的核心思想是通过某种相似性度量&#…

Aware和InitializingBean接口以及@Autowired注解失效分析

Aware 接口用于注入一些与容器相关信息,例如: ​ a. BeanNameAware 注入 Bean 的名字 ​ b. BeanFactoryAware 注入 BeanFactory 容器 ​ c. ApplicationContextAware 注入 ApplicationContext 容器 ​ d. EmbeddedValueResolverAware 注入 解析器&a…

JDK 安装与配置

JDK 全称是 Java SE Development Kit,翻译成中文就是:Java 标准版开发包,是 Sun 公司(后被 Oracle 公司收购)专门外 Java 开发人员提供的一套用于开发 Java 应用程序的工具包。 JDK 提供了用于编译和运行 Java 应用程序…

防火墙来回路径不一致导致的业务异常

案例拓扑: 拓扑描述: 服务器有2块网卡,内网网卡2.2.2.1/24 网关2.2.254 提供内网用户访问; 外网网卡1.1.1.1/24,外网网关1.1.1.254 80端口映射到公网 这个时候服务器有2条默认路由,分布是0.0.0.0 0.0.0.0 1…

Java面试高频问题(36-37)

三十六、服务网格核心能力与设计模式 服务网格架构分层模型 mermaid graph TB subgraph 数据平面 ASidecar代理 -->拦截流量 BEnvoy B -->协议转换 CHTTP/gRPC B -->策略执行 D熔断/限流 end subgraph 控制平面 E配置中心 -->下发策略 Fistiod F -->证书管理 …

redis数据结构-02(INCR、DECR、APPEND)

字符串操作:INCR、DECR、APPEND Redis 字符串不仅仅是简单的文本,它们还可以表示数字。此功能使我们能够直接对存储在 Redis 中的字符串值执行原子的递增和递减操作。此外,Redis 还提供了一种附加到现有字符串的方法,从而可以轻松…

Spring MVC 中Model, ModelMap, ModelAndView 之间有什么关系和区别?

在 Spring MVC 中,Model, ModelMap, 和 ModelAndView 都是用来在 Controller 和 View 之间传递数据的,但它们在使用方式和功能上有所不同。 它们的核心在于:Spring MVC 需要知道两件事来渲染视图:① 数据 (Model) ② 视图名称 (V…

配置Hadoop集群-免密登录

在 Hadoop 集群中配置免密登录是确保各节点间高效通信的关键步骤。以下是基于 SSH 密钥认证的免密登录配置方案,支持主节点(NameNode)到所有从节点(DataNode)的无密码访问: 1. 环境准备 集群规划&#xff…

C++类与对象(二):六个默认构造函数(一)

在学C语言时,实现栈和队列时容易忘记初始化和销毁,就会造成内存泄漏。而在C的类中我们忘记写初始化和销毁函数时,编译器会自动生成构造函数和析构函数,对应的初始化和在对象生命周期结束时清理资源。那是什么是默认构造函数呢&…

嵌入式培训之数据结构学习(一)数据结构的基础概念、线性表

一、基础概念 1、数据结构:相互之间存在一种或多种特定关系的数据元素的集合。(特定关系有逻辑关系与线性关系) (1)逻辑结构 集合,所有数据在同一个集合中,关系平等(数组&#xff…