强化学习:bellman方程求解state value例题

最近在学习强化学习相关知识,强烈推荐西湖大学赵世钰老师的课程,讲解的非常清晰流畅,一路学习下来令人身心大爽,感受数学抽丝剥茧,化繁为简的神奇魅力。
bellman方程还是比较容易理解的:当前状态下的state value等于即时奖励加上未来状态下的state value
向量形式版本如下:
在这里插入图片描述
整体完整版本如下:
在这里插入图片描述

上述公式中只涉及状态变量,而状态的改变是通过action实现的。基于全概率公式,利用状态-动作概率分布函数,可以推导得到局部细节的bellman方程如下:
在这里插入图片描述
在一步一步推导bellman方程的过程中,是从局部细节版整体完整版,再到清晰明了的向量形式。但我们理解时,可以反其道而行之。根据向量形式的公式感性认识bellman方程的内涵,再通过理性思考不断展开细化向量形式,得到整体完整版,再进一步细化得到局部细节版,如此形成闭环学习认知,实现知识点的融会贯通。这正是华老所提倡的读书从薄到厚,再从厚到薄。与大家共勉!!!

在讲解bellman方程的向量形式的课程最后,赵老师给出了几个计算实例,不同于之前讲解知识点所采用的2阶矩阵,例题给出的是5阶状态矩阵。一时无法快速给出每个状态的state value。为了验证自己的学习效果,本人选择其中状态转移概率分布最简单的一个案例进行分析,如下图红框所示。

在这里插入图片描述
可以发现,每个状态的动作方向都是确定的,且都是指向自己的右侧,因此其状态转移矩阵 P P P必呈现一定的规律性。以第一行中的5个状态为例,不难得到转移矩阵为:
在这里插入图片描述
以此类推,可以得到完整的25阶的转移矩阵。
接着,列出每个状态的即使奖励,得到向量 r r r,代入向量形式的bellman方程,即可求解得到最终的state value。
笔者利用matlab实现完整求解过程如下:

clc;
close all;
clear all;strele = zeros(5,5);
strele(1,2) = 1;
strele(2,3) = 1;
strele(3,4) = 1;
strele(4,5) = 1;
strele(5,5) = 1;P = zeros(25,25);for i = 0:4P(5*i+1:5*i+5,5*i+1:5*i+5) = strele;
endr = zeros(25,1);numlists = [5,6,7,10,12,15,16,18,20,21,25]; % 不难得到每个状态的即时奖励。for i = 1:length(numlists)r(numlists(i),1) = -1;
end
r(17,1) = 1;res = inv(eye(25) - 0.9*P) * r;res = reshape(res,5,5)'; % 因为上述构造P和r矩阵是按照行优先,而matlab是列优先,所以需要转置

最终求解得到的res矩阵为:
在这里插入图片描述
如果保留一位小数后,得到的结果和课程中给出的数据是一致的,验证了上述计算过程的正确性。因为其他案例中不存在如此明显的规律性,需要人为挨个计算得到P和r矩阵,大家感兴趣可以进一步测试。

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

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

相关文章

java Web学习笔记(三)

文章目录 1. 前置知识2. Vue使用vite构建项目SFC入门使用ref和.value体会响应式数据&#xff08;使用ES6和setup&#xff09; 3. Vue视图渲染技术及其语法模板语法&#xff1a;命令插值表达式渲染双标><中的文本&#xff08;还挺可爱&#xff09;属性渲染命令事件渲染命令…

UWB定位系统在智能制造行业中的主要功能

定位系统全套源码&#xff0c;UWB定位系统 UWB&#xff08;超宽带&#xff09;定位系统在智能制造行业赋能可以实现多种功能&#xff0c;这些功能不仅提升了企业的管理水平和生产效率&#xff0c;还增强了生产现场的安全性和灵活性。 开发语言&#xff1a;JAVA 开发工具&…

std::filesystem::current_path().generic_string()的bug

这行指令出来会出来大小写的盘符&#xff0c;如D 或者d&#xff0c;似乎随机 #include <iostream> #include <filesystem>namespace fs std::filesystem;bool arePathsSame(const fs::path& p1, const fs::path& p2) {return p1 p2; }int main() {fs::p…

算法训练营day09 字符串(字符串旋转拼接,KMP算法)

&#x1f4a1; 解题思路 &#x1f4dd; 确定输入与输出&#x1f50d; 分析复杂度&#x1f528; 复杂题目拆分 &#xff1a;严谨且完整 地拆分为更小的可以解决的子问题&#xff08;字符的逻辑拆分&#xff09;–&#xff08;多总结&#xff09;&#x1f4ad; 选择处理逻辑&…

vue3使用Echarts图表生成项目进度甘特图

先看效果 代码展示 <template><h1>项目进度甘特图</h1><div id"app"><!-- Echarts 图表 --><div ref"progressChart" class"progressChart"></div></div> </template><script setup&…

微博图片下载助手

开发的一款「微博图片下载助手」支持一键保存用户图片 / 原图保存 / 支持保存 live 动图&#xff0c;支持免登录&#xff0c;但是不支持去水印哦。另外软件是易语言编写的&#xff0c;一些杀毒软件可能会误报。 链接: https://pan.baidu.com/s/1ZwDuuS2AF0-nxGgYYPve_g?pwdwn…

