1.3 马尔可夫过程

article/2025/8/22 1:42:50

之前介绍的奖励、智能体、动作、观察和环境可以看成RL的一级概念。以此为基础,我们将探索RL的二级概念,包括状态(state)、事件(episode)、历史(history)、价值(value)和收益(gain/return)。

我们从最简单的马尔可夫过程(MP)开始,然后加入奖励(reward)扩展它,变成马尔可夫奖励过程(Markov reward process)。然后添加行动(action),实现马尔可夫决策过程(Markov decision processes,MDP)。

马尔可夫过程

让我们从Markov家族中最简单的开始:MP,也称为Markov链。想象一下,你面前有一个只能观察(不能对其操作)的系统。你观察到的东西叫做状态(states),系统可以根据一些动力学定律在状态之间切换。你不能影响系统,只能观察状态的变化。系统的所有可能状态形成一个称为状态空间的集合。对于MP,我们假设这组状态是有限的。你的观察形成一系列状态或一条链(chain)(这就是为什么MP也被称为马尔可夫链)。例如,看看某个城市最简单的天气模型,我们可以观察到今天是晴天还是雨天,这是我们的状态空间。随着时间的推移,一系列的观测形成了一系列的状态,例如

[晴天,晴天,下雨,晴天,…]

这被称为历史(history)

要将这样一个系统称为MP,它需要满足马尔可夫性,也就是说未来系统怎样变化只能依赖于当前状态而不依赖之前状态。换句话说,只需要一个状态就可以对系统的未来进行建模,而不需要之前的状态。

在天气的例子中,马尔可夫性将我们的模型限制为仅表示晴天之后可能会有相同概率的雨天的情况,而不管我们过去看到了多少晴天。显然这不是一个非常现实的模型,因为根据常识,我们知道明天下雨的可能性不仅取决于当前的条件,还取决于大量其他因素,例如季节、纬度以及地形地势。最近证明,即使是太阳活动对天气也有重大影响。因此,我们的例子非常naive,但了解这些限制并有意识地做出决定是很重要的。

当然,如果我们想使模型更复杂,我们总是可以通过扩展状态空间来实现,这将允许我们以更大的状态空间为代价捕获模型中更多的依赖项。例如,如果要分别捕获夏季和冬季雨天的概率,则可以将该季节信息包含在状态中。在这种情况下,状态空间将是[阳光+夏天、阳光+冬天、下雨+夏天、下雨+冬天]等等。

当系统模型符合马尔可夫特性时,可以使用**转移矩阵(transition matrix)**表示转移概率,转移矩阵是一个大小为 N × N N×N N×N的方阵,其中 N N N是模型中的状态数。矩阵中 i i i行和 j j j列的元素表示系统从状态 i i i转移到状态 j j j的概率。

例如,在晴天/雨天的例子中,状态转移矩阵可以如下所示:

SunnyRainy
Sunny0.80.2
Rainy0.10.9

在这种情况下,如果今天是晴天,那么第二天有80%的可能性是晴,有20%的可能性雨。如果我们观察到是雨天,那么天气好转的概率为10%,而第二天下雨的概率为90%。

可以用图表示MP,其中的节点对应于系统状态,边表示从状态到状态的转移概率。如果概率为0,就不画边(从一种状态到另一种状态是不可能的)。这种表示也广泛应用于自动机理论中研究的有限状态机表示。
晴天/雨天的例子
再说一遍,在MP问题中,我们的只是观察,我们没有办法影响天气,所以我们只是观察并记录我们的观察结果。

下面看一个更复杂的例子,叫做Office Worker模型,如下图Office Worker模型
实际上,我们很少有机会知道确切的转移矩阵。真实的情况是,我们只能观察到系统的状态,这也被称为事件(episodes)

Home →Coffee → Coffee → Chat → Chat → Coffee →Computer → Computer →Home
Computer → Computer → Chat → Chat → Coffee → Computer → Computer → Computer
Home → Home → Coffee → Chat → Computer → Coffee → Coffee

