DQN算法流程及原理

article/2025/3/3 4:47:49

相关名词解释:


Agent:智能体;
s—state:状态(放在格子游戏中,就是智能体的位置坐标(x,y))
a—action:智能体采取的动作(例如上下左右)
r—reward:奖励(格子世界中智能体每走一步离目的地的远近程度,离目的地近了,说明动作很好,奖励很好)
s_—state_:下一状态,由智能体把动作输入到环境中后,环境所给出的(就是执行动作后,下一个位置)
Environment:试验环境
transition:就是一个类,类中有四个属性s,a,r,s_,经验回放池就是一个transition对象队列,先进先出
经验回放池Replay Buffer/Experience Replay:因为智能体在探索环境时,采集到的样本是个时间序列,样本之间具有很强的连续性和相关性(例如:一个人物一段视频中的前后两帧,其面部表情几乎是没有什么变化的,而且前后两帧还具有很强的因果关系,比如你要想笑,面部肌肉或者就要先变化),但实际上,我们在训练过程中,每条数据之间都要是“独立同分布”的,而经验回放池的目的就是将每一条transition放入其中,并从里边随机取出一定的batchsize,这样就能实现数据的“独立同分布”
经验回访池容量:经验回放池中最多放多少条数据,满了就“先进先出”
经验回访池当前容量:当前池子中有多少条数据
batch_size:每次从池子中随机抽取数据的数量
贪婪策略ε:不考虑全局最优解,只是选择某个阶段的最优解,虽然贪婪策略不一定能找到全局最优解,但胜在简单
动作空间:智能体每一步所有可能运动的方向,例如A=[上,下,左,右]
Q值和Target Q值:完整性态是Q(s,a;w)——状态动作价值函数,即只要给智能体一个状态和相应的动作,就有这么一个Q值
超参数:强化学习中,有些参数并不能推导,是需要提前设定的,这些参数在实际应用中能够解决相关问题
              1>折扣率γ:对奖励进行打折的比率,举例来说:在一个格子世界中,有猫(终止状态)、奶酪(奖励)和老鼠(Agent),老鼠周围有小块奶酪,猫周围有大量奶酪,也就是说越靠近猫能吃到的奶酪越多,但同时危险也越大,相比风险而言,奖励也就不重要了,这也就是时间步越长,奖励越低(人家跑马拉松几个小时,你跑马拉松跑一年,哪还有奖励了),所以时间步越少,奖励越大(γ的方次越小);反之,奖励越小

# greedy policy
if np.random.randn() <= EPISILO: # 如果随机值<=ε值,则选择最大Q值对应的动作action_value = self.eval_net.forward(state) action = torch.max(action_value, 1)[1].data.numpy()action = action[0] if ENV_A_SHAPE == 0 else action.reshape(ENV_A_SHAPE)
else: # 如果随机值>ε值,则在动作空间中随机选择一个动作action = np.random.randint(0,NUM_ACTIONS)action = action if ENV_A_SHAPE ==0 else action.reshape(ENV_A_SHAPE)
return action

DQN流程
1. 循环迭代400~1000轮,定义奖励数组reward_list,损失数组loss_list,将每一个episode的奖励之和以及损失存入响应数组中,每一个episode执行2、3、4步操作
2. Agent先随机选择一个初始状态s0,并使用贪婪策略选择动作a,将s0、a输入到环境中执行,环境会反馈出奖励r以及下一状态s_,并将这四个元素组成一个资源组transition:(s0,a,r,s_),存入到经验回放池中,并将奖励累加
3. 判断经验回放池中数据满没满(有的算法是判断是否到达最低数据限度),没满就继续执行第1步;满了就执行第3步
4. 池子如果满了(或达到最低数据限度),就从中随机抽取batch_size条数据,具体操作如下
       1>将随机抽取数据中的状态s组成一个数据,分别输入到Q网络和Target Q网络中,计算Q值和Target Q值(算出的值都是一个数组)
       2>使用均方误差,对Q值和Target Q值计算损失函数{\color{Blue} ^{Loss=(Q - \gamma TargetQ)^2}}


