经典策略梯度算法

经典策略梯度算法

DDPG算法

DDPG 算法被提出的初衷其实是 DQN 算法的一个连续动作空间版本扩展。深度确定性策略梯度算法( deep deterministic policy gradient,DDPG),是一种确定性的策略梯度算法。

由于DQN算法中动作是通过贪心策略或者argmax的方式从Q函数间接得到。要想适配连续动作空间,考虑将选择动作的过程编程一个直接从状态映射到具体动作的函数 μ θ ( s ) \mu_\theta (s) μθ(s),也就是actor网络中求解Q函数以及贪心选择动作这两个过程合并为一个函数。Actor 的任务就是寻找这条曲线的最高点,并返回对应的横坐标,即最大 Q 值对应的动作。

img

这里相当于是把 DQN 算法中 ε − greedy \varepsilon-\text{greedy} εgreedy策略函数部分换成了 Actor 。注意 Actor 网络 μ θ ( s ) \mu_\theta (s) μθ(s) 与输出概率分布的随机性策略( stochastic policy )不同,输出的是一个值,因此也叫做确定性策略( deterministic policy )。

在强化学习基础算法的研究改进当中,基本无外乎几个亘古不变的主题:首先是如何提高对值函数的估计,保证其准确性,即尽量无偏且低方差,例如最开始的用深度神经网络替代简单的Q表、结合蒙特卡洛和时序差分的 TD(λ) 、引入目标网络以及广义优势估计等等;其次是如何提高探索以及平衡探索-利用的问题,尤其在探索性比较差的确定性策略中,例如 DQN 和 DDPG 算法都会利用各种技巧来提高探索,例如经验回放、 ε − greedy \varepsilon-\text{greedy} εgreedy 策略、噪声网络等等。这两个问题是强化学习算法的基础核心问题,希望能够给读者在学习和研究的过程中带来一定的启发。

DDPG算法优缺点:

DDPG 算法的优点主要有:

  • 适用于连续动作空间:DDPG 算法采用了确定性策略来选择动作,这使得它能够直接处理连续动作空间的问题。相比于传统的随机策略,确定性策略更容易优化和学习,因为它不需要进行动作采样,缓解了在连续动作空间中的高方差问题。
  • 高效的梯度优化:DDPG 算法使用策略梯度方法进行优化,其梯度更新相对高效,并且能够处理高维度的状态空间和动作空间。同时,通过 Actor-Critic 结构,算法可以利用值函数来辅助策略的优化,提高算法的收敛速度和稳定性。
  • 经验回放和目标网络:这是老生常谈的内容了,经验回放机制可以减少样本之间的相关性,提高样本的有效利用率,并且增加训练的稳定性。目标网络可以稳定训练过程,避免值函数估计和目标值之间的相关性问题,从而提高算法的稳定性和收敛性。

DDPG缺点:

  • 只适用于连续动作空间:这既是优点,也是缺点。
  • 高度依赖超参数:DDPG 算法中有许多超参数需要进行调整,除了一些 DQN的算法参数例如学习率、批量大小、目标网络的更新频率等,还需要调整一些 OU 噪声的参数 调整这些超参数并找到最优的取值通常是一个挑战性的任务,可能需要大量的实验和经验。
  • 高度敏感的初始条件:DDPG 算法对初始条件非常敏感。初始策略和值函数的参数设置可能会影响算法的收敛性和性能,需要仔细选择和调整。
  • 容易陷入局部最优:由于采用了确定性策略,可能会导致算法陷入局部最优,难以找到全局最优策略。为了增加探索性,需要采取一些措施,如加入噪声策略或使用其他的探索方法。

TD3算法是在DDPG的基础上进行改进,主要是以下三点改进:一是 双 Q 网络,体现在名字中的 twin,二是 延迟更新,三是 噪声正则( noise regularisation )

双Q网络的思想:在 DDPG 算法中的 Critic 网络上再加一层,这样就形成了两个 Critic 网络,计算 TD 误差的时候,就可以取两个Q值中较小的那个。

