DQN算法

DQN算法

教程链接

DataWhale强化学习课程JoyRL

https://johnjim0816.com/joyrl-book/#/ch7/main

DQN算法

DQN(Deep Q-Network) 主要创新点在于将Q-learning算法中的Q表记录动作价值函数转为引入深度神经网络来近似动作价值函数 Q ( s , a ) Q(s,a) Q(s,a),从而能够处理连续状态情况,即较高维度的状态空间。

因此,在Q表中我们描述状态空间的时候一般用的是状态个数,而在神经网络中我们用的是状态维度

当然,神经网络也存在缺点,即虽然它的输入可以是连续的,但是输出只能是离散的,即只能适用于离散的动作空间。如果要处理连续的动作空间,需要考虑策略梯度方法。

本质上来说强化学习和深度学习解决的问题是完全不同的,前者用于解决序列决策问题,后者用于解决静态问题例如回归、分类、识别等等。

  • 经验回放

状态转移元组 ( s t , a t , s t + 1 , r t + 1 ) (s_t, a_t, s_{t+1}, r_{t + 1}) (st,at,st+1,rt+1)强化学习是与环境实时交互得到样本然后进行训练的,这个样本一般包括当前的状态 s t s_t st、当前动作 a t a_t at、下一时刻的状态 s t + 1 s_{t+1} st+1 、奖励 r t + 1 r_{t+1} rt+1 以及终止状态的标志 d o n e done done.

这样做存在的问题?

  1. 在 Q-learning 算法中,每次交互得到一个样本之后,就立马拿去更新模型了。首先每次用单个样本去迭代网络参数很容易导致训练的不稳定,从而影响模型的收敛。
  2. 每次迭代的样本都是从环境中实时交互得到的,这样的样本是有关联的,而梯度下降法是基于一个假设的,即训练集中的样本是独立同分布的。
  3. 直接将 Q-learning 算法训练的方式来更新 DQN 的模型相当于是最原始的梯度下降方式,距离目前最成熟的小批量梯度下降方式还有一定的差距。

因此DQN的训练过程中,会把每次通过环境交互的样本存储在一个经验回放中,然后每次从经验吃中随机抽取一批样本来训练网络。

首先每次迭代的样本都是从经验池中随机抽取的,因此每次迭代的样本都是独立同分布的,这样就满足了梯度下降法的假设。其次,经验池中的样本是从环境中实时交互得到的,因此每次迭代的样本都是相互关联的,这样的方式相当于是把每次迭代的样本都进行了一个打乱的操作,这样也能够有效地避免训练的不稳定性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 目标网络

其次为了保障训练的稳定,避免Q值的估计发散。考虑使用一个每隔若干步才更新的目标网络。目标网络和当前网络结构都是相同的,都用于近似 Q值,在实践中每隔若干步才把每步更新的当前网络参数复制给目标网络。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习题

  1. 相比于 Q − l e a r n i n g Q-learning Qlearning算法, D Q N DQN DQN算法做了哪些改进?

DQN使用了深度神经网络来近似动作价值函数,解决了Q-learning使用表格存储Q值使得状态空间过大或者状态连续的问题。

  1. 为什么要在 D Q N DQN DQN算法中引入 ε − greedy \varepsilon-\text{greedy} εgreedy策略?

引入策略是为了平衡探索与利用的过程,如果智能体只进行利用,那么它可能会陷入局部最优,而忽略了更好的动作或状态;如果智能体只进行探索,那么它可能会浪费时间和资源,而无法收敛到最优的策略。因此,智能体需要在探索和利用之间进行权衡,以达到最佳的学习效果。

  1. D Q N DQN DQN算法为什么要多加一个目标网络?

目标网络的引入是为了增加DQN算法的稳定性和收敛性。DQN算法的核心是用深度神经网络来近似Q函数,即状态-动作值函数。如果我们只用一个神经网络来计算估计值和目标值,那么每次更新参数后,目标值也会随之改变,这样就会导致目标值不稳定,甚至发生震荡,从而影响神经网络的收敛。考虑使用一个每隔若干步才更新的目标网络。目标网络和当前网络结构都是相同的,都用于近似 Q值。

  1. 经验回放的作用?

深度神经网络训练要求数据符合独立同分布,经验回放的作用是消除智能体收集经验时相邻的两个四元组之间的相关性,使得每次从数组里面随机抽取的四元组都是独立的,从而提高DQN的训练效果。

DQN算法进阶

介绍一些基于DQN算法的进阶算法,例如 D o u b l e D Q N 、 D u e l i n g D Q N Double DQN、Dueling DQN DoubleDQNDuelingDQN这些从网络模型层面改进以及 P E R D Q N PER DQN PERDQN从经验回放的角度改进。

  • Double DQN算法。

主要贡献在于通过引入两个网络用于解决Q值过估计问题.

KaTeX parse error: \tag works only in display equations

