对Dueling DQN理论的深度分析。

news2024/11/27 2:18:15

强化学习中Agent与环境的交互过程是由马尔可夫决策过程(Markov Decision Process, MDP)描述的。MDP对环境做了一个假设,称作马尔可夫性质,即下一时刻的状态只由上一时刻的状态和动作决定。
马尔可夫性质决定了值函数(状态值与动作值函数)可以写成递归的形式,即贝尔曼等式:
在这里插入图片描述
事实上,在很多任务中,或者使用深度神经网络对动作值函数和状态值函数进行参数化拟合时,我们是默认agent执行一个动作后得到的状态的是唯一的。此时,我们可以认为状态转移概率 P r Pr Pr是1。
这样的话,我们就可以更方便的理解上面的公式了。

贝尔曼等式清晰地展示了值函数之间的迭代规律,或者说是相邻两个时刻的值函数间的关系: 以状态值函数为例,当前时刻的状态值等于下一时刻的奖励 r t r_t rt与下一时刻的状态值的和的期望。
乍一看,这俩货的递归方法是一样的。除了多了一个动作 a t a_t at之外,其他地方没有任何区别。
事实上,这两者的区别在于求解最优状态值函数和最优动作值函数时才能变现出来。而人们设计深度强化学习是根据最优值函数的递推关系来设计网络结构的。
例如DQN,他们通过参数化的神经网络 Q ( s , a ; w ) Q(s,a;w) Q(s,a;w)来表示最优动作值函数 Q ∗ ( s , a ) Q^{*}(s,a) Q(s,a)。state s t s_t st作为DQN的输入,其输出是对每个action a t a_t at的价值 Q ( s , a i ) Q(s,a_i) Q(s,ai)预测,比如left, right和up的价值分别预测2000,1000和3000。这里的 a i a_i ai的下标 i i i表示在状态s是agent可以执行的每个动作。

跟进一步的讲,Dueling DQN中,他们把这种思想体现的淋漓尽致。
然我们来梳理一下Dueling DQN的推导过程。主要是优势函数的推导和使用。
首先,强化学习定义了agent在一个轨迹上的累积折扣收益
G t = R t + γ R t + 1 + γ 2 R t + 2 + γ 3 R t + 3 + . . . G_t=R_t+γ R_{t+1}+γ^2 R_{t+2}+γ^3 R_{t+3}+... Gt=Rt+γRt+1+γ2Rt+2+γ3Rt+3+...

G t G_{t} Gt 表示从 t t t时刻开始,未来所有奖励的加权求和。在 t t t时刻, G t G_{t} Gt是未知的,它依赖于未来所有状态和动作。

相应的,状态-动作价值函数((Action-value function))可以初步定义为:

Q π ( ( s t , a t ) = E [ G t ∣ S t = s t , A t = a t ] Q_{\pi}((s_{t},a_{t})=E[G_t|S_t=s_t,A_t=a_t] Qπ((st,at)=E[GtSt=st,At=at]

Q π ( s t , a t ) Q_{\pi }(s_{t},a_{t}) Qπ(st,at)是回报 G t G_{t} Gt的条件期望,将 t + 1 t+1 t+1时刻以后的状态和动作全部消掉。 Q π ( s t , a t ) Q_{\pi }(s_{t},a_{t}) Qπ(st,at)依赖于状态 s t s_{t} st、动作 a t a_{t} at以及策略 π \pi π

同样,状态值函数(State-value function)可以定义为:

V π ( s t ) = E [ Q π ( s t , A ) ] V_{\pi }(s_{t})=E\left [ Q_{\pi }(s_{t},A) \right ] Vπ(st)=E[Qπ(st,A)] (1)

这个公式说明,当前状态 s t s_t st的状态值函数等于该状态所有动作的状态动作值函数的期望注意这个公式(1)里的大写的动作 A A A。这个很有用啊,兄弟。它是后面推导Dueling DQN的关键呐。纯纯的都是科技与狠活…

为了满足一些把期望都忘记的同学的需求,我举个小小的例子解释一下什么是期望,以离散型为例:
假设张三在玩射击游戏,打气球,共可以射击4次。射中4次的概率是0.1,射中3次的概率是0.4,射中2次的概率是0.3,射中1次的概率是0.1,射中0次的概率是0.2。分别可以得到5元,4元,3元,2元,1元。

那么,这次游戏的期望就是0.15+0.44+0.33+0.22+0.1+1=2.06

这个时候,我们把射中个数的概率当成策略函数 π ( a ∣ s ) \pi(a|s) π(as),把得到的钱当做动作值函数。

结合下面这个图,这个公式(1)看这是不是很舒心了?就更明了了。

在这里插入图片描述
V π ( s t ) V_{\pi }(s_{t}) Vπ(st) Q π ( s t , a t ) Q_{\pi }(s_{t},a_{t}) Qπ(st,at)的期望,将 Q π ( s t , a t ) Q_{\pi }(s_{t},a_{t}) Qπ(st,at)中的动作 a t a_{t} at消掉。 V π ( s t ) V_{\pi }(s_{t}) Vπ(st)依赖于状态 s t s_{t} st 和策略 π ( a ∣ s ) \pi(a|s) π(as)

下面开始了,其实上面说的那些公式都是浮云,深度强化学习的目标是直接拟合最优状态值函数或动作值函数。

所以我们需要对最优动作值函数和最优状态值函数之间的关系进行推导:

直观的,最优动作价值函数(Optimal action-value function):

Q ∗ ( s , a ) = m a x π Q π ( s , a ) Q^{\ast }(s,a)=max_{\pi }Q_{\pi }(s,a) Q(s,a)=maxπQπ(s,a)

我们再回顾一下,DQN的输出是在状态 s s s下每个动作的值函数。比方说我们有三个动作,这里的 m a x ( ) max() max()函数求的就是 Q Q Q值最大的那个动作的动作值函数的值,即 Q ∗ ( s , a ) Q^{\ast }(s,a) Q(s,a)

动作价值函数 Q π ( s t , a t ) Q_{\pi }(s_{t},a_{t}) Qπ(st,at)依赖于策略 π \pi π,对 Q π ( s t , a t ) Q_{\pi }(s_{t},a_{t}) Qπ(st,at)关于 π \pi π求最大值,消除掉 π \pi π,得到 Q ∗ ( s , a ) Q^{\ast }(s,a) Q(s,a) Q ∗ ( s , a ) Q^{\ast }(s,a) Q(s,a)只依赖于状态 s s s和动作 a a a,不依赖于策略 π \pi π Q ∗ ( s , a ) Q^{\ast }(s,a) Q(s,a)用于评价在状态 s s s下做动作 a a a的好坏。

进一步的,我们写一下最优状态值函数
最优状态价值函数(Optimal state_value function):

V ∗ ( s t ) = m a x π V π ( s t ) V^{\ast }(s_{t})=max_{\pi }V_{\pi }(s_{t}) V(st)=maxπVπ(st) (2)

这个也很好解释,

V π ( s ) V_{\pi }(s) Vπ(s)关于 π \pi π求最大值,消除掉 π \pi π,得到 V ∗ ( s ) , V ∗ ( s ) V^{\ast }(s),V^{\ast }(s) V(s)V(s)只依赖于状态 s s s, 不依赖于策略 π \pi π V ∗ ( s ) V^{\ast }(s) V(s)用于评价状态 s s s的好坏。

回到公式(1),我直接给复制到这边:
V π ( s t ) = E [ Q π ( s t , A ) ] V_{\pi }(s_{t})=E\left [ Q_{\pi }(s_{t},A) \right ] Vπ(st)=E[Qπ(st,A)] (1)
当前状态 s t s_t st的状态值函数等于该状态所有动作的状态动作值函数的期望。
然后,我们就可以定义优势函数了:
首先说一下优势函数的作用:

优势函数 A ( s , a ) A(s,a) A(s,a)用于度量在状态 s s s下执行动作a的合理性,它直接给出动作 a a a的性能与所有可能的动作的性能的均值的差值。如果该差值(优势)大于0,说明动作 a a a优于平均,是个合理的选择;如果差值(优势)小于0,说明动作 a a a次于平均,不是好的选择。度量状态 s s s下的动作 a a a的性能最合适的形式就是动作值函数(即Q函数) Q π ( s , a ) Q^π(s,a) Qπ(s,a);而度量状态s所有可能动作的性能的均值的最合适形式是状态值函数(即V函数) V π ( s , a ) V^π(s,a) Vπ(s,a)

先理解他的作用,然后再看它的公式,就一目了然了:
最优优势函数(Optimal advantage function):

A ∗ ( s , a ) = Q ∗ ( s , a ) − V ∗ ( s ) A^{\ast }(s,a)=Q^{\ast }(s,a)-V^{\ast }(s) A(s,a)=Q(s,a)V(s)

你看是不是很巧妙, Q ∗ ( s , a ) Q^{\ast }(s,a) Q(s,a)是当前DQN选择的最优动作的Q值,而 V ∗ ( s ) V^{\ast }(s) V(s)是对当前所有动作的评价, Q ∗ ( s , a ) Q^{\ast }(s,a) Q(s,a)是对当前DQN选择的动作的评价。如果Q大于零,说明选择对了。如果小于零说明选择错了。

当然,这个 A ∗ ( s , a ) A^{\ast }(s,a) A(s,a)是理论推导的,在Dueling DQN中是使用神经网络拟合的,即 A ∗ ( s , a ; w ) A^{\ast }(s,a;w) A(s,a;w)
然后,我们就有了对 Q ∗ ( s , a ) Q^{\ast }(s,a) Q(s,a)的弥补方法:

Q ∗ ( s , a ; w ) = V ∗ ( s ; α ) + A ∗ ( s , a ; β ) Q^{\ast }(s,a;w)=V^{\ast }(s;\alpha)+A^{\ast }(s,a;\beta) Q(s,a;w)=V(s;α)+A(s,a;β)

在这个公式中, w , α , β w,\alpha,\beta w,α,β表示拟合这三者的神经网络的参数。
这个公式的想法就是:

针对DQN当前计算的动作的值函数 Q ∗ ( s , a ; w ) Q^{\ast }(s,a;w) Q(s,a;w),如果DQN计算错了,那么 A ∗ ( s , a ; β ) A^{\ast }(s,a;\beta) A(s,a;β)是小于零的,此时就让他减去一点。如果DQN计算对了,那 A ∗ ( s , a ; β ) A^{\ast }(s,a;\beta) A(s,a;β)是大于零的,那么就让它更大,从而增加在该状态时选择该动作的优势。

其实,理论推导是很合理的。在表格形强化学习中,这种方法很强,优势很明显。但是,当我们使用神经网络拟合时,其实已经很玄学了。

强化学习1-基础概念(state,action,reward,policy)

强化学习2-动作价值函数&DQN

强化学习笔记3

强化学习中值函数与优势函数的估计方法

深度强化学习-Dueling DQN算法原理与代码

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

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

相关文章

【项目总结】医疗化验单的OCR识别

项目总结 医疗化验单OCR 文章目录项目总结前言一、项目要求二、解决思路1.模型1.扶正2.裁剪3.pipeline三、总结前言 课题组项目的总结。 一、项目要求 课题组和广州的一家药企有合作,甲方要求把一张医疗化验单内的表格内容整体识别出来,特别是化验的数…

测开- Junit 单元测试框架

文章目录前言了解 Junit准备工作 - 在 pom.xml 文件中引入 Junit 相关依赖1、Junit注解TestBeforeEach、BeforeAllAfterEach && AfterAll2、断言1、Assertions - assertEquals 方法2、Assertions - assertNotEquals 方法3、Assertions - assertTrue && assertF…

一个关于React数据不可变的无聊问题

对于一个React的开发者来说不知道你有没有想过为什么React追求数据不可变这个范式; 一个月前我想过一个问题如果我在使用useState这个hooks的时候传入的是一个改变后的引用类型对象会发生什么? 例如: import {useState} from "react&…

css之@media网页适配

原因&#xff1a; 原本是想用 iview Grid 栅格,但以下响应并不符合我的需求 【我需要的分辨率是1920和1536】&#xff0c;所以需要手动修改 解决方案&#xff1a; html <Row> <i-col :xs"6" :sm"6" :md"6" :lg"8"><d…

IB经济试卷实用指南分享

明明每个经济理论都知道&#xff0c;然而在实际答题过程中就是用不出来&#xff1f; 看到答案后却是恍然大悟&#xff0c;就像对着数学答案&#xff0c;大体还能想明白“原来是这样的”&#xff0c;但考试的时候就是想不到用这个理论、这个模型&#xff1f; 出现这种现象&#…

左值和右值

左值和右值 按字面意思&#xff0c;通俗地说。以赋值符号 为界&#xff0c; 左边的就是左值&#xff0c; 右边就是右值。 更深一层&#xff0c;可以将 L-value 的 L, 理解成 Location&#xff0c;表示定位&#xff0c;地址。将 R-value 的 R 理解成 Read&#xff0c;表示读取…

[附源码]Python计算机毕业设计电影售票管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

什么是位移电流?位移电流密度计算公式详解

位移电流变化着的电场可以存在于真空、导体、电介质中&#xff0c;本质是变化着的电场&#xff0c;不会产生化学效应&#xff0c;也不会产生焦耳热。下面一起随着小编一起了解一下什么是位移电流以及位移电流密度计算公式。 什么是位移电流&#xff1f; 1861年&#xff0c;詹姆…

[附源码]Python计算机毕业设计SSM基于web的医院门诊管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

基于java+springboot+mybatis+vue+mysql的一起来约苗系统

项目介绍 在系统流程分析当中调查分析它是比较重要的环节&#xff0c;因为在这个系统当中它都涉及到每个环节的业务流程&#xff0c;所以从JavaSprignBootVueMYSQL一起来约苗系统的设计的整体设计上要保证各个信息的正确输入和输出以及对数据储存的完整&#xff0c;并结合实际…

ASEMI肖特基二极管MBR20100FCT图片,MBR20100FCT大小

编辑-Z ASEMI肖特基二极管MBR20100FCT参数&#xff1a; 型号&#xff1a;MBR20100FCT 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;100V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;70V 最大直流阻断电压&#xff08;VDC&#xff09;…

python+django车辆充电桩管理系统

启动一个新项目 执行下面的命令来创建一个新的 Django 项目&#xff1a; django-admin startproject myproject 命令行工具django-admin会在安装Django的时候一起自动安装好。 执行了上面的命令以后&#xff0c;系统会为Django项目生成基础文件夹结构。 现在&#xff0c;我…

【软件测试】测试人我懵了,产品验收时还有一堆bug?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 为什么明明写了 100…

屏幕录制怎么加上水印?这个方法,真的太实用啦

随着网络技术的飞速发展&#xff0c;短视频已经成为传播信息最快的方式之一。越来越多的人将自己喜欢的游戏直播视频和网络直播课程知识制作成短视频&#xff0c;并在各大媒体平台进行分享。然后&#xff0c;录制的视频可能会被其他人带到其他平台。屏幕录制怎么加上水印&#…

FLStudio21水果软件中文版本有哪些新增功能?

FL Studio 21即将推出 – 新功能和改进。如果您从事音乐制作&#xff0c;那么您不可能没有听说过 FL Studio&#xff0c;或者很可能已经使用过这个音乐程序。好了&#xff0c;新版本的 FL Studio 21 DAW 已经准备好向公众发布了。Image-line 正在为 2022 年的大型揭幕准备最终细…

iOS原生项目拥有Flutter热重载极速调试

1. Mac的App Store上下载安装InjectionIII. 2. 打开InjectionIII, Open Project, 选择你的项目目录. 3. 选择的项目会在Open Recent中出现, 保持File Watcher的选项勾选. 4. 在AppDelegate的DidFinishLaunchingWithOptions配置InjectionIII的路径 - (BOOL)application:(UIAp…

python+django勤工助学管理系统vue

目 录 第1章 绪论 1 1.1课题背景 1 1.2 背景意义 1 1.3 研究的内容 2 第2章 相关技术 3 第3章 系统分析 5 3.1可行性分析 5 3.2系统性能分析 6 3.3系统流程分析 6 3.3.1操作流程 6 3.3.2信息添加流程 7 3.3.3信息删除流程 8 第4章 系统设…

周志华 《机器学习初步》 绪论

周志华 《机器学习初步》 绪论 Datawhale2022年12月组队学习 ✌ 文章目录周志华 《机器学习初步》 绪论一.机器学习二.典型的机器学习过程三.计算学习理论PAC模型思考两个问题问题性质角度计算要求的角度四.基本术语五.归纳偏好六.NFL定理哪个算法更好&#xff1f;NFL定理的寓意…

Codeforces Round #837 (Div. 2) A-C

A. Hossam and Combinatorics A题意&#xff1a; 给你n个数&#xff0c;让你求有多少个数对 并且 满足等于数组中最大的绝对值之差。 思路&#xff1a;直接找最大值和最小值&#xff0c;如果最大值和最小值不是一个&#xff0c;那就是最大数的数量乘最小值的数量乘2&#x…

前端基础(一)_前端页面构成

一、前端页面构成 1.HTML(Hypertext Markup Language) Html–超文本标记语言&#xff0c; 结构层由HTML标记语言创建的&#xff0c;负责页面的语义。&#xff08;它包括一系列标签&#xff0c;主要分为块标签和行标签、行内块标签三类&#xff09; 2.CSS(Cascading style sh…