[RL] 马尔可夫决策过程基础

news2024/9/20 21:53:55

文章结构

目录

一、马尔可夫过程

马尔可夫性质

二、马尔可夫奖励过程

回报(Return)

贝尔曼方程(Bellman equation)

贝尔曼方程解析解

蒙特卡洛方法​

马尔可夫决策过程​

MDP和马尔可夫过程/马尔可夫奖励过程的区别

马尔可夫决策过程

贝尔曼期望方程(Bellman Expectation Equation)

备份图

Q 函数备份图

 动态规划(dynamic programming)

预测&控制

马尔可夫决策过程控制

一、策略迭代算法

举例:策略评估

最优策略

贝尔曼最优方程

二、价值迭代算法

价值迭代例子:最短路径

价值迭代 vs. 策略迭代


一、马尔可夫过程

强化学习中的环境一般就是一个马尔可夫决策过程。如果要用强化学习去解决一个实际问题,第一步要做的事情就是把这个实际问题抽象为一个马尔可夫决策过程,也就是明确马尔可夫决策过程的各个组成要素。这篇文章从马尔可夫过程出发,再到马尔可夫奖励过程,最后引出马尔可夫决策过程。

马尔可夫性质之前,介绍随机过程:随机过程研究随时间演变的随机现象(例如天气随时间的变化、城市交通随时间的变化)

随机过程的某时刻的状态只取决于上一时刻的状态时,具有马尔可夫性质

马尔可夫性质

需要明确的是,具有马尔可夫性并不代表这个随机过程就和历史完全没有关系。虽然t+1时刻的状态只与t时刻的状态有关,但是t时刻的状态其实包含了t-1,通过这种链式的关系,历史的信息被传递到了现在。(马尔可夫性可以大大简化运算,因为只要当前状态可知,所有的历史信息都不再需要了,利用当前状态信息就可以决定未来)

马尔可夫过程指具有马尔可夫性质的随机过程,也被称为马尔可夫链

从某个状态出发,到达其他状态的概率和必须为 1,即状态转移矩阵P的每一行的和为 1。 马尔可夫过程举例

6 个状态的马尔可夫过程的简单例子。其中每个绿色圆圈表示一个状态,每个状态都有一定概率(包括概率为 0)转移到其他状态,其中s6为终止状态(terminal state),因为它不会再转移到其他状态,可以理解为它永远以概率 1 转移到自己,状态之间的虚线箭头表示状态的转移,箭头旁的数字表示该状态转移发生的概率。 

二、马尔可夫奖励过程

马尔可夫过程的基础上加入奖励函数r和折扣因子γ,就可以得到马尔可夫奖励过程

回报G_t(Return)

进入s2得到奖励-2,表明不希望进入s2,进入s4获得最高奖励10

贝尔曼方程(Bellman equation)

价值函数

状态的价值(value):在马尔可夫奖励过程中,一个状态的期望回报(即从这个状态出发的未来累积奖励的期望).所有状态的价值组成了价值函数(value function)

贝尔曼方程解析解

蒙特卡洛方法

运用蒙特卡洛方法时,我们通常使用重复随机抽样,然后运用概率统计方法来从抽样结果中归纳出我们想求的目标的数值估计。一个简单的例子是用蒙特卡洛方法来计算圆的面积。的正方形内部随机产生若干个点,细数落在圆中点的个数,圆的面积与正方形面积之比就等于圆中点的个数与正方形中点的个数之比。如果我们随机产生的点的个数越多,计算得到圆的面积就越接近于真实的圆的面积。

马尔可夫决策过程

MDP和马尔可夫过程/马尔可夫奖励过程的区别

马尔可夫过程和马尔可夫奖励过程都是自发改变的随机过程;而如果有一个外界的“刺激”来共同改变这个随机过程,就有了马尔可夫决策过程(Markov decision process,MDP)。来自外界的刺激称为智能体(agent)的动作,在马尔可夫奖励过程(MRP)的基础上加入动作,就得到了马尔可夫决策过程(MDP)。

 MDP 与 MRP 非常相像,主要区别为 MDP 中的状态转移函数和奖励函数都比 MRP 多了动作a作为自变量。

