Lecture 2:马尔可夫决策

简介: Lecture 2:马尔可夫决策

上节课说了强化学习的思想就是agent与环境不断地交互从而产生很多数据,强化学习算法利用产生的数据修改自身的动作策略,再与环境交互,产生新的数据,并利用新的数据进一步地改善自身的行为,经过数次迭代学习之后,agent最终就能学会完成给定任务的最优解。

图像识别、语音识别等解决的是感知问题,强化学习解决的是决策问题。人工智能的终极目标就是结合感知实现智能决策。我们现在要想的第一个问题就是什么样的问题可以使用强化学习来解决,也就是我们要解决问题的框架是什么样子的。前人已近给出了,这个框架就是马尔可夫决策过程,英文是Markov decision processes简称(MDP)。这节课的笔记是先从Markov processes(马尔可夫过程),或者说是Markov chain(马尔可夫链)最基本的思想开始。当我们加入奖励到Markov processes中的话,我们就有了Markov Reward Processes,加入actions之后,就有了Markov Decision Process。如果你要使用强化学习解决问题的话,那么你的第一步就是使得你的问题转化为马尔可夫决策过程。如:在优化控制的问题当中,我们将数学模型转化为差分动力学问题,这里其实我们可以将其转化为连续的Markov Decision Process;正对部分可观测问题,我们不仅可以从MDP的角度考虑这些问题,实际上任何部分可观测问题都可被完全转换成MDP;还有一个问题就是Bandits,就只有一个state,像商品推荐系统,阿里就有团队在从事这方面相关的工作。

Markov Process

MDP的本质是什么?它其实是一个概念性的东西,叫做Markov Property,它的核心思想就是系统的下一个状态仅与当前状态有关,而与之前的状态无关:

另一种理解方式就是,对于任何拥有Markov Property的问题,你从某个state s开始,有一个后续状态,你实际上就可以定义从一个状态转移到下一个状态的概率,以一定的概率值转移到一定的后继状态。

一个Markov Process基本上是一个随机的过程,对于这个随机过程的定义是,有一个随机状态的序列,这个状态会具有类似于随机的状态序列s1,s2...这种。这个序列会具有Markov Property,这其实就是Markov Process的定义。定义这个序列所需要的仅是一个状态空间S和一个转移概率。截至到目前为止的这些定义里面没有actions,也没有rewards,整个的状态转移由转移概率矩阵中的状态空间来定义。举例来说的话就是下图,也称作马尔可夫链,里面没有涉及奖励和动作,只有状态转移概率。

我们可以从中sample episodes,sample一个序列,一个从初始状态到终止状态得到的状态序列。我们可以将上图转化为一个状态转移矩阵:

Markov Reward Process

截至到目前为止,我们还没有讨论过reinforcemnt learning,因为还没有rewards,没有actions。让我们加入一些机制。第一步我们先加入一些reward,这样Markov Process就变成了Markov Reward Process。其实就是带有Value判断的Markov Process,这些Value会告诉我们,这些状态有多好。所以我们需要给Markov Process添加两样东西reward function R和discount factor gamma。

R代表的是我们能够从这个state获得多少奖励,它只是当前的奖励,我们的目标是最大化累积的rewards的总量,这是我们在增强学习中所关心的,所以我们要构建Markov Reward Process,我们要把所有东西加在一起,但是对于R,它只是告诉我们,当前时刻这一步,时间在T这个时刻,状态s的时候,时间T+1可以获得改奖励。

这时,我们之前所讲的情况就会变成上图所示的情况。我们所关心的是在整个序列决策过程中,我们能够得到的奖励总和是多少。这个Gt才是我们强化学习的学习目标。

这里我们没有计算期望,G是随机的,这里的G只是一个样本。折扣因子决定的就是我们的agent是更喜欢现在的reward还是未来的reward。使用折扣因子的愿意是我们没有一个确定的model,也就是对未来的不确定性的估计。想象一下我们只是利用Markov Process来对环境进行建模,我们在构建这个Markov Proces,我们并没有一个关于环境的完美模型,然而我们认为我们已经提出一个很不错的计划,但我们不完全相信我们的评估。总的来说就是对环境的不确定性做出一个估计。