延迟更新:在训练中 Actor 的更新频率要低于 Critic 的更新频率。在学习过程中,Critic 是不断更新的,可以想象一下,假设在某个时刻 Actor 好不容易达到一个最高点,这个时候 Critic 又更新了,那么 Actor 的最高点就被打破了,这样一来 Actor 就会不断地追逐 Critic,这样就会造成误差的过分累积,进而导致 Actor 的训练不稳定,甚至可能会发散。可以在训练中让 Actor 的更新频率低于 Critic 的更新频率,这样一来 Actor 的更新就会比较稳定,不会受到 Critic 的影响,从而提高算法的稳定性和收敛性。

噪声正则:目标策略平滑正则化,可以给 Critic 引入一个噪声提高其抗干扰性,这样一来就可以在一定程度上提高 Critic 的稳定性,从而进一步提高算法的稳定性和收敛性。

练习题

  1. DDPG 算法是 off-policy 算法吗?为什么?

DDPG 算法是一个 off-policy 的算法,原因是因为它使用了一个确定性的策略,而不是一个随机的策略。DDPG 通过 off-policy 的方式来训练一个确定性策略,这样可以增强探索能力,同时也可以利用经验回放和目标网络的技巧来提高稳定性和收敛速度。

  1. 软更新相比于硬更新的好处是什么?为什么不是所有的算法都用软更新?

软更新可以使目标网络的参数变化更平滑,避免了目标标签的剧烈波动,从而提高了算法的稳定性和收敛性。
可以使目标网络更接近当前网络,从而减少了目标网络和当前网络之间的偏差,提高了算法的性能。

软更新需要在每次迭代中更新目标网络,这会增加计算的开销,而硬更新只需要在固定的间隔中更新一次目标网络,更节省资源。可能不适用于一些基于离散动作空间的算法,如DQN,因为这些算法需要一个稳定的目标网络来提供一个清晰的目标,而软更新会导致目标网络不断变化

  1. 相比于DDPG 算法,TD3 算法做了哪些改进?请简要归纳。

一是 双 Q 网络,体现在名字中的 twin,二是 延迟更新,三是 噪声正则

  1. TD3 算法中 Critic 的更新频率一般要比 Actor 是更快还是更慢?为什么?

TD3 算法中 Critic 的更新频率一般要比 Actor 是更快的.Critic 的更新可以使目标网络的参数变化更平滑,避免了目标标签的剧烈波动,从而提高了算法的稳定性和收敛性。

PPO算法

不同于 DDPG 算法,PPO 算法是一类典型的 Actor-Critic 算法,既适用于连续动作空间,也适用于离散动作空间。PPO 算法的主要思想是通过在策略梯度的优化过程中引入一个重要性权重来限制策略更新的幅度,从而提高算法的稳定性和收敛性。

重要性采样

是一种估计随机变量的期望或者概率分布的统计方法。它的原理也很简单,假设有一个函数 f ( x ) f(x) f(x),需要从分布 p ( x ) p(x) p(x) 中采样来计算其期望值,但是在某些情况下我们可能很难从 p ( x ) p(x) p(x) 中采样,这个时候我们可以从另一个比较容易采样的分布 q ( x ) q(x) q(x) 中采样,来间接地达到从 p ( x ) p(x) p(x) 中采样的效果。

E p ( x ) [ f ( x ) ] = ∫ a b f ( x ) p ( x ) q ( x ) q ( x ) d x = E q ( x ) [ f ( x ) p ( x ) q ( x ) ] (12.1) \tag{12.1} E_{p(x)}[f(x)]=\int_{a}^{b} f(x) \frac{p(x)}{q(x)} q(x) d x=E_{q(x)}\left[f(x) \frac{p(x)}{q(x)}\right] Ep(x)[f(x)]=abf(x)q(x)p(x)q(x)dx=Eq(x)[f(x)q(x)p(x)](12.1)

