马尔可夫Markov决策过程 MDP、马尔可夫奖励过程MRP

article/2025/8/22 1:41:52

引言

在概率论及统计学中,马尔可夫过程(英语:Markov process)是一个具备了马尔可夫性质的随机过程,因为俄国数学家安德雷·马尔可夫得名。马尔可夫过程是不具备记忆特质的(memorylessness)。换言之,马尔可夫过程的条件概率仅仅与系统的当前状态相关,而与它的过去历史或未来状态,都是独立、不相关的。
在这里插入图片描述

概论

在这里插入图片描述

1. Markov Decision Process马尔可夫决策过程

机器学习算法(有监督,无监督,弱监督)中,马尔科夫决策过程是弱监督中的一类叫增强学习。增加学习与传统的有监督和无监督不同的地方是,这些方法都是一次性决定最终结果的,而无法刻画一个决策过程,无法直接定义每一次决策的优劣,也就是说每一次的决策信息都是弱信息,所以某种程度上讲,强化学习也属于弱监督学习。从模型角度来看,也属于马尔科夫模型,其与隐马尔科夫模型有非常强的可比性。

下面是一个常用的马尔科夫模型的划分关系
在这里插入图片描述

1.1 MDP定义

MDP就是具有决策状态的马尔可夫奖励过程。这里我们直接给出了马尔可夫决策过程的定义:
在这里插入图片描述

  • 状态(state): 智能体在每个步骤中所处于的状态集合
  • 行为(action): 智能体在每个步骤中所能执行的动作集合
  • 转移概率(transition): 智能体处于状态s下,执行动作a后,会转移到状态s’的概率
  • 奖励(reward): 智能体处于状态s下,执行动作a后,转移到状态s’后获得的立即奖励值
  • 策略(policy): 智能体处于状态s下,应该执行动作a的概率

在这里插入图片描述
值得注意的是,在马尔科夫决策过程中,状态集合是离散的,动作集合是离散的,转移概率是已知的,奖励是已知的。在这个条件下的学习称之为有模型学习。

在这里插入图片描述

1.2 问题求解1

在这里插入图片描述

1.2.1 策略迭代算法

在这里插入图片描述
在这里插入图片描述

1.2.2 值迭代算法

在这里插入图片描述
在这里插入图片描述

1.3 实例

1.3.1 策略迭代实例

在这里插入图片描述
使用马尔科夫决策过程策略迭代算法进行计算,具体过程详见,

https://github.com/persistforever/ReinforcementLearning/tree/master/carrental

1.3.2 值迭代实例

赌徒问题 :一个赌徒抛硬币下赌注,如果硬币正面朝上,他本局将赢得和下注数量相同的钱,如果硬币背面朝上,他本局将输掉下注的钱,当他输光所有的赌资或者赢得$100则停止赌博,硬币正面朝上的概率为p。赌博过程是一个无折扣的有限的马尔科夫决策问题。

使用马尔科夫决策过程值迭代算法进行计算,具体过程详见,
https://github.com/persistforever/ReinforcementLearning/tree/master/gambler

1.4 问题求解2

1.4.1 Policies策略

在这里插入图片描述

1.4.2 Policy based Value Function基于策略的价值函数

在这里插入图片描述

1.4.3 Bellman Expectation Equation贝尔曼期望方程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4.4 Optimal Value Function最优价值函数

在这里插入图片描述

1.4.5 Theorem of MDP定理

在这里插入图片描述

1.4.6 Finding an Optimal Policy寻找最优策略

在这里插入图片描述

1.4.7 Bellman Optimality Equation贝尔曼最优方程

在这里插入图片描述
在这里插入图片描述

1.4.7.1 Solving the Bellman Optimality Equation求解贝尔曼最优方程

贝尔曼最优方程是非线性的,通常而言没有固定的解法,有很多著名的迭代解法:

  • Value Iteration 价值迭代
  • Policy Iteration 策略迭代
  • Q-learning
  • Sarsa

这个可以大家之后去多了解了解。

1.5 最优决策

也许上面的目标函数还不清晰,如何求解最有决策,如何最大化累积回报