之前说了期望的问题,由于我们策略的随机性,导致我们的G也是随机的,因此我们无法用G来衡量一个状态的好坏。我们用Value function来评估一个状态的好坏。如果你在state s,你能得到的total reward将会是多少?因为在很多情况下,策略、环境是随机的,我们需要在随机的Markov process中进行状态的评估。

我们将状态值函数公式化的话就如上图所示,用于衡量在状态s可能得到的奖励是多少。让我们举个具体的例子的话就是下图所示:

我们以之前上课的例子计算c1的value,我们有四个不同的sample,它们的不同在于他们有不同的采样序列。我们的sample是随机的,并不是说我们的value也是随机的,而是这些随机变量的期望。

接下来我们讨论是强化学习里面比较重要的知识,在我们编写程序的时候可能会经常用到。它被称为Bellman方程,它的基本思想是对Value function进行递归分解。公式如下图所示:

用矩阵的形式来表示的话,我们的贝尔曼方程就能表示成下面的式子:

对于上面这个方程,它是一个线性的代数方程,我们可以很容易地将其求解出来。但是一旦遇到更加复杂的问题的话Markov Decision Process就不好做了。所以这种性质只利于评估reward的大小,一旦我们想要最大化我们的reward的话,事情会变得更难。但是在目前阶段我们是可以直接对其进行求解的。求解方式如下:

上面的式子就是求解MDP的方法。由于上述方法的算法复杂度太高,因此,这并不是一个典型的可操作性的解决办法。对于大规模的马尔可夫决策过程并不适用。这些只是我们强化学习算法做决策的基本知识。这种方法可以找出在这个状态的value是多少。

Markov Decision Processes

MDP会更加复杂一点,它需要引入的是动作。如下图所示:

状态转移概率现在是依赖我们所采取的行动的。引入动作之后,我们的student markov decision就会变成下图所示情况:

现在的话我们需要考虑的就是我们如何来做决策,我们定义一个policy,如下图所示:

这个policy是随机的,是在给定状态s下一个关于action的概率分布。这其实就是我们agent control,它实际上是一个随机转移矩阵。随机这个概念其实很有用,它可以使得我们的agent可以进行探索。

在之前我们定义了value function,现在我们加入了动作,因此在MDP中value function的定义就如下图所示:

在Value function中我们加了一个下标policy来告诉我们在这个policy下,我们的状态有多好。

同样的话,我们可以得到状态动作值函数的贝尔曼方程(下面这个公式其实是是在加了动作之后的,属于Markov Decision Process):

                                       qπ(s,a)=Eπ[Rt+1+γq(St+1,At+1)|St=s,At=a]��(�,�)=��[��+1+��(��+1,��+1)|��=�,��=�]

下面是上述两种公式的具体推到:

字太差,这里把各个公式后面的中文再打一遍:

1.理解:状态s下采取动作a的概率。乘以当状态s下采取动作a能获得的奖励(去除原文中“的概率”)。

2.上标“ ‘ ”代表下一时刻的状态或者说是动作。

3.在状态s下采取动作a,我们就能获得环境反馈给我们的一个奖励Ras���,和对未来状态能获得奖励的一个评估值Vπ(s)��(�′),由于转移到下一个状态会是随机的(环境的随机性导致),所以我们要再乘以一个概率Pass���′�

概率乘以值就是期望,所以跟上面基于期望的推导是吻合的。

现在的话我们总结一下贝尔曼方程:

你可以用下面这个图示进一步理解一下上面的公式:

以上的这些公式并没有告诉我们什么是最大奖励的方式,我们真正关心的MDP是弄清楚,最好的方式是怎样的。也就是我们如何寻找一条最优的路径来解决我们的问题。我们定义最优值函数和最优状态动作值函数,然后对其优化求解。

总的来说的话就是我们每次选取最大的那个值函数或则说是动作值函数。但是贝尔曼方程是一个非线性的,因此我们用Matlab工具对其求解的话也比较困难。

Extensions to MDPs

下面这部分老师是没有讲的,以后我要是变厉害了再来给补充上吧,先把这个视频看完。

 

 

 

 

 

 

 

我的微信公众号名称:深度学习与先进智能决策

微信公众号ID:MultiAgent1024

公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!

本文是自己学习David Silver课程的学习笔记:原视频可以在油管或者B站上搜到。