这样一来原问题就变成了只需要从 q ( x ) q(x) q(x) 中采样,然后计算两个分布之间的比例 中采样,然后计算两个分布之间的比例 中采样,然后计算两个分布之间的比例\frac{p(x)}{q(x)}$即可,这个比例称之为重要性权重

不难看出,当 q ( x ) q(x) q(x)越接近 p ( x ) p(x) p(x) 的时候,方差就越小,也就是说重要性权重越接近于 1 的时候,反之越大。

而策略梯度算法的高方差主要来源于 Actor 的策略梯度采样估计,PPO 算法的核心思想就是通过重要性采样来优化原来的策略梯度估计。

本质上 PPO 算法就是在 Actor-Critic 算法的基础上增加了重要性采样的约束而已,从而确保每次的策略梯度估计都不会过分偏离当前的策略,也就是减少了策略梯度估计的方差,从而提高算法的稳定性和收敛性。

PPO 算法究竟是 o n − p o l i c y on-policy onpolicy 还是 o f f − p o l i c y off-policy offpolicy 的呢?有读者可能会因为 PPO 算法在更新时重要性采样的部分中利用了旧的 Actor 采样的样本,就觉得 PPO 算法会是 o f f − p o l i c y off-policy offpolicy 的。实际上虽然这批样本是从旧的策略中采样得到的,但我们并没有直接使用这些样本去更新我们的策略,而是使用重要性采样先将数据分布不同导致的误差进行了修正,即是两者样本分布之间的差异尽可能地缩小。换句话说,就可以理解为重要性采样之后的样本虽然是由旧策略采样得到的,但可以近似为从更新后的策略中得到的,即我们要优化的 Actor 和采样的 Actor 是同一个,因此 PPO 算法是 on-policy 的

练习题

  1. 为什么 DQN 和 DDPG 算法不使用重要性采样技巧呢?

DQN 和 DDPG 算法虽然都是 off-policy 的,但是它们的目标策略都是确定性的,即给定状态,动作是唯一确定的。这样的话,重要性采样的比例不是 0,就是 1/p,其中 p 是采样策略的概率。这样的重要性采样没有意义,也没有必要。

  1. PPO 算法原理上是 on-policy 的,但它可以是 off-policy 的吗,或者说可以用经验回放来提高训练速度吗?为什么?(提示:是可以的,但条件比较严格)

可以的。但条件比较严格

数据的采样策略和目标策略之间的差异不能太大,否则会导致重要性采样的比例过大或过小,影响梯度的估计。
数据的采样策略和目标策略之间的 KL 散度不能超过一个阈值,否则会导致目标函数的近似失效,影响优化的效果。
数据的采样策略和目标策略之间的相似度不能太低,否则会导致策略的收敛速度变慢,影响学习的效率。

  1. PPO 算法更新过程中在将轨迹样本切分个多个小批量的时候,可以将这些样本顺序打乱吗?为什么?

可以将这些样本顺序打乱。

将样本顺序打乱可以增加数据的多样性,避免因为样本之间的相关性而影响学习的效果。也可以减少因为样本顺序不同而导致的策略更新的不一致性,提高学习的稳定性。

  1. 为什么说重要性采样是一种特殊的蒙特卡洛采样?

允许在复杂问题中利用已知的简单分布进行采样,从而避免了直接采样困难分布的问题,同时通过适当的权重调整,可以使得蒙特卡洛估计更接近真实结果。

SAC算法

SAC 算法是一种基于最大熵强化学习的策略梯度算法,它的目标是最大化策略的熵,从而使得策略更加鲁棒。SAC 算法的核心思想是,通过最大化策略的熵,使得策略更加鲁棒。

确定性策略是指在给定相同状态下,总是选择相同的动作,随机性策略则是在给定状态下可以选择多种可能的动作。

而确定性与随机性优缺点:

确定性策略:

  • 优势:稳定性且可重复性。由于策略是确定的,因此可控性也比较好,在一些简单的环境下,会更容易达到最优解,因为不会产生随机性带来的不确定性,实验也比较容易复现。
  • 劣势:缺乏探索性。由于策略是确定的,因此在一些复杂的环境下,可能会陷入局部最优解,无法探索到全局最优解,所以读者会发现目前所有的确定性策略算法例如 DQN 、DDPG 等等,都会增加一些随机性来提高探索。此外,面对不确定性和噪音的环境时,确定性策略可能显得过于刻板,无法灵活地适应环境变化。

