深入理解强化学习——马尔可夫决策过程:策略迭代-[贝尔曼最优方程]

本文主要是介绍深入理解强化学习——马尔可夫决策过程:策略迭代-[贝尔曼最优方程],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分类目录:《深入理解强化学习》总目录


当我们一直采取 arg ⁡ max ⁡ \arg\max argmax操作的时候,我们会得到一个单调的递增。通过采取这种贪心 arg ⁡ max ⁡ \arg\max argmax操作,我们就会得到更好的或者不变的策略,而不会使价值函数变差。所以当改进停止后,我们就会得到一个最佳策略。当改进停止后,我们取让Q函数值最大化的动作,Q函数就会直接变成价值函数,即:
Q π ( s , π ′ ( s ) ) = max ⁡ a ∈ A Q π ( s , a ) = Q π ( s , π ( s ) ) = V π ( s ) Q_\pi(s, \pi'(s))=\max_{a\in A}Q_\pi(s, a)=Q_\pi(s, \pi(s))=V_\pi(s) Qπ(s,π(s))=aAmaxQπ(s,a)=Qπ(s,π(s))=Vπ(s)

我们也就可以得到贝尔曼最优方程(Bellman Optimality Equation):
V π ( s ) = max ⁡ a ∈ A Q π ( s , a ) V_\pi(s)=\max_{a\in A}Q_\pi(s, a) Vπ(s)=aAmaxQπ(s,a)

贝尔曼最优方程表明:最佳策略下的一个状态的价值必须等于在这个状态下采取最好动作得到的回报的期望。 当马尔可夫决策过程满足贝尔曼最优方程的时候,整个马尔可夫决策过程已经达到最佳的状态。只有当整个状态已经收敛后,我们得到最佳价值函数后,贝尔曼最优方程才会满足。满足贝尔曼最优方程后,我们可以采用最大化操作,即:
V π ∗ ( s ) = max ⁡ a Q π ∗ ( s , a ) V^*_\pi(s)=\max_{a}Q^*_\pi(s, a) Vπ(s)=amaxQπ(s,a)

当我们取让Q函数值最大化的动作对应的值就是当前状态的最佳的价值函数的值。另外,我们给出Q函数的贝尔曼方程:
Q π ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) Q^*_\pi(s, a)=R(s, a)+\gamma\sum_{s'\in S}p(s'|s, a)V^*(s') Qπ(s,a)=R(s,a)+γsSp(ss,a)V(s)

我们上两式合并可得:
Q π ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) max ⁡ a Q ∗ ( s ′ , a ′ ) V ∗ ( s ) = max ⁡ a Q π ∗ ( s , a ) = max ⁡ a ( R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) ) \begin{aligned} Q^*_\pi(s, a)&=R(s, a)+\gamma\sum_{s'\in S}p(s'|s, a)V^*(s')\\ &=R(s, a)+\gamma\sum_{s'\in S}p(s'|s, a)\max_{a}Q^*(s', a')\\ \\ V^*(s)&=\max_{a}Q^*_\pi(s, a)\\ &=\max_a(R(s, a)+\gamma\sum_{s'\in S}p(s'|s, a)V^*(s')) \end{aligned} Qπ(s,a)V(s)=R(s,a)+γsSp(ss,a)V(s)=R(s,a)+γsSp(ss,a)amaxQ(s,a)=amaxQπ(s,a)=amax(R(s,a)+γsSp(ss,a)V(s))

接着我们就可以得到Q函数之间的转移。Q学习是基于贝尔曼最优方程来进行的,当取Q函数值最大的状态 max ⁡ a ′ Q ∗ ( s ′ , a ′ ) \max_{a'}Q^*(s', a') maxaQ(s,a)的时候可得:
Q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) max ⁡ a ′ Q ∗ ( s ′ , a ′ ) Q^*(s, a)=R(s, a)+\gamma\sum_{s'\in S}p(s'|s, a)\max_{a'}Q^*(s', a') Q(s,a)=R(s,a)+γsSp(ss,a)amaxQ(s,a)

参考文献:
[1] 张伟楠, 沈键, 俞勇. 动手学强化学习[M]. 人民邮电出版社, 2022.
[2] Richard S. Sutton, Andrew G. Barto. 强化学习(第2版)[M]. 电子工业出版社, 2019
[3] Maxim Lapan. 深度强化学习实践(原书第2版)[M]. 北京华章图文信息有限公司, 2021
[4] 王琦, 杨毅远, 江季. Easy RL:强化学习教程 [M]. 人民邮电出版社, 2022

这篇关于深入理解强化学习——马尔可夫决策过程:策略迭代-[贝尔曼最优方程]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/486051

相关文章

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

MySQL使用EXISTS检查记录是否存在的详细过程

《MySQL使用EXISTS检查记录是否存在的详细过程》EXISTS是SQL中用于检查子查询是否返回至少一条记录的运算符,它通常用于测试是否存在满足特定条件的记录,从而在主查询中进行相应操作,本文给大... 目录基本语法示例数据库和表结构1. 使用 EXISTS 在 SELECT 语句中2. 使用 EXIS