http://chatgpt.dhexx.cn/article/7PcX1vh5.shtml

相关文章

D*算法原理与程序详解(Python)

提示&#xff1a;前文写了D搜索算法&#xff0c;是一种贪心算法。 文章目录 一、D*算法是什么&#xff1f;二、原理以及代码步骤1.原理分析2.代码解释 总结 一、D*算法是什么&#xff1f; D*算法也是用于机器人路径规划问题的启发式方法&#xff0c;它是一种局部规划方法&…

unityA星寻路算法基础原理

作者&#xff1a; 风不停息丶 文章目录 &#x1f9d1;‍&#x1f4bb;A星寻路简介&#x1f449;代码基础架构&#x1f44d;代码实现格子类寻路管理类效果 结尾总结 &#x1f9d1;‍&#x1f4bb;A星寻路简介 A*寻路就是用来计算玩家行进路径的&#xff0c;通过它可以计算出避开…

【YOLO系列】YOLO.v1算法原理详解

YOLO(You Only Look Once)系列算法原理 前言 &#xff1a;详细介绍了yolo系列目标检测算法的原理和发展过程。 系列&#xff1a; 【YOLO系列】YOLO.v1算法原理详解 【YOLO系列】YOLO.v2算法原理详解 【YOLO系列】YOLO.v3算法原理详解 【YOLO系列】YOLO.v4 & YOLO.v5算法原…

A*算法原理与实现

前言 A*算法最初发表于1968年&#xff0c;由Stanford研究院的Peter Hart, Nils Nilsson以及Bertram Raphael发表。它可以被认为是Dijkstra算法的扩展。 由于借助启发函数的引导&#xff0c;A*算法通常拥有更好的性能。 一、 A*吸取了Dijkstra 算法中的cost_so_far&#xff0c;为…

激光SLAM之NDT算法(1)算法原理

/在激光SLAM之NDT算法&#xff08;2&#xff09;-建图中我会给出实测可用的建图代码,并予以解释代码结构,这里就先讲讲原理吧!!!/ 无人车激光SLAM系统简单可以分为建图和定位两部分&#xff0c;无人车的定位问题&#xff0c;实际上就是要找出无人车当前在地图的那个位置&#x…

A*算法的原理及应用

A*算法的原理 A* 算法是一种高效的启发式搜索算法&#xff0c;在二维的栅格地图上寻路效果好&#xff0c;它通过估算节点的代价评估函数值并作为节点的综合优先级&#xff0c;当选择下一个需要遍历的节点时&#xff0c;再选取综合优先级最高的节点&#xff0c;逐步地找到最优路…

Bresenham 画圆算法原理

文章目录 前言Bresenham 画圆算法原理两个近似构造判别式圆与网格点的关系关系由来关系含义p i p_i pi​ 递推画圆程序伪码圆与网格点的关系图示前言 首先简要介绍一下生成圆的方法: 直接利用圆的方程生成圆利用圆的对称性生成圆方法一由于会涉及到浮点运算等因素,不采取该方…

Js中读取、移除属性及隐藏组件方法研究

添加、移除组件属性方法: $(".class名").attr("属性名","属性值");//设置指定属性 $(".class名").attr("属性名");//读取指定属性值 or document.getElementById("id值").getAttribute("属性名…

js获取属性值,自定义属性,修改移除属性值

补充&#xff1a;由于不清楚一些属性是内置属性还是自定义属性 所以h5规定 自定义属性使用date-开头作为属性并赋值 案例1: <body><div date-index"1"></div> </body> <script>var div document.querySelector(div);console.log(div…

获取/移除属性值

1.获取属性值&#xff1a; element.属性 获取属性值 element.getAttribute&#xff08;‘属性’&#xff09;&#xff1b; 2.区别&#xff1a; element.属性 获取内置属性值&#xff08;元素本身自带的属性&#xff09; element.getAttribute&#xff08;‘属性’&#xff09;&…