其中 y t = r t + γ max ⁡ a Q θ ^ ( s t + 1 , a t + 1 ) y_t = r_t+\gamma\max _{a}Q_{\hat{\theta}}(s_{t+1},a_{t+1}) yt=rt+γamaxQθ^(st+1,at+1)是估计值,这个意思就是直接拿目标网络中各个动作对应的最大的 Q值来当作估计值,这样一来就会存在过估计的问题。

因此, D o u b l e D Q N Double DQN DoubleDQN的思路就是现在当前网络中找出最大Q值对应的动作,然后再将这个动作代入到目标网络中计算Q值。

KaTeX parse error: \tag works only in display equations

然后将这个找出来的动作代入到目标网络里面去计算目标的 Q 值,进而计算估计值,

KaTeX parse error: \tag works only in display equations

这样做相当于是把动作选择和动作评估这两个过程分离开来,从而减轻了过估计问题。即Double DQN 算法中大臣会根据自己的判断将自己认为最优的情报汇报给皇帝,做到了情报的精简与较高质量。

  • Dueling DQN算法

Dueling DQN算法是通过优化神经网络的结构来优化算法的。DQN算法使用的网络架构是一个全连接网络,包含一个输入层、隐藏层以及输出层。DuelingDQN则是在输出层之前分流出价值层(估计每个状态的价值)与优势层(用于估计每个动作带来的优势)。

[外链图片转存中…(img-COZ6YXfc-1700835492466)]

去掉这里的价值层即优势层就是普通的 Q 网络了,另外会对优势层做一个中心化处理,即减掉均值。

  • PER DQN算法

PER DQN算法进一步优化经验回放的设计从而提高模型的收敛能力与鲁棒性。会在采样过程中赋予经验回放中样本的优先级。优先级的依据来自于TD误差。广义的定义是值函数(包括状态价值函数和动作价值函数)的估计值与实际值之差,在 DQN 算法中就是目标网络计算的 Q值和策略网络(当前网络)计算的 Q值之差,也就是 DQN 网络中损失函数的主要构成部分。

TD误差越大,损失函数的值也越大,对于反向传播的作用也就越大。 这样一来如果 TD 误差较大的样本更容易被采到的话,那么算法也会更加容易收敛。

练习题

  1. DQN算法为什么会产生Q值的过估计问题?

DQN是直接拿目标网络中各个动作对应的最大的 Q值来当作估计值。但目标值仍然依赖于神经网络的输出,而神经网络的输出可能存在偏差和误差。特别是,当我们用**maxa′Q(s′,a′)**来选择下一个状态的最优动作时,我们可能会选择一个Q值被高估的动作,而不是真正的最优动作。这样,我们就会用一个高估的Q值来更新当前状态的Q值,从而导致Q值的过估计

  1. 同样是提高探索,Noisy DQN与 ε − greedy \varepsilon-\text{greedy} εgreedy策略有什么区别

Noisy DQN是在神经网络的权重上添加参数化的噪音,从而使Q函数的输出具有随机性,而ε-greedy策略是在选择动作时以一定的概率随机选择一个动作,而不是最优的动作。同时Noisy DQN的探索是基于权重的,可以影响所有的动作的选择,而ε-greedy策略的探索是基于动作的,只影响单个的动作的选择。因此,Noisy DQN的探索更具有全局性和多样性,而ε-greedy策略的探索更具有局部性和随机性。
sy DQN的探索是基于权重的,可以影响所有的动作的选择,而ε-greedy策略的探索是基于动作的,只影响单个的动作的选择。因此,Noisy DQN的探索更具有全局性和多样性,而ε-greedy策略的探索更具有局部性和随机性。

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

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

相关文章

智慧城市运营管理平台解决方案:PPT全文61页,附下载

关键词:智慧城市建设方案,智慧城市解决方案,智慧城市的发展前景和趋势,智慧城市建设内容,智慧城市运营管理平台 一、智慧城市运营平台建设背景 随着城市化进程的加速,城市面临着诸多挑战,如环…

Keil5MDK创建C51工程

Keil5MDK创建C51工程 1.概述 上篇文章介绍了安装Keil5MDK和C51工具,这篇文章介绍工具的使用,首先介绍如何创建一个51单片机工程,写一个demo程序通过编译,烧录到单片机。 第一篇安装工具文章地址:https://blog.csdn.ne…

智慧楼宇可视化视频综合管理系统,助力楼宇高效安全运行

随着互联网技术的进步和发展,智能化的楼宇建设也逐步成为人们选择办公场所是否方便的一个重要衡量因素。在智能化楼宇中,安全管理也是重要的一个模块。得益于互联网新兴技术的进步,安防视频监控技术也得到了快速发展并应用在楼宇的安全管理中…

区块链技术与应用 【全国职业院校技能大赛国赛题目解析】第四套区块链应用后端开发

第四套区块链应用后端开发 环境 : ubuntu20 fisco : 2.8.0 springboot 2.1.1 fisco-java-sdk: 2.7.2 maven 3.8.8 前言 这套后端样题,只涉及调用fisco的系统接口,不涉及此食品溯源项目的业务接口,所以我就直接生成一个springboot项目进行完成此题目。 请提前准备好一…

