一文看懂马尔科夫过程

article/2025/8/22 1:45:25

1.马尔科夫决策过程(MDPs)简介

马尔科夫决策过程是对强化学习(RL)问题的数学描述。几乎所有的RL问题都能通过MDPs来描述:

  • 最优控制问题可以用MDPs来描述;
  • 部分观测环境可以转化成POMDPs;
  • 赌博机问题是只有一个状态的MDPs;

注:虽然大部分DL问题都能转化为MDPs,但是以下所描述的MDPs是全观测的情况。

强化学习中的表述符号:


2.马尔科夫性

只要知道现在,将来和过去条件独立

定义:如果在t时刻的状态St满足如下等式,那么这个状态被称为马尔科夫状态,或者说该状态满足马尔科夫性。

  • 马尔科夫性的要点:
  • 状态St包含了所有历史相关信息
  • 或者说历史的所有状态的相关信息都在当前状态St上体现出来
  • 一旦St知道了,那么S1,S2, ... ,St-1都可以被抛弃
  • 数学上可以认为:状态时将来的充分统计量
  • 因此,这里要求环境时全观测

例子:

  • 下棋时,只关心当前局面
  • 打俄罗斯方块时,只关心当前屏幕

有了马尔科夫状态之后

  • 定义状态转移矩阵
  • 忽略时间的影响,只需要关心当前状态即做出下一步决策

注:这里的相关指问题相关,可能有一些问题无关的信息没有在St中;马尔科夫性和状态的定义息息相关。


3.状态转移矩阵

定义:状态转移概率是指从一个马尔科夫状态s跳转到后继状态s'的概率:

 

 

所有的状态组成行,所有的后继状态组成列,将得到状态转移矩阵:

 

 

 

其中,n表示状态的个数,由于P代表了整个状态转移的集合,所以用个花体。每行元素相加等于1。

我们也可以将状态转移概率写成函数的形式:

 

 

其中

 

,状态数量太多或者是无穷大(连续状态)时,更适合用状态转移函数,此时,

 

 


4.马尔科夫过程

一个马尔科夫过程(MP)是一个无记忆的随机过程,即一些马尔科夫状态的序列。

定义:马尔科夫过程可以由一个二元组定义<S, P>。

S表示了状态集合,P描述了状态转移矩阵

 

 

注,虽然我们有时候不知道P的具体值,但是通常我们假设P存在且稳定的。

当P不稳定时,不稳定环境,在线学习,快速学习。

举个栗子:

一个学生每天需要学习三个科目,然后通过测试。不过也有可能只学完两个科目之后直接睡觉,一旦挂科有可能需要重新学习某些科目。用椭圆表示普通状态,每一条线上的数字表示从一个状态跳转到另一个状态。方块表示终止状态。终止状态有两种:1是时间终止,2是状态终止。

 

 

 

 

由于马尔科夫郭晨够可以用图中的方块和线条组成,所以可以称马尔科夫过程为马尔科夫链(MDPs chain)。


6.片段

片段定义:强化学习中,从初始状态S1到终止状态的序列过程,被称为一个片段(episode),S1, S2,... ,ST

  • 如果一个任务总以终止状态结束,那么这个任务被称为片段任务;
  • 如果一个任务没有终止状态,会被无限执行下去,这被称为连续性任务。

还是来看上面的例子:

假设初始状态是“科目一”,从这个马尔科夫链中,我们可能采样到如下的片段:

 

  • “科目一”,“科目二”,“睡觉”
  • “科目一”,“科目二”,“科目三”,“通过”,“睡觉”
  • “科目一”,“玩手机”,“玩手机”,…, “玩手机”,“科目一”, “科目二”, “睡觉”
  • “科目一”,“科目二”,“科目三”,“挂 科”,“科目二”,“科目三”,“挂科”,挂科“科目一”,“科目二”,“科 目三”,“挂科”, “科目三”,“通过”, “睡觉”

分别用 s1 ∼ s7 代表 “科目一”, “科目二”, “科目三”, “通过”, “挂科”, “玩手机”, “睡觉”

 

 

 


7.马尔科夫奖励过程(MRP)

马尔可夫过程主要描述的是状态之间的转移关系,在这个转移关系上 赋予不同的奖励值即得到了马尔可夫奖励过程。

定义:马尔可夫奖励 (Markov Reward Process, MRP) 过程由一个四元组组成 〈S, P,R, γ〉。

 

  • S 代表了状态的集合
  • P 描述了状态转移矩
     
  • R 表示奖励函数,R(s) 描述了在状态 s 的期望奖励,
     

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

相关文章

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

引言 在概率论及统计学中&#xff0c;马尔可夫过程&#xff08;英语&#xff1a;Markov process&#xff09;是一个具备了马尔可夫性质的随机过程&#xff0c;因为俄国数学家安德雷马尔可夫得名。马尔可夫过程是不具备记忆特质的&#xff08;memorylessness&#xff09;。换言…

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

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

Python数据分析期末复习归纳

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

Python数据分析师特训营84节

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

Python数据分析:混淆矩阵

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

Python数据分析和处理

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

Python数据分析之理论知识

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

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

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

如何用Python进行数据分析?

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

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

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

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

个人博客 Python大作业——爬虫可视化数据分析数据库&#xff08;简介篇&#xff09; Python大作业——爬虫可视化数据分析数据库&#xff08;爬虫篇&#xff09; Python大作业——爬虫可视化数据分析数据库&#xff08;可视化篇&#xff09; Python大作业——爬虫可视化数…

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

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

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

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

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

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

数据结构—顺序表

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

Java实现顺序表

目录 一、顺序表的简单理解 1、为什么我们要以数组为基础来构建顺序表呢&#xff1f; 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. 删除元素…