JavaScript移除对象中不必要的属性

Thinking系列&#xff0c;旨在利用10分钟的时间传达一种可落地的编程思想。 业务开发中&#xff0c;我们经常会遇到&#xff1a;基于后端返回接口数据&#xff0c;前端保存到对象 Object 中&#xff0c;前端开发过程中为了一些场景的便利性&#xff0c;需要在该对象中增加相应的…

js移除属性

一、效果 代码 <style>div{width:100px;height: 100px;background-color: red;}.clsP{background-color: #00FF00;}</style><body><input type"button" value"移除属性" id"btn" /><div id"dv" score&q…

合天网安实验室CTF-解密100-Funny Crypto

合天网安实验室CTF-解密100-Funny Crypto 题目描述 tgbnjuy 8ujko9 5rfgy6 相关附件 题目链接 参考解题步骤 字母被围起来的字母图示颜色tgbnjuyh红8ujko9i绿5rfgy6t蓝 提交flag&#xff1a;hit

数字取证之Autopsy ——合天网安实验室学习笔记

实验链接 Autopsy Forensic Browser 是数字取证工具-The Sleuth Kit&#xff08;TSK&#xff09;的图形界面&#xff0c;用于对文件系统和卷进行取证。通过本实验学习文件系统取证的思想与方法&#xff0c;掌握Autopsy的使用。 链接&#xff1a;http://www.hetianlab.com/exp…

【合天网安】CONN.ASP暴库漏洞实验

0x01预备知识 1、概念&#xff1a; 相对路径和绝对路径 绝对路径&#xff1a;例如D&#xff1a;/test/test.mdb 相对路径&#xff1a;例如/test/test.mdb 2、%5C暴库 简单点说&#xff0c;就是在打开页面的时候把网页中的/换成%5C&#xff0c;然后提交就可以得到数据库地址…

【合天网安】FCKeditor 2.4.3文件上传漏洞

【合天网安实验室】FCKeditor 2.4.3文件上传漏洞 编辑器漏洞 常见的文本编辑器有FCKeditor、Ewebeditor、UEditor、KindEditor、XHeditor等&#xff0c;它们包含的功能类似&#xff0c;如图片上传、视频上传、远程下载等。使用这类编辑器减少了程序开发的时间&#xff0c;但也…

摩尔斯电码和栅栏密码 ——合天网安实验室学习笔记

实验链接 通过学习本实验理解摩尔斯电码和栅栏密码的编码解码过程&#xff1b;掌握编写摩尔斯电码的编码解码程序和编写多功能栅栏密码的编码解码程序。 链接&#xff1a;http://www.hetianlab.com/expc.do?ce64d3e661-ebbb-41fd-a220-a17d608f994e 实验简介 实验所属系列…

【合天网安】DoraBox之文件包含及任意文件读取漏洞

【合天网安实验室】DoraBox之文件包含及任意文件读取漏洞 目的&#xff1a; 过DoraBox靶场系列练习&#xff0c;学习任意文件包含、目录限制文件包含及任意文件读取漏洞的利用过程。 实验过程&#xff1a; 1.确保Apache、MySQL服务正常开启 2、查看.txt文本内容 3.使用includ…

合天网安实验室-sql注入实验一

根据指导书我们要先在实验机进入这个网址http://10.1.1.11:81 进入之后会看到三个实例。 实例一 根据指导书的提示来做这一题。后面两个实例也要看这个指导书。 先判断是否存在注入 方法一 在参数后面加上单引号,比如: http://xxx/abc.php?id1’ 如果页面返回错误&#xff…

合天网安《Weekly CTF》第四周

Check your source code 题目介绍 打开靶机&#xff0c;进步网站&#xff0c;是一个登陆框 首先&#xff0c;根据题名的提示&#xff0c;f12&#xff0c;发现存在source.txt 打开source.txt&#xff0c;出现源码 对源码进行分析 <?php $flag "XXXXXXXXXXXX"…