根据我们的观察结果估计转移矩阵并不复杂,我们只需计算每个状态的所有转移,并将它们归一化为和为1的概率。观测越多,我们的估计就越接近真实的转移概率模型。还值得注意的是,马尔可夫特性意味着平稳性(即,任何状态的转移概率分布都不会随时间而改变)。非平稳性意味着存在一些影响我们系统动力学的隐藏因素,而这个因素不包括在观测中。然而,这与马尔可夫特性相矛盾,马尔可夫特性要求无论转移的历史如何,相同状态的转移概率分布都是相同的。

在一个事件中观察到的转移概率和真实转移矩阵中的概率是不同的,我们观察到的具体事件是从真实转移矩阵模型的分布中随机抽样的,不同的抽样结果也不同,然而,抽样前后状态转移的概率保持不变,否则,马尔可夫性就不能保证了。

马尔可夫奖励过程

为了引入奖励,我们需要稍微扩展一下我们的MP模型。

首先,我们需要为从一个状态到另一个状态的转移附加上价值(value)。奖励可以用各种形式表示。最容易想到的方法是使用另一个类似于转移矩阵的方阵,矩阵中 i i i行和 j j j列的元素表示从状态 i i i转移到状态 j j j的奖励。

添加到模型中的第二件事是折扣因子( discount factor) γ \gamma γ ,它是一个从0到1(包括)的实数。

我们从MP中观察到一系列状态转移,马尔可夫奖励过程也是这样,但是对于每一种状态转移,我们都有额外的奖励信号。对于每个episode,我们将t时刻的回报(return)定义为:
G t = R t + 1 + γ R t + 2 + ⋯ G_t=R_{t+1}+\gamma R_{t+2} + \cdots Gt=Rt+1+γRt+2+

对于每个时刻,我们将return计算为后续rewards的总和,但较远的奖励将乘以折扣系数,该系数与我们距离t时刻时间的幂次方成正比。discount factor代表agent的考虑问题时目光的长远性。如果 γ = 1 \gamma=1 γ=1,那么gain正好等于所有后续奖励的总和。如果 γ = 0 \gamma=0 γ=0,gain只是当前的reward,没有任何后续状态。这种极端的取值仅在特殊情境中使用,大多数情况下, γ \gamma γ时介于0和1之间的值,例如0.9或0.99,在这种情况下,我们会考虑未来的奖励,但这个未来不是无限远的未来。而 γ = 1 \gamma=1 γ=1一般适用于短的,有限的episode的情况。

但是我们定义的 G t G_t Gt在实践中并不是很有用,因为它是根据马尔可夫奖励过程中观察到的每个特定链定义的,所以即使是在相同的state下,它也可以变化很大。然而,如果我们计算每个状态的return的数学期望,我们将得到一个更有用的量,称为状态价值
V ( s ) = E [ G ∣ S t = s ] V(s)=\mathbb{E}[G|S_t=s] V(s)=E[GSt=s]
我们在之前的Office Worker模型加入奖励,使之变成Office Worker reward process,如下图所示:
转移概率(黑色)和奖励(红色)
我们将从一个简单的例子开始: γ = 0 \gamma=0 γ=0。如何计算状态价值?我们假设初始状态为chat,根据状态转移矩阵,有50%的概率下一个状态还是chat,20%是coffee,30%是computer。当 γ = 0 \gamma=0 γ=0时,智能体的回报(return)等于下一个状态的价值。因此,如果我们想要计算聊天状态的值,那么我们需要将所有状态转移的奖励加权求和:

V ( c h a t ) = − 1 ∗ 0.5 + 2 ∗ 0.3 + 1 ∗ 0.2 = 0.3 V(chat)=-1*0.5+2*0.3+1*0.2=0.3 V(chat)=10.5+20.3+10.2=0.3
V ( c o f f e e ) = 2 ∗ 0.7 + 1 ∗ 0.1 + 3 ∗ 0.2 = 2.1 V(coffee) = 2 * 0.7 + 1 * 0.1 + 3 * 0.2 = 2.1 V(coffee)=20.7+10.1+30.2=2.1
V ( h o m e ) = 1 ∗ 0.6 + 1 ∗ 0.4 = 1.0 V(home) = 1 * 0.6 + 1 * 0.4 = 1.0 V(home)=10.6+10.4=1.0
V ( c o m p u t e r ) = 5 ∗ 0.5 + ( – 3 ) ∗ 0.1 + 1 ∗ 0.2 + 2 ∗ 0.2 = 2.8 V(computer) = 5 * 0.5 + (–3) * 0.1 + 1 * 0.2 + 2 * 0.2 = 2.8 V(computer)=50.5+(3)0.1+10.2+20.2=2.8