下面结合例子来介绍如何求解上面的目标函数。且说明累积回报函数本身就是一个过程的累积回报,回报函数才是每一步的回报。
在这里插入图片描述
下面再来看求解上述最优问题,其中 就是以s为初始状态沿着决策函数走到结束状态的累积回报。

1.6 值迭代

在这里插入图片描述

1.7 策略迭代

值迭代是使累积回报值最优为目标进行迭代,而策略迭代是借助累积回报最优即策略最优的等价性,进行策略迭代。
在这里插入图片描述

1.8 MDP中的参数估计

回过头来再来看前面的马尔科夫决策过程的定义是一个五元组,一般情况下,五元组应该是我们更加特定的问题建立马尔科夫决策模型时该确定的,并在此基础上来求解最优决策。所以在求解最优决策之前,我们还需更加实际问题建立马尔科夫模型,建模过程就是确定五元组的过程,其中我们仅考虑状态转移概率,那么也就是一个参数估计过程。(其他参数一般都好确定,或设定)。

假设,在时间过程中,我们有下面的状态转移路径:
在这里插入图片描述

2. Markov Reward Process马尔可夫奖励过程

2.1 MRP

简单来说,马尔可夫奖励过程就是含有奖励的马尔可夫链,要想理解MRP方程的含义,我们就得弄清楚奖励函数的由来,我们可以把奖励表述为进入某一状态后收获的奖励。奖励函数如下所示:
在这里插入图片描述

2.2 Return回报

在这里插入图片描述

2.3 Value Function价值函数

在这里插入图片描述

2.4 Bellman Equation贝尔曼方程

在这里插入图片描述

https://zhuanlan.zhihu.com/p/271221558


http://chatgpt.dhexx.cn/article/hoFmvL0a.shtml

相关文章

零基础学习python数据分析,需要掌握哪些技能?

对于刚刚入行的小白同学来说,在学习python的过程中,一定会遇到一些疑问。比如说: 学习Python需要多久? 学习Python需要达到什么样的程度? 学Python的书籍有哪些? 为了处理数据集,我需要精通…

Python数据分析期末复习归纳

