经典策略梯度算法

news2024/9/23 17:11:51

经典策略梯度算法

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.coloradmin.cn/o/1272584.html

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

相关文章

【MATLAB】EWT分解+FFT+HHT组合算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 EWTFFTHHT组合算法是一种广泛应用于信号处理领域的算法,它结合了经验小波变换(Empirical Wavelet Transform,EWT)、快速傅里叶变换&#x…

EUREKA: HUMAN-LEVEL REWARD DESIGN VIACODING LARGE LANGUAGE MODELS

目录 一、论文速读 1.1 摘要 1.2 论文概要总结 相关工作 主要贡献 论文主要方法 实验数据 未来研究方向 二、论文精度 2.1 论文试图解决什么问题? 2.2 论文中提到的解决方案之关键是什么? 2.3 用于定量评估的数据集是什么?代码有…

【Openstack Train安装】七、glance安装

Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。Glance提供Restful API可以查询虚拟机镜像的me…

多路转接<select>和<poll>使用手册

select int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout); 参数说明 返回值 返回值>0 表示成功返回可访问的文件描述符个数&#xff0c;返回值0 表示标识等待时间到期返回值<0 表示出现错误…

lv11 嵌入式开发 轮询与中断13

1 CPU与硬件的交互方式 轮询 CPU执行程序时不断地询问硬件是否需要其服务&#xff0c;若需要则给予其服务&#xff0c;若不需要一段时间后再次询问&#xff0c;周而复始 中断 CPU执行程序时若硬件需要其服务&#xff0c;对应的硬件给CPU发送中断信号&#xff0c;CPU接收到中…

简历上的工作经历怎么写

通过了简历筛选&#xff0c;后续的面试官会仔细阅读你的简历内容。他们在找什么呢&#xff1f;他们希望搞清楚你在某一段经历中具体干了什么&#xff0c;并且判断你的能力具体达到了什么水平。 简历在线制作下载&#xff1a;百度幻主简历 面试官喜欢具体的经历 越具体&#x…

Springboot-注册注解【springboot常用注解】

1.组件注册 1.1 使用的注解 Configuration:普通配置类,替代以前的配置文件,配置类本身也是容器的组件|SpringBootConfiguration:Springboot配置类,与Configuration功能一样|Bean:替代以前的Bean标签,如果没有在Bean标签内定义名字,则默认组件的名字为方法名,可以直接修改注解…

简单好用!日常写给 ChatGPT 的几个提示词技巧

ChatGPT 很强&#xff0c;但是有时候又显得很蠢&#xff0c;下面是使用 GPT4 的一个实例&#xff1a; 技巧一&#xff1a;三重冒号 """ 引用内容使用三重冒号 """&#xff0c;让 ChatGPT 清晰引用的内容&#xff1a; 技巧二&#xff1a;角色设定…

数据收集与处理(爬虫技术)

文章目录 1 前言2 网络爬虫2.1 构造自己的Scrapy爬虫2.1.1 items.py2.1.2 spiders子目录2.1.3 pipelines.py 2.2 构造可接受参数的Scrapy爬虫2.3 运行Scrapy爬虫2.3.1 在命令行运行2.3.2 在程序中调用 2.4 运行Scrapy的一些要点 3 大规模非结构化数据的存储与分析4 全部代码 1 …

时间序列预测实战(二十一)PyTorch实现TCN卷积进行时间序列预测(专为新手编写的自研架构)

一、本文介绍 本篇文章给大家带来的是利用我个人编写的架构进行TCN时间序列卷积进行时间序列建模&#xff08;专门为了时间序列领域新人编写的架构&#xff0c;简单不同于市面上大家用GPT写的代码&#xff09;&#xff0c;包括结果可视化、支持单元预测、多元预测、模型拟合效…

homeassistant 随笔

1.使用mushroom-strategy自动生成ui&#xff0c;隐藏中文ares&#xff0c;名字为区域的拼音&#xff0c;例如显示厨房则真实名字为chu_fang 隐藏图片中的工作室 代码为&#xff1a;

【C++】string模拟

string讲解&#xff1a;【C】String类-CSDN博客 基本框架 #pragma once #include <iostream> using namespace std; ​ namespace wzf {class string{public:// 默认构造函数string(): _str(new char[1]), _size(0), _capacity(0){_str[0] \0; // 在没有内容时仍要有终…

Windows + docker + python + vscode : 使用容器docker搭建python开发环境,无需本地安装python开发组件

下载docker for Windows docker window下载 如果没有翻墙工具&#xff0c;可以该网盘中的docker 链接&#xff1a;https://pan.baidu.com/s/11zLy3e5kusZR-4m_Fq_cqg?pwdesmv 提取码&#xff1a;esmv 安装docker docker的安装会重启电脑&#xff0c;不要惊讶&#xff0c;且…

RTDETR阅读笔记

RTDETR阅读笔记 摘要 DETR的高计算成本限制了它们的实际应用&#xff0c;并阻碍了它们充分利用无需后处理&#xff08;例如非最大抑制NMS&#xff09;的优势。文中首先分析了NMS对实施目标检测的精度和速度的负面影响。&#xff08;RTDETR是第一个实时端到端的目标检测器。具…

计算机组成原理期中题库

计算机组成原理题目集 2.1 下面是关于计算机中存储器容量单位的叙述&#xff0c;其中错误的是 A. 最基本的计量单位是字节&#xff08;Byte&#xff09;&#xff0c;一个字节等于8bit B. 一台计算机的编址单位、指令字长和数据字长都一样&#xff0c;且是字节的整数倍 C. 最小…

在gazebo里搭建一个livox mid360 + 惯导仿真平台测试 FAST-LIO2

在gazebo里搭建一个livox mid360 惯导仿真平台测试 FAST-LIO2 前言立方体平台加入 livox mid360 激光雷达加入IMU模块调整底盘大小 并设计调用接口测试 Fast-Lio2 前言 livox mid360 在官网一直没有货&#xff0c;在gazebo里可以仿真该雷达形式的点云。 但是其只发布雷达的数…

mysql中删除数据后,新增数据时id会跳跃,主键自增id不连续

引言&#xff1a; 在使用MySQL数据库时&#xff0c;有时候我们需要删除某些记录&#xff0c;但是删除记录后可能会导致表中的id不再连续排序。 如何实现删除记录后让id重新排序的功能。 如图&#xff1a; 删除数据后&#xff0c;中间的id不会自动连续。 下面有两种方法进行重…

基于SpringBoot房产销售系统

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于房产销售系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了房产销售系统&#xff0c;它彻底改变了过去传统的…

3dsMax插件Datasmith Exporter安装使用方法

3dsMax插件Datasmith Exporter安装使用方法 某些文件格式无法用Datasmith直接导入虚幻引擎&#xff0c;这些数据必须先被转换为Datasmith能够识别的文件格式。Datasmith Exporter插件就可以帮助您的软件导出可以被Datasmith导入虚幻引擎的.udatasmith格式文件。 在开始使用虚幻…

Openai通用特定领域的智能语音小助手

无穷尽的Q&A 钉钉...钉钉... 双双同学刚到工位,报销答疑群的消息就万马纷沓而来。她只能咧嘴无奈的摇摇头。水都还没有喝一口就开始“人工智能”的去回复。原本很阳光心情开始蒙上一层薄薄阴影。在这无休无止的Q&A中&#xff0c;就算你对工作有磐石一般强硬&#xff0…