这样一来,computer是最有价值的状态,因此在 γ = 0 \gamma=0 γ=0的时候最好的状态转移是computer->computer。

现在有一个更棘手的问题,当 γ = 1 \gamma=1 γ=1时,价值是多少?仔细想想,答案是所有状态的价值都是无限的。这个例子中的图不包含汇状态(只进不出),当折扣因子等于1时,要考虑未来无限次状态转移。由于 γ = 0 \gamma=0 γ=0时所有的价值在短期内都是正值,所以无论起始状态如何,无穷多个正值的总和都会给我们一个无穷大的价值。

这也是我们将 γ \gamma γ引入马尔可夫奖励过程的原因之一。由于处理无穷大的价值不切实际,我们希望限制价值的范围。 γ ∈ ( 0 , 1 ) \gamma\in(0,1) γ(0,1)提供了这样的限制。如果episode的步长是有限的(例如,井字棋最多九个步长),那么就可以使用 γ = 1 \gamma=1 γ=1了。更特殊的情况是只有一个步骤,称为多臂赌博机(multi-armed bandit),每个episode只用做一个动作,就结束了。

Actions、MDP

还缺什么?还缺actions。首先,添加一组动作。其次,需要用动作来调节转移矩阵,这意味着我们的矩阵需要一个额外的动作维度,变成一个立方体。马尔可夫奖励过程变成了马尔可夫决策过程(MDP)
MDP转移矩阵
我们还是举个例子:假设有一个机器人在 3 × 3 3×3 3×3网格中,它可以执行向左、向右和向前的动作。状态是机器人的位置加方向(上、下、左、右),一共有 3 × 3 × 4 = 36 3×3×4=36 3×3×4=36个状态(机器人可以在任何位置有任意朝向)。此外,假设机器人的电机不完美,当它执行左转或右转或前进时,有10%的概率车轮打滑,机器人的位置保持不变。下图是一个例子,显示了当机器人位于网格中心且面朝上时,即状态(1,1,向上)可能发生的状态转移
grid world
到现在为止,智能体获得的return不仅取决于其最终所处的状态,还取决于导致这种状态的行动。这和我们日常生活是一致的,做一件事情即便结果是一样的,但过程不同,最后的奖励也不同。

下面讨论MDP和RL最重要的事情:策略(policy)。

Policy

policy的简单定义是,一组控制智能体行为的规则。例如前面的例子,机器人在网格世界中可以按一下规则执行操作:

到处瞎走
通过提前试探绕过障碍物
原地转圈

注意,RL中智能体的主要目标是获得尽可能多的return。不同的policy会带来不同的return,因此找到一个表现优秀的policy非常重要。

在形式上,policy定义为每种state下action的概率分布:
π ( a ∣ s ) = P [ A t = a ∣ S t = s ] \pi(a|s)=P[A_t=a|S_t=s] π(as)=P[At=aSt=s]
有趣的是,如果我们采用确定性策略,即概率为1,那么MDP就变成了马尔可夫奖励过程,因为我们用策略的概率简化转移矩阵和奖励矩阵,并去掉action维度。


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

相关文章

一文看懂马尔科夫过程

1.马尔科夫决策过程(MDPs)简介 马尔科夫决策过程是对强化学习(RL)问题的数学描述。几乎所有的RL问题都能通过MDPs来描述: 最优控制问题可以用MDPs来描述;部分观测环境可以转化成POMDPs;赌博机问题是只有一个状态的MDPs;注:虽然大部分DL问题都能转化为MDPs,但是以下所描述…

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

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

零基础学习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;我们还需要了解一点基础知识。 数据结构 数据…