马尔科夫决策过程(Markov Decision Process)揭秘

RL基本框架、MDP概念

MDP是强化学习的基础。MDP能建模一系列真实世界的问题,它在形式上描述了强化学习的框架。RL的交互过程就是通过MDP表示的。RL中Agent对Environment做出一个动作(Action),Environment给Agent一个反馈(Reward),同时Agent从原状态(S_{t})变为新状态(S_{t+1})。这里的反馈可以是正、负反馈;Agent执行动作是根据某个策略(Policy)进行的。

可以看到,强化学习和传统机器学习的区别是 , 它不能立即得到标记,而只能得到一个暂时的反馈(多为人为经验设定)。因此可以说强化学习是一种标记延迟的监督学习 。

思考:MDP中,Environment是全部可观测的,部分可观测问题也能转化为MDP,如何理解?

Markov Property

假设状态的历史序列:h_{t}={s_{1}, s_{2}, ... s_{t}},状态s_{t}具有马尔科夫性,当且仅当

p(s_{t+1}|s_{t})=p(s_{t+1}|h_{t}),即“当给定现在(present),未来(future)独立于过去(past)”。

换言之,马尔科夫性是指不具备记忆特质。未来的状态与任何历史的状态无关,仅与当前状态相关。

Markov Chain

马尔科夫链(Markov Chain)和马尔科夫过程(Markov Process)基本等价。(具备离散状态的马尔可夫过程,通常被称为马尔可夫链)。例如下图中有4个状态,箭头表示状态转移,数字表示转移概率。从一个节点出发的概率之和为1.

我们将状态转移矩阵用P表示,其中每个元素为p(s_{t+1}=s_{}^{'}|s_{t}=s):

同样P的每一行之和为1.举一个具体例子

上图的马尔科夫过程(MP)有7个状态,图中标出了每个状态去相邻状态或保留原地的概率。从s_{3}出发的采样转移结果可能为:1) s_{3}s_{4}s_{5}s_{6}s_{6}  2) s_{3}s_{2}s_{3}s_{2}s_{1} 3) s_{3}s_{4}s_{4}s_{5}s_{5}等等,可以说马尔科夫过程(Markov process)是一个具备了马尔科夫性质随机过程

马尔科夫奖励过程(MRP)

MRP等于Markov Chain加上奖励,即MRP=Markov Chain+Reward。其中奖励函数(Reward function)是关键,R(s_{t}=s)=E[r_{t}|s_{t}=s]。

现在,针对上述例子,把奖励放进去,假设s_{1}对应奖励为+5,s_{7}对应奖励为+10,其余状态奖励为0,我们得到R的向量为:[5,0,0,0,0,0,10]。

值函数(Value Function)

首先定义反馈值折扣求和Discounted sum),其中\gamma\epsilon (0,1)G_{t}=R_{t+1}+\gamma R_{t+2}+\gamma ^{2}R_{t+3}+\gamma ^{3}R_{t+4}+...+\gamma ^{T-t-1}R_{T}

再定义值函数,V_{t}(s)=E[G_{t}|s_{t}=s]=E[R_{t+1}+\gamma R_{t+2}+\gamma ^{2}R_{t+3}+\gamma ^{3}R_{t+4}+...+\gamma ^{T-t-1}R_{T}|s_{t}=s],表示从t时刻开始的未来的奖励

为啥需要折扣因子\gamma

1. 避免在循环MRP中返回无限大的反馈值

2. 对未来的不确定性需要被完全表示出来

3. 有一层类似金融背景的含义:即时的反馈总是能赚取比延迟反馈更多的利益;对人类来说,更倾向于即时反馈

4. 若使用没有折扣的MRP,如\gamma=1,那么未来的反馈值就等于即时的反馈值;如\gamma=0,那么相当于只关心即时的反馈值

MRP的奖励计算举例

\gamma=0.5,那么上图中,对于采样路径s_{4}s_{5}s_{6}s_{7}的奖励值是:0+0.5*0 +0.25*0 + 0.125*10 =1.25;对于采样路径s_{4}s_{3}s_{2}s_{1}的奖励值是:0+0.5*0 +0.25*0+ 0.125*5=0.625;对于采样路径s_{4}s_{5}s_{6}s_{6}的奖励值是:0

