强化学习14——DDPG算法

news/2024/5/18 22:17:09 标签: 算法, 强化学习

在线策略算法的样本效率比较低,而在DNQ算法中,做到了离线策略学习,但是只能处理动作空间有限的环境。如果动作空间无限,可将动作空间离散化,但比较粗糙,无法惊喜控制。深度确定性策略梯度DDPG(deep deterministic policy gradient)可以用来处理动作空间无限离线策略算法

DPG

为了适配连续动作空间,我们选择动作的过程变成从状态映射到具体动作的函数 μ θ ( s ) \mu_{\theta}(s) μθ(s) θ \theta θ 是模型的参数 ,输出的结果是一个动作值,由于是输出一个值,可以成为确定性策略,而不是Actor-Critic算法输出的在输入状态s的情况下采取动作a的概率 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as) 。这就是Actor的任务。

image.png

由于 Q ( s , a ) Q(s,a) Q(s,a) 由两个变量组成,在 s t s_t st 状态下,对 Q ( s , a ) Q(s,a) Q(s,a) 平面进行切片,将曲线平面截断成一条曲线,并寻找最高点对应的横坐标,即最大Q值对应的动作。

∇ θ J ( θ ) ≈ E s t ∼ ρ β [ ∇ a Q ( s t , a ) ∣ a = μ θ ( s t ) ∇ θ μ θ ( s t ) ] \nabla_\theta J(\theta)\approx\mathbb{E}_{s_t\sim\rho^\beta}\left[\nabla_aQ\left.(s_t,a)\right|_{a=\mu_\theta(s_t)}\nabla_\theta\mu_\theta(s_t)\right] θJ(θ)Estρβ[aQ(st,a)a=μθ(st)θμθ(st)]
ρ β \rho^{\beta} ρβ 是策略的初始分布。

DDPG

强化学习发展的算法中,主要关注两个方面:如何提高对值函数的估计,以及如何提高探索-利用的问题。通过深度学习,如增加目标网络、经验回访、引入噪声等操作,提高策略的探索性。

引入噪声的目的是在不破坏系统的前提下,提高系统运行的抗干扰性,譬如人体接种疫苗,在接种疫苗后,面对真正的病毒就有了一定的抵御能力。在噪声中使用一种OU噪声,具有回归特性的随机过程,拥有稳定性可控性,同时更加平滑且可以控制噪声的幅度。较大的方差增加探索性、较小的方差增加利用性。

OU噪声有随即高斯噪声和回归项组成:
d x t = θ ( μ − x t ) d t + σ d W t dx_t=\theta\left(\mu-x_t\right)dt+\sigma dW_t dxt=θ(μxt)dt+σdWt
x t x_t xt是OU在时间t的值,也是强化学习中的时步。 μ \mu μ 是回归到的均值,表示噪声的平均值。 θ \theta θ 是OU过程中的回归速率,表示噪声向均值回归的速率。 σ \sigma σ 是OU过程的扰动项,表示随即高斯噪声的标准差。 d W t dW_t dWt 是随即向,可以称为维纳过程,表示随机高斯噪声的微小变化。实际过程中只需要调整 μ \mu μ σ \sigma σ

DDPG算法实战

伪代码如下图所示:

image.png

训练参数如下: ================================================================================ 参数名 参数值 参数类型 algo_name DDPG <class 'str'> env_name Pendulum-v1 <class 'str'> train_eps 300 <class 'int'> test_eps 20 <class 'int'> max_steps 10000 <class 'int'> gamma 0.99 <class 'float'> critic_lr 0.001 <class 'float'> actor_lr 0.0001 <class 'float'> memory_capacity 8000 <class 'int'> batch_size 128 <class 'int'> target_update 2 <class 'int'> tau 0.01 <class 'float'> critic_hidden_dim 256 <class 'int'> actor_hidden_dim 256 <class 'int'> device cuda <class 'str'> seed 1 <class 'int'> ================================================================================ 开始训练! 回合:10/300,奖励:-79102.93 回合:20/300,奖励:-52642.69 回合:30/300,奖励:-77790.13 回合:40/300,奖励:-46309.66

...

回合:18/20,奖励:-84630.12 回合:19/20,奖励:-44238.94 回合:20/20,奖励:-75457.45 完成测试!

可能由于参数的问题,得到的结果并不太好:

image.png


http://www.niftyadmin.cn/n/5351379.html

相关文章

ThinkPhp3.2(qidian)部署文档

宝塔环境部署 申请域名以及域名解析 具体配置&#xff0c;可百度之 在宝塔面板中创建网站 上传代码导入数据配置运行目录 注意&#xff1a;&#xff08;如果版本&#xff1a;thinkphp3.2 &#xff09;配置 运行目录要特别注意&#xff1a;运行目录要选择根目录“/”&#xff…

Jmeter 分布式测试

Jmeter单机进行压测&#xff0c;受到单台机器的性能影响&#xff0c;Jmeter支持分布式测试&#xff0c;用一个控制节点去控制多个工作节点去模拟更多的用户。 版本信息 内容版本号JDK1.8Jmeter5.6.2 分布式测试原理 jmeter 官网对分布式测试有说明&#xff0c;jmeter分布式…

进程通信与socket编程实践之猜数字小游戏

socket是实现进程通信的一种重要方式&#xff0c;本文将通过socket编程实现服务器进程与客户端进程之间的通信&#xff0c;并在通信之外实现猜数字的小游戏。 1. 设计思路 本文设计的C/S结构的猜数字游戏功能如下&#xff1a;服务器端自动生成一个1-100之间的随机数字&#x…

智能小程序配置

project.tuya.json 项目配置 可在项目根目录内使用 project.tuya.json 文件对项目进行配置。 字段名类型必填说明projectnamestring是项目名称。descriptionstring是项目描述信息。projectIdstring是项目 ID &#xff08;从 Tuya MiniApp 开发者平台获取&#xff09;。compil…

论文精读--BERT

不像视觉领域&#xff0c;在Bert出现之前的nlp领域还没有一个深的网络&#xff0c;使得能在大数据集上训练一个深的神经网络&#xff0c;并应用到很多nlp的任务上 Abstract We introduce a new language representation model called BERT, which stands for Bidirectional En…

计算机网络——IP协议

前言 网络层的主要负责地址分配和路由选择,ip负责在网络中进行数据包的路由和传输。 IPv4报文组成&#xff08;了解&#xff09; IPv4首部&#xff1a;IPv4首部包含了用于路由和传输数据的控制信息&#xff0c;其长度为20个字节&#xff08;固定长度&#xff09;。 版本&#…

Chrome for Developer 第二章(Chrome 开发者工具中的 DOM 查询)

DOM&#xff08;文档对象模型&#xff09;是一个页面的结构化表示&#xff0c;它让我们可以通过脚本语言&#xff08;如JavaScript&#xff09;来动态访问和更新页面的内容、结构和样式。Chrome 开发者工具 中的 元素 面板展示了当前网页的 DOM 树状结构&#xff0c;并允许我们…

51单片机-4G模块

51单片机-4G模块 4G控制LED #include "reg52.h" #include "intrins.h" #include <string.h>#define SIZE 12 sfr AUXR 0x8E; sbit D5 P3^7; char cmd[SIZE];void UartInit(void) //9600bps11.0592MHz {AUXR 0x01;SCON 0x50; //配置串口工作方…