不同于马尔可夫奖励过程,在马尔可夫决策过程中,通常存在一个智能体来执行动作。例如,一艘小船在大海中随着水流自由飘荡的过程就是一个马尔可夫奖励过程,它如果凭借运气漂到了一个目的地,就能获得比较大的奖励;如果有个水手在控制着这条船往哪个方向前进,就可以主动选择前往目的地获得比较大的奖励。马尔可夫决策过程是一个与时间相关的不断进行的过程,在智能体和环境 MDP 之间存在一个不断交互的过程。

马尔可夫决策过程

状态价值函数:在 MDP 中,由于马尔可夫性质的存在,策略只需要与当前状态有关,不需要考虑历史状态。回顾一下在 MRP 中的价值函数,在 MDP 中也同样可以定义类似的价值函数。但此时的价值函数与策略有关,两个不同的策略在同一个状态下的价值也很可能不同,因为不同策略会采取不同的动作,之后会遇到不同的状态,以及获得不同的奖励,所以它们的累积奖励的期望也就不同,即状态价值不同。

动作价值函数:不同于 MRP,在 MDP 中,由于动作的存在,额外定义一个Q 函数(Q-function)/动作价值函数

状态价值函数和动作价值函数之间的关系:所有动作函数就是状态函数

贝尔曼期望方程(Bellman Expectation Equation)

备份图

备份图(backup diagram)或 回溯图,它们所示的关系构成了更新或备份操作的基础,而这些操作是强化学习方法的核心。

这些操作将价值信息从一个状态(或状态-动作对)的后继状态(或状态-动作对)转移回它。每一个空心圆圈代表一个状态,每一个实心圆圈代表一个状态-动作对。

第一层加和是对叶子节点进行加和,往上备份一层,我们就可以把未来的价值(s^′的价值)第二层加和是对动作进行加和,得到黑色节点的价值后, 再往上备份一层,就会得到根节点的价值,即当前状态的价值。

Q 函数备份图

对于 Q 函数,现在的根节点是 Q 函数的一个节 点。Q 函数对应于黑色的节点。下一时刻的 Q 函数对应于叶子节点,有 4 个黑色的叶子节点。

 动态规划(dynamic programming)

基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。接下来介绍如何用动态规划的思想来求解在马尔可夫决策过程中的最优策略。

基于动态规划的强化学习算法主要有两种:一是策略迭代(policy iteration),二是价值迭代(value iteration)。其中,策略迭代由两部分组成:策略评估(policy evaluation)策略提升(policy improvement)。具体来说,策略迭代中的策略评估使用贝尔曼期望方程来得到一个策略的状态价值函数,这是一个动态规划的过程;而价值迭代直接使用贝尔曼最优方程来进行动态规划,得到最终的最优状态价值。

预测&控制

在马尔可夫决策过程里面,**预测和控制**都可以通过动态规划解决。要强调的是,这两者的区别就在于, 预测问题是给定一个策略,我们要确定它的价值函数是多少。而控制问题是在没有策略的前提下,要确定**最佳的价值函数**以及对应的**决策**方案。实际上,这两者是递进的关系,在强化学习中,我们通过解决预测问题,进而解决控制问题。

方格中,智能体可以采取上、 下、左、右 4 个动作。碰壁则原位置不动,并且得到 -1 的奖励。除了将智能体到 A 和 B 采取任意一个动作,都会移动到 A′ ,B ′ ,其他动作的奖励均为 0。 预测:给定一个策略:在任何状态中,智能体的动作模式随机,上、 下、左、右的概率均为 0.25。预测问题:求出在这种策略下的价值函数。图 2.16c 是折扣因子为 γ = 0.9 时对应的价值函数。控制:问题背景与预测问题的相同,唯一区别:不再限制策略,动作模式未知。 求出在**所有可能的策略下最优的价值函数,也就得到了最优策略。

马尔可夫决策过程控制

当取得最佳价值函数后,我们可以通过对 Q 函数进行最大化来得到最佳策略:

寻找最佳策略的过程就是马尔可夫决策过程的控制过程。马尔可夫决策过程控制就是去寻找一个最佳 策略使我们得到一个最大的价值函数值

一、策略迭代算法

策略迭代由两个步骤组成:策略评估和策略改进(policy improvement)

策略评估这一过程用来计算一个策略的状态价值函数。回顾贝尔曼期望方程:

举例:策略评估

最优策略

贝尔曼最优方程