随机性策略:

  • 优势:更加灵活。由于策略是随机的,这样能够在一定程度上探索未知的状态和动作,有助于避免陷入局部最优解,提高全局搜索的能力。在具有不确定性的环境中,随机性策略可以更好地应对噪音和不可预测的情况。
    境变化。

随机性策略:

  • 优势:更加灵活。由于策略是随机的,这样能够在一定程度上探索未知的状态和动作,有助于避免陷入局部最优解,提高全局搜索的能力。在具有不确定性的环境中,随机性策略可以更好地应对噪音和不可预测的情况。
  • 劣势:不稳定。正是因为随机,所以会导致策略的可重复性太差。另外,如果随机性太高,可能会导致策略的收敛速度较慢,影响效率和性能。

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

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

相关文章

STM32CubeIDE(CUBE-MX)----快速移植FreeRTOS实战

文章目录 前言一、Freertos可视化配置二、生成代码三、实验现象总结 前言 FreeRTOS(Real-Time Operating System)是一个开源的实时操作系统内核,专注于嵌入式系统。它提供了一套用于管理任务、调度器、内存管理等的实时操作系统功能&#xf…

spring RedisTemplate RedisLockRegistry opsForXxx 基本使用总结以及介绍

一、基本介绍 RedisTemplate 为 spring 对 redis 操作的高度封装,基本已经满足所有使用场景。 若存在其他拓展使用我们可以自行封装工具类对基本操作进行组装。 RedisLockRegistry 对 redis 锁的一些封装 二、不同环境下依赖以及基本配置 2.1 spring-boot 下依赖…

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面

windows启动后直接进入指定程序并且不显示欢迎界面和windows桌面 前言开机进入指定程序方法问题 浅尝GINA和Credential Providers关闭欢迎屏幕 前言 由于系统需求需要做到电脑开机后显示完windows加载页面就直接进入自己系统的界面,并且不显示登录欢迎页面&#xf…

java操作windows系统功能案例(二)