【经典小练习】简单的文件加密解密

文章目录 🌹什么是文件加密⭐应用场景 🛸案例🌺描述🌺代码 🌹什么是文件加密 Java文件加密是指使用Java编程语言和相关的加密算法对文件进行加密处理。通过这种方式,可以将文件内容转换为一种非常规的形式…

【免费使用】基于PaddleSeg开源项目开发的人像抠图Web API接口

基于PaddleSeg开源项目开发的人像抠图API接口,服务器不存储照片大家可放心使用。 1、请求接口 请求地址:http://apiseg.hysys.cn/predict_img 请求方式:POST 请求参数:{"image":"/9j/4AAQ..."} 参数是jso…

Python零基础入门之模块详解

文章目录 一、模块1、模块的四种形式2、为什么要用模块? 二、如何用模块1、import 模块名导入重命名:smt变量指向span模块的名称空间导入多个模块 2、from 模块名 import 具体的函数rom … import \* 语句:导入文件内所有的功能: …

2014年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2014 年考研管理类联考数学真题一、问题求解(本大题共 15 小题,每小题 3 分,共 45 分)下列每题给出 5 个选项中,只有一个是符合要求的,请在答题卡上将所选择的字母涂黑。真题(2014-01&…

“三个绝技“让项目经理轻松做好进度管理

大家好,我是老原。 我离开腾讯之后,曾经加入一家互联网创业公司。 要知道,当你在一个大公司的平台上做事做习惯之后,觉得一些流程都应该是严谨的、完备的、按计划进行的。 但是当时,经常出现一个致命问题——进度拖…

基于食肉植物算法优化概率神经网络PNN的分类预测 - 附代码

基于食肉植物算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于食肉植物算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于食肉植物优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

cineSync 3.3新功能: 深入iconik集成、激光工具、OTIOZ支持等

cineSync 3.3为大家带来了灵活性和精准度,使连接审阅会话与iconik中的媒体管理和存储更加容易,并且引入了颜色配置文件以快速测试颜色配置,还有通过激光指针等新工具带来新的可能性。 在ftrack,我们意识到当今的远程创意工作流比以…

【Java 进阶篇】Jedis:让Java与Redis轻松对话的利器

在现代软件开发中,缓存系统是提高系统性能的常见手段之一,而Redis作为一个高性能的缓存数据库,被广泛应用于各类系统。如果你是Java开发者,那么使用Jedis库可以让你轻松地与Redis进行交互。本文将带你深入了解Jedis的快速入门&…

智能优化算法 | Matlab实现金豺优化算法(GJO)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现金豺优化算法(GJO)(内含完整源码) 源码设计 %%clear clc close SearchAgents_no=30; % Number of search agents Max_iteration=1000

excel自己记录

1、清除换行符号 2、添加特殊符号&并清除换行符号 7日&15日&30日&60日 3、判断单元格最后一个字符是不是数字,不是就删掉 IF(ISNUMBER(--RIGHT(B2,1)),B2,SUBSTITUTE(B2,RIGHT(B2,1),"")) ISNUMBER(--RIGHT(B2,1))判断最右边的一个数是否…

git本地账户如何从一台电脑迁移到另外一台

为了表述方便,我们此处用旧电脑、新电脑指代。 在新电脑上安装git 例如,我旧电脑上安装的git版本是2.33.1版本,新电脑安装git的版本是2.43.0,这不妨碍迁移。 将git的全局配置文件从旧电脑拷贝到新电脑 Git的全局配置文件&…

NeurIPS 2023|AI Agents先行者CAMEL:第一个基于大模型的多智能体框架

AI Agents是当下大模型领域备受关注的话题,用户可以引入多个扮演不同角色的LLM Agents参与到实际的任务中,Agents之间会进行竞争和协作等多种形式的动态交互,进而产生惊人的群体智能效果。本文介绍了来自KAUST研究团队的大模型心智交互CAMEL框…

C#,《小白学程序》第七课:列表(List)其一,编制《高铁车次信息表》

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary>…

新手如何买卖可转债,可转债投资基础入门

一、教程描述 什么是可转债&#xff1f;可转债是可转换债券的二次简称&#xff0c;原始全称是可转换公司债券&#xff0c;这是一种可以在特定时间、按特定条件&#xff0c;转换为普通股票的特殊企业债券&#xff0c;可转换债券兼具债权和股权的特征&#xff0c;其英文为conver…

MindStudio学习一 整体介绍

一场景介绍 二 安装介绍 1.LINUX 采用无昇腾硬件采用linux 分部署 2.WINDOWS 3.linux下安装整体步骤 3.1安装依赖 3.2 安装步骤 1.gcc cmake 等依赖 2.python3.7.5 3.pip 安装依赖 4.安装JDK 5.安装 Ascend-cann-toolkit 6.解压安装Mindstudio 7.进入bin路径 ./…

卷积神经网络(Inception V3)识别手语

文章目录 一、前言二、前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建Inception V3网络模型1.自己搭建2.官方模型 五、编译六、训练模型七、模型…