强化学习 - DQN及进化过程(Double DQN,Dueling DQN)

news/2024/5/19 1:12:15 标签: 强化学习

1.DQN

1.1概念

      DQN相对于Q-Learning进行了三处改进:

1.引入神经网络:如下图所示希望能从状态S中提取Q(s,a)

2.经验回放机制:连续动作空间采样时,前后数据具有强关联性,而神经网络训练时要求数据之间具有独立同分布特性,简单理解,就是前后输入的数据之间要有独立性,所以对于连续空间数据,采用随机采样法,

3.设置单独目标网络:下式中θ为权重参数,为目标网络,为目标网络和当前网络的差值,利用该误差不断更新θ。

1.2迭代过程

Q-Learning:只能解决有限维度和离散空间的任务,对于机器人控制这些高维连续空间的任务,力所不能及,之后用神经网络逼近Q(s,a;θ),也就是DQN。

DQN:值函数逼近,是逼近Q(s,a),最终目的也是得到最优Π(a|s),但又存在过优问题,所以出现了Double DQN。

Double DQN:用两个网络,如下公式所示,第一个先选择不同状态下,选择令Q(s,a)最大的动作a,然后再众多最大动作中,再由Q^{'}给该动作a,取一个合适的Q值,如果说Q^{'}给的值也过高,那么令Q放弃该动作a,以此解决了过优问题。公式如下:

Q^{'}(s_{t+1},\frac{argmax}{a}Q(s_{t+1},a))

      进一步人们开始思考,无论是DQN还是Double DQN,都没有考虑如何多关注贡献更大的a对应的Q,这更加符合人类学习的过程,所以引入了优势函数。

Dueling DQN:此处引入了优势函数的概念,举个例子,当我们在高速开车时,前后无车时,我们只关注状态价值V(s)即可,但遇到车时,就必须关注相应动作的价值函数值,而不同的动作对结果影响会有优劣之分,这就是动作优势。

      我们都知道,状态价值函数V(s)是动作价值函数Q(s,a)的加权结果,如下图所示,在s状态下有Q_{\pi }(s,a_{1})Q_{\pi }(s,a_{2})两个动作值函数,加权成V_{\pi }(s),分别能得到优势函数,A(s,a_{1})=Q_{\pi }(s,a_{1})-V_{\pi }(s)A(s,a_{2})=Q_{\pi }(s,a_{2})-V_{\pi }(s)

      如下图所示,在进行网络训练时,DQN和Double DQN得到的是Q(s,a),而Dueling DQN得到两个网络V(s)和A(s,a),最终叠加得到Q(s,a)。

     

      进一步看下图,V(s)按照Q(s,a)的平均值计算得到,然后不同的Q(s,a)-V(s)是得到不同的优势函数A(s,a)。


 


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

相关文章

野火i.MX6ULL开发板wifi连接、SHH登录玄学篇

1、WiFi连接成功 服了,一样的步骤,它又行了。 手机开热点,2.4G频段,wanghaha,连上显示了IP地址,输入ping 百度网址 等了七八秒它访问成功。 中间还用过usb线刷镜像Debian。 2、使用 MobaXterm SSH 登录…

关于maven读取settings.xml文件的优先级问题

今天在IDEA中配置maven的setting.xml文件路径指向的.m2路径下的setting_a.xml文件,同时,我的maven3.6.3也放在.m2中。 [1] .m2文件夹 [2] apache-maven-3.6.3文件夹 然后,在IDEA中打包发布时发现,无论如何都读取不到指定的setti…

ImportError: cannot import name ‘HTTPClientFactory‘ from ‘twisted.web.client‘

在scrapy框架下添加爬虫文件,运行时报错: ImportError: cannot import name HTTPClientFactory from twisted.web.client 解决方法: 降低了twisted的版本,开始在Python3.9上降低twisted的版本,全都失败,…

双网卡多网卡时win11如何设置网卡优先级

背景: 电脑需要同时使用多个网卡,一个用于被远程、另一个用于打开网页。 电脑打开网页时,走的是哪个网卡,是根据网卡优先级来的。 打开控制面板、网络和Internet、网络和共享中心 点击左侧 更改适配器设置。我这里可见两个网卡…

【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符

引言 在上一篇中我们介绍了MySQL函数;在开发中,对MySQL运算符的运用是十分重要的。这一篇我们使用命令行方式来帮助读者掌握MySQL中运算符的操作。 上一篇链接:【MySQL进阶之路丨第十六篇】一文带你精通MySQL函数 MySQL运算符 MySQL中的运…

Linux-用户与用户组,权限

1.用户组管理(以下命令需root用户执行) ①创建用户组 groupadd 用户组名 ②删除用户组 groupdel 用户组名 2.用户管理(以下命令需root用户执行) ①创建用户 useradd [-g -d] 用户名 >-g:指定用户的组,不…

【Vue】【uni-app】工单管理页面实现

用的是uni-app的uni-ui拓展组件实现的 功能是对工单进行一个展示,并对工单根据一些筛选条件进行搜索 目前是实现了除了日期之外的搜索功能,测试数据是下面这个tableData.js,都是我自己手写的,后端请求也稍微写了一些,…

解析邮件文本内容; Mime文本解析; MimeStreamParser; multipart解析

原始文本 ------_Part_46705_715015081.1699589700255 Content-Type: text/html;charsetUTF-8 Content-Transfer-Encoding: base64PGh0bWwCiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBodHRwLW VxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt bDsgY2hhcnNldD1VVEYtOCICiAgICAgIC…