二、价值迭代算法

介绍最优策略

策略迭代中的策略评估需要进行很多轮才能收敛得到某一策略的状态函数,这需要很大的计算量,尤其是在状态和动作空间比较大的情况下。

可能出现这样的情况:虽然状态价值函数还没有收敛,但是不论接下来怎么更新状态价值,策略提升得到的都是同一个策略。

可以被认为是一种策略评估只进行了一轮价值更新的策略迭代算法。

价值迭代例子:最短路径

例子:格子有个goal,每个格子即时汇报-1,目标0,

第一次,-1+gamma*0

最终:离左上角格子距离,收敛,得到每个格子最优action

价值迭代 vs. 策略迭代

策略迭代分两步。首先进行策略评估,即对当前已经搜索到的策略函数进行估值。得到估值后,我们进行策略改进, 即把 Q 函数算出来,进行进一步改进。不断重复这两步,直到策略收敛。价值迭代直接使用贝尔曼最优方 程进行迭代,从而寻找最佳的价值函数。找到最佳价值函数后,我们再提取最佳策略。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

循环机制(event loop)之宏任务和微任务

一、前言 js任务分为同步任务和异步任务,异步任务又分为宏任务和微任务,其中异步任务属于耗时的任务。 二、宏任务和微任务有哪些? 宏任务:整体代码script、setTimeout、setInterval、setImmediate(Node.js&#xff…

nginx conf.d 模块化配置

文章目录 前言nginx conf.d 模块化配置1. 概述2. 优势3. 配置 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&#xff0c…

关卡1-2:Python关卡

关卡1-2:Python关卡 一、python实现wordcount二、通过本地VSCODE连接internStudio与debug2.1使用本地的VSCODE连接InternStudio2.2 debug插件安装2.3 debug进行时2.3.1 代码准备2.3.2 选择python解释器2.3.3 打断点 一、python实现wordcount 采用python实现经典任务…

【C++】红黑树模拟实现STL库中的map与set

目录 改造红黑树 红黑树的迭代器 map的模拟实现 set的模拟实现 在上一篇博客中&#xff0c;我们实现了红黑树&#xff0c;但是红黑树节点中的值是pair<K,V> _kv形式&#xff0c;这种红黑树适用于map的底层&#xff0c;那么如果我们想要红黑树节点中的值是key的形式&a…

神经网络处理器模拟器的一点思考

一 神经网络处理器 通常基于FPGA的神经网络处理器进行部署某种网络&#xff0c;考虑的因素较多&#xff0c;具体包括网络模型的不同&#xff0c;涵盖不同的算子、激活函数、调度策略等等&#xff1b;具体硬件实现&#xff0c;涉及神经网络处理器并行度、硬件资源消耗&#xff0…

【C++高阶】哈希函数底层原理探索:从算法设计到实现优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;模拟实现 map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀哈希 &#x1f4da;1. unord…

MinerU、Magic-PDF、Magic-Doc

文章目录 一、关于 MinerU二、Magic-PDF1、简介2、项目全景3、流程图4、子模块仓库 三、Magic-PDF 上手指南1、配置要求2、安装配置1. 安装Magic-PDF2. 下载模型权重文件3. 拷贝配置文件并进行配置4. 使用CUDA或MPS加速推理CUDAMPS 3、使用说明1) 通过命令行使用直接使用更多用…

鑫创SSS1700USB音频桥芯片USB转IIS芯片

鑫创SSS1700支持IIC初始外部编&#xff08;EEPROM选项),两线串行总线&#xff08;I2C总线&#xff09;用于外部MCU控制整个EEPROM空间可以通过MCU访问用于主机控制同步的USB HID外部串行EEPROM&#xff08;24C02~24C16&#xff09;接口&#xff0c;用于客户特定的USB视频、PID、…

有空多刷刷算法题:回溯理论基础、leecode-77:组合、leecode:组合总和 III

回溯算法 一、理论基础 参考代码随想录&#xff0c;仅作记录学习之用 回溯是递归的副产品&#xff0c;只要有递归就会有回溯因为回溯的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案&#xff0c;如果想让回溯法⾼效⼀些&#xff0c;可以加⼀些剪枝…

华为OD机试2024年C卷D卷 - 构成指定长度字符串的个数/字符串拼接(Java)