python数据分析期末复习归纳(更新中) 文章目录 python数据分析期末复习归纳(更新中)前言一、python语言基础二、内建数据结构、函数、文件(重点)元组列表内建序列函数字典函数 三、Numpy基础(重…

Python数据分析师特训营84节

刚看完了小破站的一个数据分析的课程: “2020年Python数据分析师特训营全套84节视频完结版(就业向/零基础友好)” 趁着热乎劲儿,想记录一下课程讲到的关于python的基础知识,还有numpy、pandas、matplotlib(数据分析三大利器)工具…

Python数据分析:混淆矩阵

【小白从小学Python、C、Java】 【Python全国计算机等级考试】 【Python数据分析考试必会题】 ● 标题与摘要 Python数据分析 混淆矩阵 ● 选择题 以下关于混淆矩阵说法错误的是: A TP是被正确分类的正例个数 B FN是被错误分类的正例个数 C 主对角元素是不同类别样例…

Python数据分析和处理

数据的维度 从一个数据到一组数据:一个数据表达一个含义,一组数据表达一个或多个含义 维度:一组数据的组织形式 一维数据:由对等关系的有序或无序数据构成。采用线性方式组织 二维数据:由多个一维数据组成,是一维数…

Python数据分析之理论知识

文章目录 Python数据分析概述一、数据分析的概念1.广义数据分析2.数据挖掘 二、数据分析流程1. 需求分析:2. 数据获取3.数据预处理4.分析与建模5.模型评价与优化6. 分类模型评价指标7.回归模型8.部署 三、数据分析应用场景四、总思维导图 Python数据分析概述 一、数…

如何用Python进行数据分析,详细流程讲解!

1:为什么选择Python进行数据分析? Python是一门动态的、面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言。Python入门简单,代码可读性强,一段好的Python代码,阅读起来像是在读一篇外语文章。Pyt…

如何用Python进行数据分析?

本文为CDA数据分析研究院原创作品,转载需授权 1.为什么选择Python进行数据分析? Python是一门动态的、面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言。Python入门简单,代码可读性强,一段好的Python代码,阅读起来像是在读一篇外语文章。Python这种特性称为“伪…

Python做数据分析需要学什么?

下面分别从这四个方面来带大家学习数据分析: 第一,做数据分析要精通Python吗?第二,数据分析流程是什么?学什么?第三,如何培养数据分析思维?第四,数据分析书籍推荐 一、…

Python大作业——爬虫+可视化+数据分析+数据库(数据分析篇)

个人博客 Python大作业——爬虫可视化数据分析数据库(简介篇) Python大作业——爬虫可视化数据分析数据库(爬虫篇) Python大作业——爬虫可视化数据分析数据库(可视化篇) Python大作业——爬虫可视化数…

用python进行数据分析(入门学习)

做笔记啦!!!这几天突击了一下使用python进行数据分析,觉得还是梳理一遍比较好,不然学得快忘得也快[捂脸] 所以,今天这篇文章就主要介绍一下用python进行数据分析中常用到的三个库:numpy、pandas…

111个Python数据分析实战项目,代码已跑通,数据可下载

写在前面: 这里整理了111个数据分析的案例,每一个都进行了严格的筛选,筛选标准如下: 1. 有干货:杜绝纯可视化、统计性分析,有一定比例的讲解性文字 2. 可跑通:所有代码均经过测试,…

一文看懂怎么用 Python 做数据分析

常遇到两类朋友。一类是会爬虫但不知道如何进一步做数据分析的,一类是平常用 Excel 做分析但不太会用 Python 分析的。如果和你很像,那下面这篇系统长文会很适合你,建议先收藏。 Excel 是数据分析中最常用的工具,本文通过 Python…

数据结构—顺序表

目录 顺序表介绍 创建顺序表类型 初始化顺序表 销毁顺序表 打印顺序表 增加数据 头插 尾插 删除数据 头删 尾删 查找数据 修改指定下标的数据 整体代码 顺序表介绍 什么是顺序表? 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&a…

Java实现顺序表

目录 一、顺序表的简单理解 1、为什么我们要以数组为基础来构建顺序表呢? 2、顺序表都具有哪些功能 二、顺序表的代码实现 1、构建并且初始化顺序表 2、在顺序表中添加元素 1、判断需要添加元素的下标是否在顺序表的范围内 2、如果添加元素下标合法&#xff…

创建一个顺序表

#include <stdio.h> #include <stdlib.h> #define Size 5 //对Size进行宏定义&#xff0c;表示顺序表申请空间的大小 typedef struct Table{ //定义个顺序表结构体 int * head;//声明了一个名为head的长度不确定的数组&#xff0c;也叫“动态数组”int length;//…

顺序表的插入和删除

前言 相信通过上一篇文章&#xff08;顺序表的定义&#xff09;大家已经能动手定义一个顺序表&#xff0c;并且知道顺序表如何进行初始化的工作。当完成一个顺序表的建立和初始化后&#xff0c;我们得到的会是一个空的顺序表&#xff08;空表&#xff09;&#xff0c;所以这篇…

数组和顺序表的区别

前言 看到很多人直接将顺序表等同于数组&#xff0c;认为顺序表就是数组&#xff0c;但这样做容易造成概念混淆。 下面就对这两个概念进行解释&#xff0c;帮助大家进行区分。 什么是顺序表 在解释什么是顺序表之前&#xff0c;我们还需要了解一点基础知识。 数据结构 数据…

数据结构之顺序表:顺序表的结构及基本操作

目录 一、数据结构1.1 算法与数据结构的区别 二、顺序表2.1 顺序表的基本形式【重点】2.2 顺序表的两种基本实现方式【重点】1、一体式结构&#xff1a;2、分离式结构: 2.3 元素存储区替换与扩充1. 元素存储区的替换2. 元素存储区的扩充 2.4 顺序表的操作1. 增加元素2. 删除元素…

简洁顺序表

目录 前言 一、初始准备 二、尾插尾删 三、头插尾删 四、随机位置插入删除 五、顺序表缺陷 六、全部代码 前言 顺序表和链表都是线性表 顺序表的本质就是数组&#xff0c;能够连续存储数据 一、初始准备 建立结构体 静态版本 由于静态版本容量是固定的&#xff0c…