强化学习: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:4
    P(5*i+1:5*i+5,5*i+1:5*i+5) = strele;
end

r = 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矩阵,大家感兴趣可以进一步测试。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 21:14:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 21:14:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 21:14:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 21:14:04       69 阅读

热门阅读

  1. 算法练习第29天|1005.K次取反后最大化的数组和

    2024-07-13 21:14:04       16 阅读
  2. C++ STL sort用法

    2024-07-13 21:14:04       19 阅读
  3. 什么是稀疏化

    2024-07-13 21:14:04       17 阅读
  4. centos清空history

    2024-07-13 21:14:04       12 阅读
  5. 宪法学学习笔记(个人向) Part.5

    2024-07-13 21:14:04       18 阅读
  6. C++《日期》实现

    2024-07-13 21:14:04       19 阅读
  7. 151. Reverse Words in a String

    2024-07-13 21:14:04       19 阅读
  8. 力扣--20. 有效的括号

    2024-07-13 21:14:04       17 阅读
  9. RC-u3 跑团机器人

    2024-07-13 21:14:04       15 阅读
  10. 设计模式的七项原则

    2024-07-13 21:14:04       21 阅读