深入理解强化学习——马尔可夫决策过程:价值迭代-[价值迭代算法]

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


文章《深入理解强化学习——马尔可夫决策过程:价值迭代-[最优性原理]》和文章《深入理解强化学习——马尔可夫决策过程:价值迭代-[确认性价值迭代]》介绍了价值迭代的基础知识,本文将介绍价值迭代算法。

价值迭代算法的过程如下:

价值迭代算法
( 1 ) 初始化:令 k = 1 k=1 k=1 ∀ s : V 0 ( s ) = 0 \forall s: V_0(s)=0 s:V0(s)=0
( 2 ) for k = 1 : H k=1:H k=1:H H H H为使 V ( s ) V(s) V(s)收敛所需的迭代次数
( 3 ) ∀ s : Q k + 1 ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V k ( s ′ ) \quad\forall s:Q_{k+1}(s, a)=R(s, a)+\gamma\sum_{s'\in S}p(s'|s,a)V_k(s') s:Qk+1(s,a)=R(s,a)+γsSp(ss,a)Vk(s)
( 4 ) ∀ s : V k + 1 ( s ) = max ⁡ a Q k + 1 ( s , a ) \quad\forall s:V_{k+1}(s)=\max_aQ_{k+1}(s, a) s:Vk+1(s)=maxaQk+1(s,a)
( 5 ) k = k + 1 \quad k = k + 1 k=k+1
( 6 ) 在迭代后提取最优策略: π ( s ) = arg ⁡ max ⁡ a [ R ( s , a ) + γ ∑ s ∈ S p ( s ′ ∣ s , a ) V H + 1 ( s ′ ) ] \pi(s)=\arg\max_a[R(s, a)+\gamma\sum_{s\in S}p(s'|s, a)V_{H+1}(s')] π(s)=argmaxa[R(s,a)+γsSp(ss,a)VH+1(s)]

我们使用价值迭代算法是为了得到最佳的策略 π \pi π。我们可以使用文章《深入理解强化学习——马尔可夫决策过程:价值迭代-[确认性价值迭代]》中的式子进行迭代,迭代多次且收敛后得到的值就是最佳的价值。

价值迭代算法开始的时候,把所有值初始化,接着对每个状态进行迭代。 我们把 Q k + 1 ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V k ( s ′ ) Q_{k+1}(s, a)=R(s, a)+\gamma\sum_{s'\in S}p(s'|s,a)V_k(s') Qk+1(s,a)=R(s,a)+γsSp(ss,a)Vk(s)代入式 V k + 1 ( s ) = max ⁡ a Q k + 1 ( s , a ) V_{k+1}(s)=\max_aQ_{k+1}(s, a) Vk+1(s)=maxaQk+1(s,a),就可以得到文章《深入理解强化学习——马尔可夫决策过程:价值迭代-[确认性价值迭代]》中的式子。因此,我们有了上两式后,就不停地迭代,迭代多次后价值函数就会收敛,收敛后就会得到 V ∗ V^* V。我们有了 V ∗ V^* V后,一个问题是如何进一步推算出它的最佳策略。我们可以直接用 arg ⁡ max ⁡ \arg\max argmax 操作来提取最佳策略。我们先重构Q函数,重构后,每一列对应的Q值最大的动作就是最佳策略。这样我们就可以从最佳价值函数里面提取出最佳策略。 我们只是在解决一个规划的问题,而不是强化学习的问题,因为我们知道环境如何变化。

价值迭代做的工作类似于价值的反向传播,每次迭代做一步传播,所以中间过程的策略和价值函数 是没有意义的。而策略迭代的每一次迭代的结果都是有意义的,都是一个完整的策略。下图所示为一个可视化的求最短路径的过程,在一个网格世界中,我们设定了一个终点,也就是左上角的点。不管我们在哪一个位置开始,我们都希望能够到达终点(实际上这个终点在迭代过程中是不必要的,只是为了更好地演示)。价值迭代的迭代过程像是一个从某一个状态(这里是我们的终点)反向传播到其他各个状态的过程,因为每次迭代只能影响到与之直接相关的状态。 让我们回忆一下最优性原理定理:如果我们某次迭代求解的某个状态 s s s的价值函数 V k + 1 ( s ) V_{k+1}(s) Vk+1(s)是最优解,它的前提是能够从该状态到达的所有状态 s ‘’ s‘’ s‘’都已经得到了最优解;如果不是,它所做的只是一个类似传递价值函数的过程。
最短路径
如上图所示,实际上,对于每一个状态,我们都可以将其看成一个终点。迭代由每一个终点开始,我们每次都根据贝尔曼最优方程重新计算价值。如果它的相邻节点价值发生了变化,变得更好了,那么它的价值也会变得更好,一直到相邻节点都不变。因此,在我们迭代到 V 7 V_7 V7之前,也就是还没将每个终点的最优的价值传递给其他的所有状态之前,中间的几个价值只是一种暂存的不完整的数据,它不能代表每一个状态的价值,所以生成的策略是没有意义的策略。价值迭代是一个迭代过程,上图可视化了从 V 1 V_1 V1 V 7 V_7 V7每一个状态的价值的变化。而且因为智能体每走一步就会得到一个负的价值,所以它需要尽快地到达终点,可以发现离它越远的状态,价值就越小。 V 7 V_7 V7收敛过后,右下角的价值是 − 6 −6 6,相当于它要走6步,才能到达终点。智能体离终点越近,价值越大。当我们得到最优价值后,我们就可以通过策略提取来得到最佳策略。

参考文献:
[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.hqwc.cn/news/283543.html

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

相关文章

在公司内网开发的时候如何和互联网第三方平台环境联调之内网穿透

一、背景 一般情况下,不会出现所处不在同一网段进行后端服务联调,但是当遇到和第三方平台对接之时,这个时候如果你自身处在公司内部局域网的范畴下,那么一般都是会被保护的,也就是说外网无法访问你的ip。这个时候就需…

【赠书第11期】Unity 3D游戏开发

文章目录 前言 1 Unity 3D简介 2 Unity 3D基本概念 2.1 场景(Scene) 2.2 游戏对象(Game Object) 2.3 组件(Component) 2.4 资源(Asset) 3 Unity 3D重要组件 3.1 物理引擎 …

百分比组件 - elementui改动

<el-slider v-model"value2" style"width: 87%;position: absolute;bottom: 9px;" disabled :show-tooltip"false"></el-slider>value2: 0,// 百分比条 ::v-deep .el-slider__runway.disabled .el-slider__bar {background-color: #…

Go标准包之flag命令行参数解析

1.介绍 在 Go中&#xff0c;如果要接收命令行参数&#xff0c;需要使用 flag 包进行解析。不同的参数类型可以通过不同的方法接收。 2.参数接受 2.1 接受方式 使用flag接收参数&#xff0c;可以由以下三种方式接受&#xff1a; 方式一: flag.Type(name,defaultVal,desc)方…

基于PyCharm实现串口GUI编程

工具效果如下如所示 下面简单介绍一下操作流程 1.打开PyCharm软件 2.创建一个工程 3.给该工程命名 4.在main.py里面黏贴如下的代码 # This is a sample Python script. # Press ShiftF10 to execute it or replace it with your code. # Press Double Shift to search everyw…

vcs+verdi+uvm单步调试及问题记录

编译 编译选项如下&#xff1a; vcs -ntb_opts uvm -sverilog -f $PROJ_ROOT/tb/option.f -debug_accessall -kdb -lca -full64 -fsdb_old -timescale1ns/10ps其中最重要的是要加上这四项 -debug_accessall -kdb -lca -full64 option.f里面的内容如下&#xff0c;是一些verd…

mybatis plus 公共字段自动填充createBy updateBy

一、公共字段自动填充 需求&#xff1a;好多表公共的字段&#xff0c;赋值逻辑也相同&#xff0c;不用每次为其赋值&#xff0c;‘拦截器’统一赋值。 1. 在新增数据时&#xff0c;需要设置创建时间、创建人、修改时间、修改人等字段&#xff0c;在编辑数据时需要设置修改时间…

常见光模块的封装

光模块的封装&#xff0c;保障了光通信的稳定和可靠性。本文介绍几种常见的光模块的封装类型。 19封装–焊接型光模块&#xff0c;一般速度不高于千兆&#xff0c;多采用SC接口。 SFP封装&#xff1a;SFP&#xff08;Small form-factor pluggable&#xff09;意思是小型可拔插式…

2023NEFU实习项目解析 - 中俄贸易供需服务平台

文章目录 项目概述项目初始化搭建项目初始框架配置Tomcat建立项目数据库编写统一返回类及其工具类编写数据库工具类通过Filter解决Response返回中文乱码问题使用Filter解决权限校验问题 项目主干开发用户登录企业管理&#xff08;分页查询原生实现&#xff09;上传VIP申请书模板…

鸿蒙 Ark ui 实战登录界面请求网络实现教程

团队介绍 作者&#xff1a;徐庆 团队&#xff1a;坚果派 公众号&#xff1a;“大前端之旅” 润开鸿生态技术专家&#xff0c;华为HDE&#xff0c;CSDN博客专家&#xff0c;CSDN超级个体&#xff0c;CSDN特邀嘉宾&#xff0c;InfoQ签约作者&#xff0c;OpenHarmony布道师&…

2023/12/15 work

1. tcp 客户端、服务端通讯 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <myhead.h>#define SERVICE_PORT 9994 #define SERVICE_IP "192.168.0.106"int main(int argc, const char *argv[]) {//服务端//1. 创建…

LangChain 28 BabyAGI编写旧金山的天气预报

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…