强化学习14——DDPG算法

在线策略算法的样本效率比较低,而在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.mzph.cn/news/648461.shtml

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

相关文章

网站SSL证书怎么获取?

获取SSL证书的途径通常包括以下几种&#xff1a; 1. 通过受信任的证书颁发机构&#xff08;CA&#xff09;购买&#xff1a; - 你可以直接从知名的证书颁发机构如JoySSL、GeoTrust、DigiCert等处购买。 - 这些机构提供不同类型的SSL证书&#xff0c;包括域名验证(DV)、组…

「JavaSE」抽象类接口3

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;快来卷Java啦 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 抽象类&接口3 &#x1f349;Clonable 接口和深拷贝&#x1f34c;浅拷贝和深拷贝 &#x1f349;Object类&#x1f349;抽象类…

HCIP-BGP实验

实验拓扑 实验需求 1.r1上有两个换汇分别为192.168.1.0/24和192.168.2.0/24只允许学到汇总和1.0 2.r7上有两个还回172.16.1.0/24和172.16.2.0/24要求全部宣告&#xff0c;但是只有2.0可以通过 3.全网可达 实验思路 配置IP地址 BGP配置 实验步骤 配置IP地址 BGP配置 在…

RabbitMQ死信交换机

目录 1.死信交换机介绍 2.TTL 3.延迟队列 4.消息堆积问题 5.惰性队列 6.代码实战 1.死信交换机介绍 当一个队列中信息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dead letter&#xff09; &#xff08;1&#xff09;消费者使用basic.reject&#xff08;Reject…

【mongoDB】集合的创建和删除

目录 1.集合的创建 2. 查看所有集合 3.删除集合 1.集合的创建 格式&#xff1a; db.createCollection ( name ) 例如创建一个名为 bbb 的集合 还可以通过传递一个选项对象来指定集合的属性&#xff0c;例如最大文档的大小&#xff0c;索引选项等 例如 这样创建了一个名为 cc…

如何在IntelliJ IDEA数据库控制台操作Redis

如何在IntelliJ IDEA数据库控制台操作Redis TIPS 本文理论支持IntelliJ IDEA家族所有IDE&#xff08;例如Data Grip等&#xff09;、所有版本理论支持所有基于JDBC的各种GUI工具&#xff01; 最近工作中&#xff0c;经常要操作到Redis&#xff0c;尽管市面上的Redis客户端GUI非…

算法基础之树状数组

文章目录 树状数组 树状数组 树状数组能解决的最关键的问题就是能够 O ( log ⁡ n ) O(\log n) O(logn)内&#xff0c;给某个位置上的数&#xff0c;加上一个数&#xff0c;或者求前缀和 他和前缀和数组的区别就是&#xff0c;树状数组支持修改原数组的内容&#xff0c;而前缀…

C语言第九弹---二维数组

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 二维数组 1、二维数组的创建 1.1、二维数组的概念 ​1.2、⼆维数组的创建 2、二维数组的初始化 2.1、不完全初始化 ​2.2、完全初始化 ​2.3、按照行初始化 ​2.4、…

如何使用Docker安装Spug并实现远程访问本地运维管理界面

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…

Vue开发之proxy代理的配置(附带uniapp代理配置)

vue 1.在vue.config.js中添加 devServer 属性中配置 proxy 属性 module.exports {productionSourceMap: false,publicPath: /,devServer: {port: 8085,proxy: {/api/admin: {target: http://10.58.104.70:6111,changeOrigin: true,pathRewrite: {/api/: /}},/api: {target: …

UE创建数据表格

创建一个数据表格需要行结构 继承自FTableRowBase的一个子类 效果 如何使用它 在蓝图中给C该类型的指针变量选用 UDataTable类型的 FindRow()函数可查询并返回对应行的行结构 FTableRowBase GetAllRows()函数可以获得该数据表的所有行、

centos 安装mysql5.7教程

一&#xff0c;配置yum mysql5.7安装源 配置yum mysql5.7安装源 yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 配置mysql5.7安装源成功 查看配置成功的安装源 yum repolist enabled | grep "mysql*" 执行后看到已配…

环境监测与预报:探索天气预报查询API在生态保护中的作用

摘要 随着全球气候变化的加剧&#xff0c;生态保护已成为全球关注的焦点。天气预报API作为一种强大的工具&#xff0c;不仅能够提供实时的气象数据&#xff0c;还能在生态保护领域发挥重要作用。本文将探讨天气预报API如何帮助科学家、环保组织和政策制定者更好地理解和预测环…

什么是 Docker

1.什么是 Docker 1.1 官方定义 最新官网首页 # 1.官方介绍 - We have a complete container solution for you - no matter who you are and where you are on your containerization journey. - 翻译: 我们为你提供了一个完整的容器解决方案,不管你是谁,不管你在哪,你都可以…

conda-建立多个python环境

1. 安装 下载地址&#xff1a;Miniconda — miniconda documentation 2. 安装好了会自动配置环境变量&#xff0c;如果没有配置手动配置 3. 检查conda环境 4. 设置conda配置文件 在‪C:\Users\Administrator下新建文件【.condarc】 channels: //镜像地址- https://mirrors.…

girhub添加 SSH 密钥

1 打开终端 输入 ssh-keygen -t rsa -b 4096 -C "github邮箱地址"如果不需要密码可以一路回车 出现这个页面就是生存成功了 open ~/.ssh // 打开.ssh 找到id_rsa.pub复制出内容新建ssh密钥输入内容,保存即可

MacOS平台翻译OCR软件,双管齐下,还可自定义插件,为其添砖加瓦!

小编昨天为大家分享了Windows系统下的一款功能强大且免费的 OCR 开源工具 Umi-OCR。 今天则为大家推荐一款 MacOS系统下的一款 翻译 OCR 多功能双管齐下的桌面应用软件 Bob。这款软件虽然也上线了GitHub&#xff0c;但它不是一款开源软件&#xff0c;仓库只是作者为了用户反馈…

Mac M1 Parallels CentOS7.9 Deploy 禅道

禅道官网下载地址: https://www.zentao.net/download/max4.10-83276.html 一、官网下载 二、解压安装 将下载好的包传至CentOS7.9虚拟机 zhinian192 ~ % scp Downloads/ZenTaoPMS-max4.10-zbox_arm64.tar.gz root10.211.55.36:~ ZenTaoPMS-max4.10-zbox_arm64.tar.gz …

idea 打包跳过测试

IDEA操作 点击蓝色的小球 手动命令 mvn clean package -Dmaven.test.skiptrue# 下载源码![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ff15aad1c9a546b6ab0556b5b135f409.png)

Linux命令拓展

一、tr - 字符转换 效果展示&#xff1a; 将小写转换成大写 字符压缩 通式&#xff1a;tr -s 字符删除 通式&#xff1a;tr -d 补集 通式&#xff1a;tr -c 用法&#xff1a;随机密码 二、cut - 提取 通式&#xff1a;cut [选项] 文件 选项&#xff1a; -d&#xff1a;分隔符…