华为OD机试&#xff08;C卷D卷&#xff09;2024真题目录 题目描述&#xff1a;构成指定长度字符串的个数 (本题分值200) 给定 M&#xff08;0 < M ≤ 30&#xff09;个字符&#xff08;a-z&#xff09;&#xff0c;从中取出任意字符&#xff08;每个字符只能用一次&#x…

PostgreSql创建触发器并增加IF判断条件

在 PostgreSQL 中&#xff0c;可以使用触发器&#xff08;Trigger&#xff09;来在表上定义自定义的插入&#xff08;INSERT&#xff09;、更新&#xff08;UPDATE&#xff09;和删除&#xff08;DELETE&#xff09;操作的行为。触发器是与表相关联的特殊函数&#xff0c;它们在…

docker的学习(二):docker常用的高级技术总结

简介 docker的一些知识点的总结 UnionFS 分层&#xff0c;轻量级&#xff0c;高性能的文件系统&#xff0c;支持一层层的叠加功能来修改文件系统。 一次同时加载多个文件系统&#xff0c;把各层文件系统叠加起来&#xff0c;最终文件系统会包含所有底层的文件和目录&#xf…

【java SE语法篇】1.运算符

目录 1. 运算符和表达式2. 算数运算符3. 隐式转换4. 强制转换5. 自增自减运算符6. 赋值运算符7. 扩展运算符8. 关系运算符9. 逻辑运算符9.1 & 和 | 的使用&#xff1a;9.2 ^&#xff08;异或&#xff09;的使用&#xff1a;9.3 !&#xff08;取反&#xff09;的使用&#x…

2024年技校大数据实验室建设及大数据实训平台整体解决方案

随着信息技术的迅猛发展&#xff0c;大数据已成为推动产业升级和社会进步的重要力量。为适应市场需求&#xff0c;培养高素质的大数据技术人才&#xff0c;技校作为职业教育的重要阵地&#xff0c;亟需加强大数据实验室的建设与实训平台的打造。本方案旨在提出一套全面、可行的…

如何制作u盘启动盘_制作U盘启动盘详细图文教程

如何制作u盘启动盘&#xff1f;一个U盘如果不做成启动盘的话&#xff0c;就只能当存储用。如果一个U盘做成启动盘的话&#xff0c;可以通过U盘启动进入PE&#xff0c;我们就可以对电脑进行重装系统或分区等一些操作使用了&#xff0c;这个主要用于电脑需要救急的情况下使用。用…

jmeter录制脚本做压力测试

1.录制 第一步 设置浏览器代理&#xff0c;我用的火狐。谷歌、IE也是都可以。 我把端口号改成8082了&#xff0c;这个无所谓的&#xff0c;只要不冲突就可以。 紧接着要往浏览器里添加证书。直接搜索证书。把jmeter的证书导入浏览器。 2.在jmeter里设置 添加线程组、http代…

Another-redis-desktop-manager+ffmpeg

一、Another-redis-desktop-manager 1.点击链接下载&#xff1a;Release v1.6.6 qishibo/AnotherRedisDesktopManager GitHub 2. 傻瓜式安装 二、ffmpeg 1.下载&#xff1a;Builds - CODEX FFMPEG gyan.dev 2.下载对应版本 3.添加环境变量&#xff1a;添加到path里&am…

Intent的基本使用

1.Intent是什么&#xff1f; Intent用于Android程序中各组件&#xff08;Activity、BroadcastReceive、Service&#xff09;的交互&#xff0c;并且可以在组件之间传递数据&#xff0c;分为显式Intent和隐式Intent。 Intent是各个组件之间信息沟通的桥梁&#xff0c;既能在Ac…

【24年7月】最新Hexo+GitHubPages搭建个人博客【一】

Hexo 是一个高效的静态网站生成器&#xff0c;使用简洁的 Markdown&#xff08;或其他模板引擎&#xff09;编写内容&#xff0c;支持丰富的插件和主题&#xff0c;允许用户轻松定制网站。它通过将文本转换为静态HTML页面&#xff0c;使得网站加载速度快&#xff0c;易于部署&a…

Linux操作系统的有关常用的命令

1.linux系统的概述 1.1 什么是Linux系统? Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦 兹&#xff08;Linus Benedict Torvalds&#xff09;于1991年10月5日首次发布&#xff0c;它主要受…