深度强化学习-DQN算法

news/2024/5/19 11:25:30/文章来源:https://blog.csdn.net/athrunsunny/article/details/126976433

论文地址:https://arxiv.org/abs/1312.5602

        先讲下在线,离线,同策略和异策略

        同策略(on-policy)和异策略(off-policy)的根本区别在于生成样本的策略和参数更新时的策略是否相同。

        对于同策略,行为策略和要优化的策略是同一策略,更新了策略后,就用该策略的最新版本对数据进行采样;对于异策略,其使用任意行为策略来对数据进行采样,并利用其更新目标策略。例如, Q 学习在计算下一状态的预期奖励时使用了最大化操作,直接选择最优动作,而当前策略并不一定能选择到最优的动作,因此这里生成样本的策略和学习时的策略不同,所以 Q 学习算法是异策略算法;相对应的 Sarsa 算法则是基于当前的策略直接执行一次动作选择,然后用动作和对应的状态更新当前的策略,因此生成样本的策略和学习时的策略相同,所以 Sarsa 算法为同策略算法。

深度 Q 网络和 Q 学习异同点

        整体来说,两者的目标价值以及价值的更新方式基本相同。但有如下不同点:

1)深度 Q 网络将 Q 学习与深度学习结合,用深度网络来近似动作价值函数,而 Q 学习则是采用表格进行存储。

2)深度 Q 网络采用了经验回放的技巧,从历史数据中随机采样,而 Q 学习直接采用下一个状态的数据进行学习。

深度 Q 网络中的两个技巧——目标网络和经验回放

(1)在深度 Q 网络中某个动作价值函数的更新依赖于其他动作价值函数。如果我们一直更新价值网络的参数,会导致更新目标不断变化,也就是我们在追逐一个不断变化的目标,这样势必会不太稳定。为了解决基于时序差分的网络中,优化目标 Qπ (st, at) = rt + Qπ (st+1, π (st+1)) 左右两侧会同时变化使得训练过程不稳定,从而增大回归难度,目标网络选择将优化目标的右边即 rt + Qπ (st+1, π (st+1)) 固定,通过改变优化目标左边的网络参数进行回归。

(2)对于经验回放,其会构建一个回放缓冲区,用来保存数据,每一个数据的内容包括:状态 st、采取的动作 at、得到的奖励 rt、下一个状态 st+1。我们使用 π 与环境交互多次,把收集到的数据都放到回放缓冲区中。防止占用过多的内存,当回放缓冲区装满后,就会自动删去最早进入缓冲区的数据。在训练时,对于每一轮迭代都有相对应的批量(采样得到),然后用这个批量中的数据去更新 Q 函数。即 Q 函数在采样和训练的时候会用到过去的经验数据,也可以消除样本之间的相关性。

算法流程

        算法伪代码

代码实现

DQN

class CNNDQN(nn.Module):def __init__(self, input_shape, num_actions):super(CNNDQN, self).__init__()self._input_shape = input_shapeself._num_actions = num_actionsself.features = nn.Sequential(nn.Conv2d(input_shape[0], 32, kernel_size=8, stride=4),nn.ReLU(),nn.Conv2d(32, 64, kernel_size=4, stride=2),nn.ReLU(),nn.Conv2d(64, 64, kernel_size=3, stride=1),nn.ReLU())self.fc = nn.Sequential(nn.Linear(self.feature_size, 512),nn.ReLU(),nn.Linear(512, num_actions))def forward(self, x):x = self.features(x).view(x.size()[0], -1)return self.fc(x)@propertydef feature_size(self):x = self.features(torch.zeros(1, *self._input_shape))return x.view(1, -1).size(1)def act(self, state, epsilon, device):if random() > epsilon:state = torch.FloatTensor(np.float32(state)) \.unsqueeze(0).to(device)q_value = self.forward(state)action = q_value.max(1)[1].item()else:action = randrange(self._num_actions)return action

        其中输入的shape为(4,84,84)

算法图解

待更新

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

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

相关文章

产品性能测试入门秘籍

前言 在《一体化测试指标可视工程实践》中,我们分享了以趣链BaaS系统为例的测试实践路径,在后台收到读者们关于性能测试的留言。为此,本期将围绕如何进行产品性能测试这一话题,展开详细描述。 众所周知,一个优秀的系统…

Cobalt Strike(八)权限提升

1.BypassUAC UAC 是微软在 Windows Vista 以后版本引入的一种安全机制,通过 UAC,应用程序和任务可始终在非管理员帐户的安全上下文中运行,除非管理员特别授予管理员级别的系统访问权限。UAC 可以阻止未经授权的应用程序自动进行安装&#xf…

【最新计算机毕业设计】Java springboot大学生体质测评系统

基于SpringBoot的大学生体质测评系统 提供最新的计算机毕业设计源代码及帮助指导,公众号:一点毕设! 大学生体质测试管理系统提供给用户一个简单方便体质测试管理信息,通过留言区互动更方便。本系统采用了B/S体系的结构&#xff0…

吔队列了你——写点单调队列优化DP

5_Lei:有没有变态一点的图啊单调队列优化DP(补) 前言: DP显然是OI中的一个重要且高频的考点,然而友善的出题人大多不会只考一个推转移方程,往往需要结合一些优化。 单调队列: 看这个的应该都会,不写了,扔个板子上去。 P1886 滑动窗口 /【模板】单调队列 优化DP: 显然…

行业话题 | 天天坐地铁,你知道BIM在地铁中的应用吗