值函数的计算

利用Bellman equation(贝尔曼方程),即

V(s)包括两部分,即时奖励未来奖励的折扣求和

它的另一种表达方式是:

Bellman equation描述了状态(或状态的值)的迭代关系,举例说明:

假如有以下状态和状态转移矩阵(下图左),那么对于s_{1}状态,它和它的下一个状态s_{1}s_{2}s_{4}的状态转移关系和值迭代关系如下图右所示。

        

Bellman equation也可以写成矩阵的形式,

即在MRP中,V=R+\gamma PV,以及V=(I-\gamma P)^{-1}R

因为矩阵的逆求解复杂度为O(N^{3}),其中N为状态数。因此直接线性代数求解只适用于较小规模的MRP问题。

真正通用的求解方法是迭代算法,如动态规划算法(DP)、蒙特卡洛算法(MC)、时序差分算法(TD)。其中MC和TD都是无模型强化学习,适用于不知道概率转移情况的模型, 但要注意,无模型强化学习并不代表不能被MDP描述, 而是指其中的参数是未知的。

蒙特卡洛算法(MC)

MC用“采样”代替直接的策略评估,然后求平均累积奖励,作为期望累积奖励。关于某个状态的奖励返回的经验样本越多,能够得到的平均奖励值就越接近于期望的状态奖励值,井且收敛于这个值。具体如下

以下算法是等价的:

对于前面例子中s_{4}的反馈值V(s_{4}),可能有如下采样过程和奖励返回值,从而计算平均值:

对于采样路径s_{4}s_{5}s_{6}s_{7}的奖励值是:0+0.5*0 +0.25*0 + 0.125*10 =1.25;对于采样路径s_{4}s_{3}s_{2}s_{1}的奖励值是:0+0.5*0 +0.25*0+ 0.125*5=0.625;对于采样路径s_{4}s_{5}s_{6}s_{6}的奖励值是:0,以此类推,最终求平均即可。

动态规划算法(DP)

如果说MC是一种基于一个事件又一个事件的算法(Episode by Episode),那么DP就是一个基于动作选择的算法(Step-by-Step)。两者具有非常多的相似之处。具体如下

其中核心语句是第4行,即Bellman equation

Markov Decision Process (MDP)