vscode离线方式远程到没有网络的服务器上

1.首先要在本地和远端服务器都安装vscode的安装包&#xff0c;无网络离线安装。 2.本地vscode离线安装Remote-SSH插件 3.点击vscode最左边的ssh链接栏&#xff0c;创建ssh链接到远端无网络服务器。会报错无法下载vscode-server_x86.tar.gz&#xff0c;根据报错按F12可以看到下载…

Qt项目中添加自定义文件夹,进行整理归类

Qt项目中添加文件夹进行归类 1、在windows的工程目录下创建一个文件夹&#xff0c;如widgets 2、将.h 、.cpp、.ui文件拷贝到windows该文件夹widgets 3、在qt工程中&#xff0c;根目录右键&#xff0c;选择添加现有文件&#xff0c;批量选择 .h 、.cpp、.ui文件之后&#xf…

内网信息收集:手动、脚本和工具查IP、端口

1.手动查IP和端口 2.工具查IP 3.工具查端口 我们在内网中拿下目标机器后&#xff0c;需要进行一系列的信息收集&#xff0c;以下为总结的收集方法 1.手动信息收集&#xff1a; 以下命令在CS执行时命令前须加shell,如&#xff1a;shell ipconfig 1.收集IP网卡&#xff1a; ip…

【date】

date 设置时区为亚洲/上海以yyyy-MM-dd形式显示日期以yyyy-mm-dd HH:Mi:SS形式显示日期 设置时区为亚洲/上海 sudo timedatectl set-timezone Asia/Shanghai sudo systemctl restart chronyd.service #或者修改配置文件 sudo vi /etc/sysconfig/clock #将ZONE"" 更改…

使用Jan,把你的PC变成AI机器!支持在Windows,MacOS,Linux上运行大语言模型

最近有个概念叫“AIPC” ,听起来很牛逼,其实就是让PC运行AI算法&软件,比如运行大语言模型。 我们并不需要特意去买台联想电脑,完全可以用现成的软件把你的电脑变成AIPC。 昨天分享了一个运行Llama3大语言模型的软件叫LMStudio。 有人在评论中反馈,有更好的开源软件叫…

LabVIEW学习-LabVIEW储存Excel表格

上述实现了将格式化的时间和正弦波的频率振幅相位以及正弦波数据输入到excel表格中。 下面介绍其中使用到的函数&#xff1a; 1. 所在位置&#xff0c;函数选板->定时->获取日期/时间(秒) 2. 将获取的时间进行格式化处理&#xff0c;输出格式化的日期/时间字符串。 函…

MySQL更新和删除(DML)

DML-修改数据 UPDATE 表名 SET 字段1 值1&#xff0c;字段2值2&#xff0c;....[WHERE 条件] 例如 1.这个就是把employee表中的这个name字段里面并且id字段为1的名字改为itheima update employee set nameitheima where id 1; 2.这个就是把employee这个表中的name字段和…

acrobat 中 PDF 复制时不能精确选中所选内容所在行的一种解决方法

现象&#xff1a;划取行的时候&#xff0c;自动扩展为多行 如果整段选中复制&#xff0c;粘贴后是乱码 解决步骤 识别完&#xff0c;保存 验证 可以按行复制了。

Android系统中LogMessage在那个so库中,需要引用?

在Android系统中&#xff0c;LogMessage 并不是一个直接对应于某个特定 .so&#xff08;共享对象&#xff09;库中的函数或类的标准名称。Android的日志系统通常是通过Android的日志API来管理的&#xff0c;这些API主要定义在Java层&#xff0c;并且底层实现可能会依赖于C/C的日…

【算法】平衡二叉树

难度&#xff1a;简单 题目 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 示例&#xff1a; 示例1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true 示例2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&…

7.8 CompletableFuture

Future 接口理论知识复习 Future 接口&#xff08;FutureTask 实现类&#xff09;定义了操作异步任务执行的一些方法&#xff0c;如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 比如主线程让一个子线程去执行任务&#xff0c;子线…

day05-matplotlit设置图形各种参数

matplotlib网格 1. 显示网格:plt.grid() plt.grid(True, linestyle "--",color "gray", linewidth "0.5",axis x)显示网格linestyle&#xff1a;线型&#xff0c;“–”:表示网格是虚线&#xff0c;默认为实线color&#xff1a;网格颜色li…

债券久期及其与债券价格波动的关系

债券久期及其与债券价格波动的关系 什么是债券久期&#xff1f; “久期”是一个用来衡量债券对利率变化敏感度的指标。它不仅表示债券的平均回收期&#xff0c;还考虑了债券的所有未来现金流&#xff08;包括利息和本金&#xff09;的时间价值。久期越长&#xff0c;债券对利…

晚上定时编译android系统

1、问题 可能偶然想晚上定时编译android系统 2、解决 at.sh #!/bin/sh# at -f at.sh now1min # at -lset -e set -xecho $SHELLecho at build begin /bin/date >> at_build.log/bin/bash -c source build/envsetup.sh >> at_build.log 2>&1; lunch xxx-us…