近年来,随着经济水平的不断提高和城市化进程的加快,我国地铁建设规模也在不断加大,而地铁车站是地铁施工的难点和控制性工程,具有施工空间狭小,技术复杂等特点。 由于施工现场布置制约因素多,二维施工现场平…

究竟都是谁在使用?OpenMLDB 落地案例大起底

本文整理自第四范式资深架构师、OpenMLDB PMC 卢冕在第四范式技术日「高效落地的AI开源生态」分论坛的主题分享——《开源机器学习数据库 OpenMLDB:提供线上线下一致的生产特征平台》。内容包括: 感恩 OpenMLDB 贡献者OpenMLDB 发展历程OpenMLDB 架构设…

WinForms时代结束,报表控件FastReport.NET开启FastReport.Core.Skia 时代!

要创建高质量的报告并将其正确导出为不同的格式(PDF、Word、Excel 等),必须使用图形引擎。从 .NET Framework 的最早版本开始,Microsoft 就将 GDI 及其包装器用作 System.Drawing 库的一部分。FastReport.NET长期以来一直使用相同…

第一篇文章 mybatis 综述

mybatis框架可以让程序员只需专注于写sql语句 框架就是半成品,将公共的部分固定下来,非公共的部分你自己开发就行 三层架构: 界面层Conttroller层:用来接收客户端的输入,调用业务逻辑层Service层,返回结果…

关于Facebook营销的十个常见问题,一次性讲清楚!

--- NO.1--- 为什么做Facebook营销? 作为全球最大的社交媒体,Facebook月活用户已达到了惊人的29亿,并且这个数据还在持续增长中,这意味着全球几乎一半人都会出现在Facebook上。很多企业对Facebook的关注点,也从是否做…

VMware Explore 大会发布重磅云上技术之外,VMware 有哪些前沿探索?

编辑 | 宋慧 出品 | CSDN 云计算 最近,VMware 举办了年度技术大会 VMware Explore,重磅发布了其在多云趋势下的多个技术产品组合,包含了云基础架构、云原生、网络与安全、远程混合办公等等。不过,在这些优势领域的产品之外&#…

系统架构与设计(1)- 权限系统的设计以及主流的五种权限模型

作者:码猿技术专栏来源:https://juejin.cn/post/7121977695197970463 ------------------------------------------------------------------- 这篇文章就来介绍一下权限系统的设计以及主流的五种权限模型。权限管控可以通俗的理解为权力限制,即不同的人由于拥有不同权力,他…

阿里云国际站代理商:FFmpeg 处理音视频文件的常用方法

阿里云代理商(聚搜云)专业服务于阿里云ECS服务器采购、阿里云Ddos采购、阿里云waf采购、对象存储OSS、阿里云企业邮箱采购、阿里云国际站代理商、阿里云国际站充值、云安全中心(态势感知)、阿里云高可用云数据库RDS、web应用云waf…

YOLO系列目标检测算法-Scaled-YOLOv4

YOLO系列目标检测算法目录 YOLO系列目标检测算法总结对比YOLOv1YOLOv2YOLOv3YOLOv4 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 本文总结: 提出一种网络缩放方法,使得基于CSP的YOLOv4可以上下伸缩,以适…

2019Linux系统教程189讲-08_基于LAMP架构部署商城系统

任务需求 1、任务具体要求 使用yum(dnf)工具一键部署LAMP环境 发布电商项目上线 ① 能够实现web界面注册会员账号 ② 能够实现web界面进行后台商品及会员的管理 2、项目选型 ㈠ PHPSHE商城系统概述 PHPSHE商城系统是将商品管理、品牌管理、规格管理、折扣管理、拼团管理、…

【Electron】常用小功能实现合集

一、前言 本篇主要介绍在electron项目开发过程中,一些实用小功能点的实现。比如设置开机自启动、只允许打开一个应用、设置electron项目基地为中文、获取当前的系统数据等等。 二、功能点 接下来咱们就逐一来说一说这些功能点是如何实现的。 1.设置应用开机自启…

MySQL索引结构B+树

数据结构图示例网站:Data Structure Visualization 索引数据结构: 二叉树 红黑树 Hash表 B-Tree B-Tree,特点:(每个节点都存储key和data,叶子节点指针为null) 1、叶节点具有相同的深度&#x…

y140.第八章 Servless和Knative从入门到精通 -- Serving及实践(四)

5.Serving及实践 5.1 Knative Serving工作模式 Serving的工作模式,上图从一个更大的全景图上了解Serving以及它与istio进行结合的时候它们的工作逻辑,Serving有4个关键组件,最关键的组件就是kservice,kservice本身会有两个非常重要的组件组成,一个叫做configuration也就是…

linux驱动_uart

linux uart驱动基础知识下面链接这篇文章写得很完备,我没必要再介绍了,就写目前项目的代码,方便以后重温。 Linux的tty架构及UART驱动详解 本项目驱动文件包括: /kernel/drivers/sstar/serial/ms_uart.c # 主要实现文件 /kerne…

HTML 头部

html 中 <head> 元素包含了所有的头部标签元素。在 <head> 元素中可以插入脚本(scripts)、样式文件(CSS)及各种 meta 信息。 一般来说&#xff0c;可以添加在头部区域的元素标签有&#xff1a;<title>、<style>、<meta>、<link>、<scri…

借助实例,轻松掌握 Makefile

实例1&#xff1a;hello world 编辑 Makefile all:echo "hello world"编译执行 $ make $ make all 结果输出 语法说明 echo 前面必须只有 TAB&#xff08;即你键盘上的 TAB键&#xff09;&#xff0c;且至少有一个 TAB&#xff0c;不能用空格代替。 实例2&#xff…