MDP是带有决策的MRP,即MDP=MRP+actionsMDP=MRP+decisions。MDP一般用5元组表示,即(S,A,P,R,\gamma)。其中S是有限状态的集合;A是有限动作的集合;P是状态转移矩阵,对于每个action,有P(s_{t+1}=s'|s_{t}=s,a_{t}=a);R是反馈函数(或奖励值函数),每个状态对应一个值或每个状态-动作对(State-Action)对应一个值,即R(s_{t}=s,a_{t}=a)=E(r_{t}|s_{t}=s,a_{t}=a);\gamma仍是折扣因子,\gamma\epsilon (0,1)

MDP中策略(Policy)是指每个状态下应该执行什么动作,即它指定了动作的分布。策略表示为:\pi (a|s)=P(a_{t}=a|s_{t}=s),即它是与时间t无关的。对于任意的t>0,有A_{t}~\pi (a|s)

MDP和MRP的转换

上图中,等式左边是MRP,等式右边是MDP;右边对动作a求和,消掉a,因此左边都没有a

MDP和MRP的比较

上图中,左边是MRP,右边是MDP;右边比左边多了一层a节点(黑色节点),表示动作;MRP直接从s状态映射(转移)到s'状态,而MDP先把状态s映射到动作a,通过\pi (a|s),再把动作a和状态s的组合映射到新的状态s',通过P(s'|s,a);体现了MDP=MRP+actions

MDP中的值函数

在策略\pi下,状态s的值函数为:v^{\pi }(s)=E_{\pi }[G_{t}|s_{t}=s],表示在初始状态为s的情况下采取策略\pi得到的累积期望奖励值。动作值函数为:q^{\pi }(s,a)=E_{\pi }[G_{t}|s_{t}=s,A_{t}=a],二者的关系是:

以上两式展开,变为迭代形式

值函数为

动作值函数为

这两公式叫Bellman  Expectation  Equation(贝尔曼期望方程)

思考:贝尔曼期望方程只是比贝尔曼方程多了个期望E_{\pi }

V^{\pi }Q^{\pi }的关系

分别将q^{\pi }(s,a)的展开式插入v^{\pi }(s)的公式,以及将v^{\pi }(s)的展开式插入q^{\pi }(s,a)的公式得到更复杂的两个迭代式,如下

上式v^{\pi }(s)的含义可用一颗三层的树描述,根节点是要求的v^{\pi }(s),黑色节点是对所有动作求和,底层白色节点是对所有状态求和。

类似的,q^{\pi }(s,a)也可以用一颗树描述,根节点是要求的q^{\pi }(s,a),中间白色节点是对所有状态求和,底层黑色节点是对所有动作求和。

策略评估(Policy Evaluation)

首先关于MDP和MRP的区别,做一个形象的补充:MRP更像随波逐流,MDP更像有人掌舵;和前文说的MDP=MRP+actions一致。

策略评估是指,给定一个策略\pi,求该策略下的值函数V^{\pi },越大越好

下面举例说明策略评估的过程

假设一艘船有两个方向,向左或向右,还是有7个状态,如图所示,在s_{1}的奖励为+5,在s_{7}的奖励为+10,其余奖励为0,因此有R=[5,0,0,0,0,0,10]

当策略是一直往left,同时取\gamma=0时,利用

迭代计算,最终收敛得到V^{\pi }=[5,0,0,0,0,0,10]

思考一:策略不变,同时取\gamma=0.5时,得到的V^{\pi }是多少?

思考二:策略变为一半概率left,一半概率right(即P(\pi(s)=left)=0.5,P(\pi(s)=right)=0.5),同时取\gamma=0.5时,得到的V^{\pi }是多少?

上式也可以写为

以及MRP形式:

策略搜索(Policy Search)

最优状态值函数v^{*}(s)对应一个最优策略,后者在所有策略中取得最大值函数,即

v ^{*}(s)= max_{\pi }(v ^{\pi}(s))

而最优策略就是\pi ^{*}(s)=arg\, \, \, max_{\pi }(v ^{\pi}(s))。当最优值被找到,就认为MDP被解决。一般认为只存在唯一的最优值函数,但可能会存在多个最优策略。

为了寻找最优策略,需要最大化q^{*}(s,a),即

对于任意MDP,总是存在确定性的最优策略;如果已知q^{*}(s,a),就能立即得到最优策略

策略求解之策略迭代

策略迭代包括两个步骤:策略评估(在当前策略更新各个状态的值函数);策略更新(基于当前的值函数,采用\varepsilon-贪心算法找到当前最优的策略),即\pi ^{'}=greedy(v^{\pi})

迭代过程的形象化描述如上图。伪代码如下

思考:怎么证明策略一直在提升,且策略迭代一定能收敛?

最优值函数是在贝尔曼最优方程满足时达到的,即

上面两式互相插入,得到

策略求解之值迭代

值迭代也是将贝尔曼最优方程作为更新规则

在每一次值迭代中都能找到让当前值函数最大的更新方式, 并且用这种方式来更新值函数。不断更新迭代,直到值函数不再发生变化。完整伪代码如下

另一个等价的实现算法

思考:如何证明策略的改进和值函数的改进是一致的? 

策略迭代和值迭代的对比

无论策略迭代还是值迭代,都属于动态规划算法。

策略迭代包括:策略评估 和 策略提升(或策略更新)

值迭代包括:找到最优值函数 和 策略抽取;这里不需要重复两个动作,因为一旦值函数是最优的,那么相应的策略就一定是最优的,也就是收敛了。所以你会发现,策略迭代的算法有两层loop,而值迭代的算法只有一层。

值迭代中寻找最优值函数也可以看成是一种策略提升(因为有个max操作)和 简化的策略评估的结合体(因为无论收敛与否,都只有一次v(s)的赋值)。

策略迭代更像是一种累计平均的计算方式,而值迭代更像是一种单步最好的方式。 从速度来说,值迭代更加迅速,特别是在策略空间较大的时候。从准确度来说,策略迭代更接近于样本的真实 分布。

MDP和RL扩展链接

https://github.com/ucla-rlcourse/RLexample/tree/master/MDP

REINFORCEjs: Gridworld with Dynamic Programming


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu安装过程记录

软件准备 硬件 Acer电脑,AMD a6-440m芯片 64g优盘一个,实际就用了不到5g。 Ubuntu :官网 下载Ubuntu桌面系统 | Ubuntu 下载桌面版Ubuntu 22.04.3 LTS LTS属于稳定版 u盘系统盘制作软件 Rufus :Rufus - 轻松创建 USB 启动…

【编程基础心法】「创建模式系列」让我们一起来学编程界的“兵法”设计模式(工厂模式)

【编程基础心法】「创建模式系列」让我们一起来学编程界的“兵法”设计模式(工厂模式) 设计模式之间的千丝万缕工厂模式简单工厂方法简单工厂定义多方法模式多个静态方法模式简单工厂模式的问题 工厂方法模式定义工厂抽象接口工厂方法存在的问题 抽象工厂…

Python中字符串列表的相互转换详解

更多资料获取 📚 个人网站:ipengtao.com 在Python编程中,经常会遇到需要将字符串列表相互转换的情况。这涉及到将逗号分隔的字符串转换为列表,或者将列表中的元素连接成一个字符串。本文将深入讨论这些情景,并提供丰富…

高防CDN可以更好的防御网站被攻击

高防CDN是在原服务器的基础上配置了DDoS高防、 CC防护、CDN加速来确保线上业务安全快速地运行。使用高防CDN后网站服务器会被隐藏在后端,使攻击者无法攻击到网站服务器,只能攻击部署在前端的CDN节点,每当检测到是攻击流量的时候还会自动对其进…

对比分析:黑盒测试 VS 白盒测试

一、引言 在软件开发过程中,测试是确保产品质量的关键环节。其中,黑盒测试和白盒测试是两种常见的测试方法。本文将详细解析这两种测试方法的定义、特点,同时通过具体示例进行对比分析。 二、黑盒测试 黑盒测试,又称功能测试&…

SpaceSight、Echo 联合升级,打造更懂场景的 AI 「超级门店」

当各领域都在谈论「增长」,门店业务的增长又该从哪里开始着手…… 在日常运营中,「高效」和「细致」是否无法同时实现?「任务下达」和「任务执行」之间有多大偏差? 在客户洞察上,如何用「过去」的数据预测「未来」&…

Spring Cloud Stream 4.0.4 rabbitmq 发送消息多function

使用 idea 创建 Springboot 项目 添加 Spring cloud stream 和 rabbitmq 依赖 pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchem…

力扣100 相同的数(两种解法)

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true 示例 2&…

一键抠图|3个智能AI抠图软件实现抠图自由!

听说你对如何利用AI抠图技术去除白色背景感兴趣&#xff1f;设想一下&#xff0c;你有一张某人站在白色背景前的照片&#xff0c;而你只希望能留下这个人物。在过去&#xff0c;你可能需要花费大量时间和精力手动进行抠图。但现在&#xff0c;AI技术来拯救你了&#xff01;AI可…

180天Java从入门到就业-Day04-01Java程序流程控制介绍、Java分支结构if语句

1.程序流程控制介绍 1.1 流程控制结构介绍 流程控制语句是用来控制程序中各语句执行顺序的语句,可以将语句组合成完成一定功能的逻辑模块。 一个程序会包含三种流程控制结构:顺序结构、分支结构、循环结构 顺序结构在没有使用程序流程控制语句(if-else语句、switch-case语…

【JS】检索树结构,并返回结果节点的路径与子节点

【JS】检索树结构&#xff0c;并返回结果节点的路径与子节点 需求代码效果展示 需求 一个树结构&#xff0c;需要添加条件检索功能&#xff0c;检索结果依然是一个树结构&#xff0c;包含所有的符合要求的节点&#xff0c;以及他们到根节点的路径&#xff0c;与他们的子节点 …

社区分享|简米Ping++基于MeterSphere开展异地测试协作

上海简米网络科技有限公司&#xff08;以下简称为“简米”&#xff09;是国内开放银行服务商&#xff0c;高新技术企业&#xff0c;中国支付清算协会会员单位。自2014年成立至今&#xff0c;简米长年聚焦金融科技领域&#xff0c;通过与银行、清算组织等金融机构合作&#xff0…

知识小课堂:在光伏电站中发生绝缘阻抗异常的排查方法

【摘要】近几年&#xff0c;光伏发电技术迅猛发展&#xff0c;光伏扶贫电站及分布式光伏使光伏发电走进千家万户。然而光伏发电设备运行期间仍存在隐患。及时发现并解决*常见异常运行故障&#xff0c;可以很大地提高光伏发电设备可利用率&#xff0c;是保证光伏发电设备正常运行…

会声会影2024软件还包含了视频教学以及模板素材

会声会影2024中文版是一款加拿大公司Corel发布的视频编软件。会声会影2024官方版支持视频合并、剪辑、屏幕录制、光盘制作、添加特效、字幕和配音等功能&#xff0c;用户可以快速上手。会声会影2024软件还包含了视频教学以及模板素材&#xff0c;让用户剪辑视频更加的轻松。 会…

【ArcGIS微课1000例】0078:创建点、线、面数据的最小几何边界

本实例为专栏系统文章:讲述在ArcMap10.6中创建点数据最小几何边界(范围),配套案例数据,持续同步更新! 文章目录 一、工具介绍二、实战演练三、注意事项一、工具介绍 创建包含若干面的要素类,用以表示封闭单个输入要素或成组的输入要素指定的最小边界几何。 工具位于:数…

有没有数字化转型服务提供商推荐?企业数字化转型要如何做?

企业数字化转型涉及将数字技术全面集成到组织的各个方面&#xff0c;深刻地重塑其运营方式并为客户提供价值。这不仅仅是将已经存在的东西自动化&#xff0c;而是代表了一种重要的文化变革&#xff0c;赋予企业不断挑战既定规范、创新和适应的能力。从运营和供应链管理&#xf…

音视频之旅 - 基础知识

图像基础知识 像素 像素是图像的基本单元&#xff0c;一个个像素就组成了图像。你可以认为像素就是图像中的一个点。在下面这张图中&#xff0c;你可以看到一个个方块&#xff0c;这些方块就是像素 分辨率 图像&#xff08;或视频&#xff09;的分辨率是指图像的大小或尺寸。…

家庭医生上门预约小程序源码系统 附带完整的搭建教程

在当前的医疗服务市场中&#xff0c;患者往往需要前往医院或诊所进行就诊&#xff0c;这不仅浪费了时间和精力&#xff0c;还可能增加交叉感染的风险。因此&#xff0c;开发一款家庭医生上门预约小程序源码系统&#xff0c;可以让患者在家中方便快捷地预约医生上门服务&#xf…

让我们向您介绍葡萄酒中的皮诺家族

对于那些喜欢浏览商店里的葡萄酒通道或餐厅的葡萄酒菜单的人来说&#xff0c;你可能也注意到了类似名称的葡萄酒&#xff0c;即灰皮诺和黑皮诺葡萄酒。这葡萄酒有什么区别&#xff1f;他们有任何相似之处吗&#xff1f;今天&#xff0c;我们将一探究竟&#xff01;让我们了解一…

Python设计模式之创建型-单例模式(Singleton)

目录 作用 适用场景 使用模块 使用装饰器 使用元类 __new__方法单例模式 总结 更多关于Python的相关技术点&#xff0c;敬请关注公众号&#xff1a;CTO Plus后续的发文&#xff0c;有问题欢迎后台留言交流。 注意&#xff1a;本代码示例环境Python版本使用最新的Python3…