1、打印指定文件 可以使用Java提供的Runtime类和Process类来打印指定文件。以下是一个示例代码: import java.io.File; import java.io.IOException;public class PrintFile {public static void main(String[] args) {if (args.length ! 1) {System.out.println(…

supermap-iserver激活教程(linux)

本篇只介绍linux临时许可激活教程,windows的原理一摸一样不做赘述。 1.下载许可中心(web版) SuperMap技术资源中心|为您提供全面的在线技术服务 2.解压 supermap-bslicense-server-3.0.24-linux-x64.tar.gz tar -zxvf supermap-bslicense…

微信小程序 - 开发版、体验版、正式版共享本地缓存

问题描述 最近突然发现一个大问题啊,小程序切换版本环境的时候发现数据被污染了,瞬间就怀疑不同环境版本的小程序本地缓存是否共享的?! 果然是! 解决方案 我们可能马上想到解决方案就是:给每一个环境版本…

Python字符串大小写转换的函数及用法

Python字符串由内建的str类代表,那么str 类包含哪些方法呢?Python 非常方便,它甚至不需要用户查询文档,Python 是“自带文档”的。 这里需要读者简单掌握两个帮助函数: dir():列出指定类或模块包含的全部…

万户ezOFFICE wpsservlet任意文件上传漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息…

什么是AI PC:人工智能电脑?

大家好啊,我是董董灿。 今天在一个群聊里,聊到了关于 AI PC (人工智能电脑)的话题。 之前看到过关于 AI PC 的新闻,说的是联想集团董事长兼CEO杨元庆在一次演讲中提到了 AI PC 的概念,并且绘声绘色的描绘了AI PC 的发展前景。 下…

希亦、追觅和添可洗地机哪个好?3款热门洗地机测评

洗地机因为自身的超强清洁效果,能大大的降低家务清洁工作,所以近年来以及越来越成为家庭的标配家电。 地机选起来让人眼花缭乱,对于消费者来说,如何选择一台实用性价比高的洗地机已经是一个头疼的问题,看着宣传画面很…

【前端开发】Next.js与Nest.js之间的差异2023

在快节奏的网络开发领域,JavaScript已成为构建可靠且引人入胜的在线应用程序的标准语言。然而,随着对适应性强、高效的在线服务的需求不断增加,开发人员通常不得不从广泛的库和框架中进行选择,以满足其项目的要求。Next.js和Nest.…

【C++ Primer Plus学习记录】嵌套循环和二维数组

for循环是一种处理数组的工具。下面进一步讨论如何使用嵌套for循环中来处理二维数组。 C没有提供二维数组类型,但是用户可以创建每个元素本身都是数组的数组。例如,假设要存储5个城市在4年间的最高温度,可以这样声明数组: int m…

HP1010 | 业界首款图腾柱 PFC 专用数字控制器震撼来袭!

随着节能标准和客户需求的不断提高,电源解决方案的效率和尺寸也在不断优化,设计紧凑高效的 PFC 电源是一个复杂的开发挑战。随着第三代半导体器件氮化镓和碳化硅的大范围应用,图腾柱无桥 PFC(TPPFC)应用获得极大的拓展…

Kubernetes(K8s)_15_CNI

Kubernetes(K8s)_15_CNI CNI网络模型UnderlayMAC VLANIP VLANDirect Route OverlayVXLAN CNI插件FlannelCalico CNI配置内置实现 CNI CNI(Container Network Interface): 实现容器网络连接的规范 Kubernetes将网络通信可分为: Pod内容器、Pod、Pod与Se…

SOT23-3封装的设计与应用:220V转5V芯片电路

SOT23-3封装的设计与应用:220V转5V电路 AH8100介绍了一种基于SOT23-3封装的220V转5V电路l32*4761*OOO1设计方案,该方案具有简单、高效、稳定的特点,适用于各种电子设备。 一、引言 随着科技的发展,电子设备越来越多地应用于我们…

滴滴2023.11.27P0级故障技术复盘回顾(k8s的的错?)

本文从滴滴官方恢复及技术公众号带大家从技术角度复盘这次事故 目录 1. 背景 2. 滴滴官方消息 3. 问题分析及定位 4.网传的k8s及解析 5.k8s引发的思考:举一反三,怎么避免再次出现 6.近段时间其他平台崩溃回顾 1. 背景 11 月 27 晚约 10 点&#xf…

TCP解帧解码、并发送有效数据到FPGA

TCP解帧解码、并发送有效数据到FPGA 工程的功能:使用TCP协议接收到网络调试助手发来的指令,将指令进行解帧,提取出帧头、有限数据、帧尾;再将有效数据发送到FPGA端的BRAM上,实现信息传递。 参考:正点原子启…

Apache Hive3.1.3 遇到DATE_FORMAT转换2021年12月格式的问题

比如:需要将时间2021-12-28 00:00:00转换成2021-12的格式,用date_format会将2021-12转换成2022-12的问题。 解决方法: 方式一:大写的‘Y’换成‘y’ 方式二:字符串截取,substr 本博主推荐方式一&#xf…

Linux地址空间随机化

ASLR(Address Space Layout Randomization)在2005年被引入到Linux的内核 kernel 2.6.12 中,早在2004年就以补丁的形式引入。内存地址的随机化,意味着同一应用多次执行所使用内存空间完全不同,也意味着简单的缓冲区溢出攻击无法达到目的。 1.…

Oracle(2-8)Configuring the Database Archiving Mode

文章目录 一、基础知识1、Redo Log History2、NOARCHIVELOG Mode 非归档模式3、ARCHIVELOG Mode 归档模式4、Changing the Archiving Mode 更改归档模式![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d6a09f9a6de24de7bbcdad90b8d6b9ca.png)5、Auto and Manual Ar…