PPT的连接如下:http://www0.cs.ucl.ac.uk/staff/D.Silver/web/Teaching.html。网速慢的话可以点击这里

相关文章
|
Android开发 开发者
解决No version of NDK matched the requested version问题
一个本来好好的项目,突然在运行的时候报错: No version of NDK matched the requested version 21.0.6113669. Versions available locally: 20.1.5948944 网上很多人建议在build.gradle中添加ndk,如下: android { ... ndkVersion '20.1.5948944' } 复制代码 也确实可以解决问题,但是本来一个对ndk版本没有强依赖的项目,现在固定在一个版本上,其他开发者也必须有这个具体版本才能正常编译运行。
2297 0
|
29天前
|
人工智能 并行计算 监控
大模型应用:拆解大模型算力需求:算力是什么?怎么衡量?如何匹配?.64
本文系统解析大模型算力核心概念:从基础定义(类比工厂效率)、核心指标(FLOPS、精度影响、显存带宽)到模型-硬件匹配公式与实战优化(量化、多卡分片、参数调优),覆盖RTX 4090/A100等主流显卡适配策略,助你精准选型、高效部署。
699 25
|
4月前
|
传感器 人工智能 数据可视化
构建AI智能体:五十三、反应式应急+深思式优化:反应速度与规划智慧的平衡
智能体系统设计的混合架构研究 本文探讨了智能体系统的两种基本范式及其融合架构。反应式智能体采用"感知-行动"模式,具有响应速度快、资源消耗低的特点,适用于紧急场景;深思熟虑智能体采用"感知-推理-行动"模式,具备复杂问题求解能力,但计算成本高。研究表明,最先进的解决方案是分层混合架构:底层反应层处理紧急任务,上层深思层负责战略规划,二者通过动态交互机制协作。这种架构在扫地机器人等应用场景中展现出显著优势,既能快速应对突发情况,又能执行长期规划任务。
498 11
|
9月前
|
Web App开发 前端开发 JavaScript
Element UI框架中自定义input组件的placeholder样式。
确保这些样式在你的应用程序CSS文件中定义,且该文件已正确加载到项目中。通过以上方法,可以控制Element UI组件中input的placeholder样式,使其满足特定的设计要求。这些更改都是基于CSS伪元素进行的,因此并不会对DOM结构产生改变,保持了原有结构的简洁和高效。
813 12
|
11月前
|
机器学习/深度学习 数据可视化 大数据
基于马尔可夫链的状态转换,用概率模型预测股市走势
本文探讨了马尔可夫链在股市分析中的应用,通过定义市场状态和构建转移矩阵,揭示短期波动与长期趋势的概率特征。模型基于“无记忆性”假设,量化状态转换概率,帮助评估风险、识别模式并制定策略。例如,计算稳态分布可预测市场长期平衡态。尽管模型简化了复杂动态,但仍为投资决策提供了数据支持。同时,文章强调其局限性,如外部冲击影响和状态定义主观性,建议结合其他工具综合分析。未来可探索与机器学习融合,提升市场理解深度。
1116 7
基于马尔可夫链的状态转换,用概率模型预测股市走势
|
人工智能 数据可视化 程序员
精心整理自学python的宝藏网站,不看亏死
精心整理自学python的宝藏网站,不看亏死
1337 4
精心整理自学python的宝藏网站,不看亏死
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
513 3
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
并行计算 TensorFlow 算法框架/工具
Windows10下CUDA9.0+CUDNN7.0.5的完美安装教程
该文介绍了如何在Windows 10上安装CUDA 9.0和cuDNN 7.0.5以支持Tensorflow-gpu 1.10.0。首先,解释了安装CUDA的原因,然后详细步骤包括:从NVIDIA官网下载CUDA 9.0,选择自定义安装并关闭不必要的组件,检查显卡驱动版本以决定是否安装Display Driver,最后确认安装成功。接着,下载cuDNN需要注册NVIDIA账户,解压后将文件复制到CUDA安装目录。整个过程旨在确保与Tensorflow-gpu 1.10.0的兼容性。
1266 2
|
数据可视化
R语言离散时间马尔可夫链(Markov chain)模型分类案例可视化分析
R语言离散时间马尔可夫链(Markov chain)模型分类案例可视化分析

热门文章

最新文章

下一篇
开通oss服务