强化学习:蒙特卡洛方法(MC)

news2025/2/9 9:06:52

引入蒙特卡洛方法例子

   以抛硬币为例,将结果(正面朝上或反面朝上)表示为作为随机变量 X X X ,如果正面朝上则 X = + 1 X=+1 X=+1 ,如果反面朝上,则 X = − 1 X=-1 X=1,现在要计算 E [ X ] E[X] E[X]
   我们通常很容易想到直接用定义来计算,因为我们知道正面朝上和反面朝上的概率都是为 0.5 ,显然我们根据模型知道的结果,因此我们把这种方法称为 基于模型 的计算,如下图。
在这里插入图片描述
   但是,我们通常是不知道模型参数的,那么我们能不能在不知道模型参数的情况下去计算呢?答案是肯定的。以抛硬币为例,可以抛硬币很多次,然后将结果求平均,这就是蒙特卡洛的思想。
在这里插入图片描述

蒙特卡洛方法:基础算法

   理解该算法的关键是理解如何将基于模型的算法转化为无模型算法。
   通过前面学习,我们知道 策略迭代有 策略评估和策略更新 两步,其中一个关键量为 q π k ( s , a ) q_{πk}(s,a) qπk(s,a),而 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) 我们是根据模型来计算的。
在这里插入图片描述

   在策略迭代中, q π k ( s , a ) q_{πk}(s,a) qπk(s,a) 是依赖模型来计算的,那么还有其他不依赖于模型的方法吗?用 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) 定义计算,即通过大量采样 g ( s , a ) g(s,a) g(s,a) 来计算。
在这里插入图片描述
   我们来看一下这个算法的伪代码:
在这里插入图片描述

MC Basic 算法基本介绍

  policy iteration 算法怎么转变成为 model-free 呢?我们知道 policy iteration 有策略评估和策略提升两步,然后 policy improvement 针对每一个状态 s s s 展开得到如下式子,我们可以很容易知道这里边非常核心的一个量就是这个 q π k ( s , a ) q_{πk}(s,a) qπk(s,a)
在这里插入图片描述
  我们要计算 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) 有两种方法,一种是依赖与模型的,就是 value iteration 算法所用的;另一种就是不依赖与模型的,而是根据 action value 最原始的定义,这就是蒙特卡洛算法的核心。

在这里插入图片描述

  我们来看一下蒙特卡洛计算 action value 的过程。用 g ( s , a ) g(s,a) g(s,a) 表示在任意状态 s s s 下根据策略 π k π_k πk 采取行为 a a a 得到一个 episode 的 return , g ( s , a ) g(s,a) g(s,a) G t G_t Gt 的一个采样。如果我们有很多个 g ( s , a ) g(s,a) g(s,a) ,那么我们可以根据定义求解得到 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) ,如下图:

在这里插入图片描述

实例:MC Basic 算法

  下面我们通过例子来进一步学习 MC Basic,尽管 MC Basic 实际应用效率很低,但这个算法对于后面理解基于蒙特卡洛的 model-free 的强化学习算法是非常关键的。

在这里插入图片描述
  如上图所示,给出的策略并不是最好的,现在我们使用 MC Basic 算法找到最优策略。MC Basic 算法与 policy iteration 一样分为 策略评估策略优化 两步。我们很容易知道上例共有 45 45 45 ( s , a ) (s,a) (s,a) , 9 s t a t e s states states × 5 a c t i o n s actions actions ,现在我们以 s 1 s_1 s1 的 5 个 a c t i o n action action 为例进行讲解。

步骤1:策略评估
  由于给定的例子环境是确定的,在给定的策略下每一条路径都是相同的,所以我们只采样一次。采样结果如下:

在这里插入图片描述

步骤2:策略优化

  由第一步可知, q π 0 ( s 1 , a 2 ) q_{π0}(s_1,a_2) qπ0(s1,a2) = q π 0 ( s 1 , a 2 ) q_{π0}(s_1,a_2) qπ0(s1,a2) 是求得的最大值,因此我们可以任意选一个,从而得到最优策略。

MC Exploring Starts 算法

  前面的 MC Basic 算法 虽然算法原理比较清晰易懂,但缺点是不实用,而 MC Exploring Starts 算法 是对 MC Basic 算法 的推广,变得更加实用。那我们是怎么实现的呢?

  首先,我们引进 visit ,指 episode 中每出现一个 状态-动作 时,就称为对 状态-动作 进行了一次访问。在网格世界中,遵循策略 π π π 我们会得到一个 episode 如下图:

在这里插入图片描述

在 MC Basic 当中我们用的策略 Initial-visit ,即对于上例,我们只考虑 ( s 1 , a 2 ) (s_1,a_2) (s1,a2) ,用后面的 return 来计算 q π ( s 1 , a 2 ) q_π(s_1,a_2) qπ(s1,a2) ,我们可以发现这样对数据的使用效率并未充分利用,因为 ( s 1 , a 2 ) (s_1,a_2) (s1,a2) 后面的我们仍然可以看成一个 episode ,如下图:

在这里插入图片描述
这样我们就可以同时得到在当前的 episode 中其他 状态-动作 的 q π q_π qπ ,这其中也有两种方法,first-visit 和 every-visit 。first-visit 是指若有重复的 状态-动作 出现,那么只用第一次出现的去计算 q π q_π qπ ;every-visit 会对每次出现的的 状态-动作 都会去进行一次计算 q π q_π qπ

  MC Exploring Starts 算法 除了充分利用数据外,还能高效更新策略。MC Basic 算法中,要得到所有的 episode 后才能进行更新策略 ,而 MC Exploring Starts 算法 是每得到一个 episode 就立刻进行更新策略,这样效率就能大大提升。

综上,我们得到 MC Exploring Starts 算法 的伪代码,如下:
在这里插入图片描述

MC ε ε ε-Greed 算法: without Exploring Starts

  MC Exploring Starts 算法 中 Exploring Starts 条件是必要的,Exploring 表示从每个 ( s , a ) (s,a) (s,a) 出发会得到相应的 episode ,再根据后边生成的这些 reward 来估计 return,然后进一步估计 action value 。而 action-value 有两种方式得到,一种是从当前状态开始,另一种是从其他状态开始经过当前状态,若采取第二种方法则存在一种情况,就是如果恰恰有一个 state-action 它没有被访问到,而这个 action 恰恰又可能是最优的,为了得到最优的,我们还是要确保每一个 ( s , a ) (s,a) (s,a) 都能够被访问到,这就是 Starts 的含义。

  那我们能不能去掉 MC Exploring Starts 算法 中的 Exploring Starts 条件呢?方法是引入 soft policy , soft policy 指对每一 个action 都有可能去做选择。在 soft policy 下,一个足够长的 episode 就可以确保能访问到每个 ( s , a ) (s,a) (s,a) ,因此我们只需要从一个或者几个 ( s , a ) (s,a) (s,a) 出发就能访问到其他所有的 ( s , a ) (s,a) (s,a) ,这样我们就可以去掉 Exploring Starts 这个条件了。

   soft policy 我们是用什么来表示呢?这里我们用 ε − G r e e d ε-Greed εGreed policy ,其数学表达式如下:

在这里插入图片描述
在任意一个状态 s s s 都有一个greedy action (所对应的 最大的 q π ( s , a ∗ ) q_π(s,a^*) qπ(s,a)),这时候的 ε − g r e e d y ε -greedy εgreedy 就会给这个greedy action 一定的选择概率。选择 greedy action 的概率始终比其它的任何一个action 的概率都是要大的。

   使用 ε − g r e e d y ε -greedy εgreedy 的原因是他能够去平衡 exploitation 和 exploration ,即平衡 充分利用数据与探索 。当 ε = 0 ε=0 ε=0 时,算法就会变得少探索,数据利用较充分;当 ε = 1 ε=1 ε=1 时,它成为一个均匀分布,探索较多,而数据利用较低。

   现在,我们来看一下 ε − g r e e d y ε -greedy εgreedy 与 MC-based RL 算法是怎么结合的。在 MC Basic 和 MC Exploring Starts 这两个算法中,策略更新的方法是求出 每个行为对应的 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) ,并在所有可能的策略当中去选择最大的 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) 对应的 action 作为新的策略,如下图:

在这里插入图片描述

   ε − g r e e d y ε -greedy εgreedy 并不是在所有可能的策略当中去找,而是在 ∏ ε ∏_ε ε 中找,如下图:

在这里插入图片描述
其伪代码如下:
在这里插入图片描述

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

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

相关文章

JDK常用的数据类型【1】 ——HashMap(分享篇)

x mod 2^n x & (2^n - 1) 1. 拿到 key 的 hashCode 值 2. 将 hashCode 的高位参与运算,重新计算 hash 值 3. 将计算出来的 hash 值与 (table.length - 1) 进行 & 运算数据结构 1.B树 和 B树 B树叶子节点可以存放多个元素B树的叶子节点之间是有指针的 红…

网络安全|渗透测试入门学习,从零基础入门到精通—收集信息篇

目录 前面的话 1、收集域名信息 1.1、Whois查询 ​编辑1.2、备案信息查询 2、收集敏感信息 3、收集子域名信息 3.1、子域名检测工具 3.2、搜索引擎枚举 3.3、第三方聚合应用枚举 3.4、证书透明度公开日志枚举 本章小结 前面的话 本人喜欢网络完全的一些知识&#xff…

老油条辞职信写好了,00后卷王的自述,我难道真的很卷?

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff0…

出现报错Invalid bound statement (not found): xxx.xxxMapper.方法名 时的几种异常排除方法

报错信息:Invalid bound statement (not found): com.ruoyi.enterpriseman.trade.mapper.TradeEnterpriseMapper.selectTradeEnterpriseList 1.mapper.xml中的namespace和实际的mapper文件不一致 这个问题其实很好解决,瞪大眼睛,仔仔细细看看…

[SSM]Maven详解

目录 Maven 自动化构建工具 Maven简介 Maven的核心概念 maven约定的目录结构 仓库 POM文件 生命周期、命令、插件 Maven在IDEA中的应用 IDEA集成maven IDEA创建Maven版java工程 IDEA创建Maven版web工程 IDEA中导入Maven工程(module) 依赖管理…

Windows 离线安装mysql5.7

一、下载MySQL5.7最新版 1、官网地址 https://downloads.mysql.com/archives/community/ 2、下载MySQL5.7最新版 下载下图所示的安装包: 二、安装MySQL5.7 1、解压 将刚才下载压缩包解压搭配目录C:\software\mysql-5.7.41,(路径大家可…

背完这195道软件测试面试题,帮你轻松拿下提前批offer

前言: 最近在整理字节,阿里,腾讯,京东的面试题,挑了一部分在四个大厂面试题中出现频率比较高的,发现还是基础知识比较多,废话不多说,你们自己看看,这里小编只放了面试题&…

电动超声波硅胶洁面仪单片机开发方案

近来,网红超声波洁面仪受到人们喜爱,特别是爱化妆的女性朋友,常用来清洁脸部肌肤。在本方案中,洁面仪IC采用宇凡微YF单片机,我们提供多种洁面仪方案,根据不同功能需求有多个洁面仪芯片可供选择。 一、超声波…

价值5k的软件测试企业级实战项目,只为了回答你软件测试如何学!

学习软件测试如何学,在回答这个问题之前,我先分析下,在企业中做项目整个测试流程是什么样的,你清楚了整个企业的测试流程,就会清楚企业做测试需要什么?从而也就会明白如何去学测试。 1、需求: …

JDBC --- Java的数据库编程

目录 🍈一、数据库编程的必备条件 🍉二、什么是 JDBC JDBC 的优势 🍊三、JDBC 使用流程 以及 常用接口和类的讲解 🍡0. 前置工作 🍭1. 引入依赖 🍬2. 数据库连接Connection 🍬3. 创建操…

11-基于51单片机电子密码锁门禁(实物图+原理图+源程序+仿真+论文)全套资料

编号: 011 本系统采用 51单片机 24C02芯片矩阵键盘 继电器 开锁指示灯 LCD1602液晶 蜂鸣器 而成 1.单片机型号:STC89C52/51、AT89C52/51、AT89S52/51可以任选。程序通用 2.采用矩阵按键输入、1602液晶显示、继电器模拟开锁、发光二极管为开锁指示灯,继电器是可以外…

适配器模式(九)

不管怎么样,都要继续充满着希望 上一章简单介绍了建造者模式(八), 如果没有看过, 请观看上一章 一. 适配器模式 引用 菜鸟教程里面的 适配器模式介绍: https://www.runoob.com/design-pattern/adapter-pattern.html 适配器模式(Adapter Pattern&#…

出海品牌直播带货:虚拟主播的优势与挑战,以及未来趋势揭秘

随着全球化的发展和网络技术的进步,海外直播带货成为了品牌拓展海外市场的一种新方式。而在这个数字化时代,虚拟主播的出现给海外直播带货带来了全新的可能性。 在传统直播带货中,品牌需要派遣代表或明星代言人亲自现场演示产品,…

15、Nginx---slice模块,大文件分片请求

Nginx的slice模块可以将一个请求分解成多个子请求,每个子请求返回响应内容的一个片段,让大文件的缓存更有效率。。 HTTP Range请求: HTTP客户端下载文件时,如果发生了网络中断,必须重新向服务器发起HTTP请求&#xff0…

2023年网络安全专业的前景怎么样?

网络安全与我们每一个人都息息相关,无论是企业还是个人,现在都非常重视网络安全。而且网络安全是一个新兴的行业,人才需求量远远大于供给,所以在薪资福利上具有很大的优势,并且对于初学者而言,很多人依旧担…

【JVM系列】GC算法介绍

文章目录 概述对象存活判断垃圾收集算法标记 -清除算法复制算法标记-整理算法分代收集算法 概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程…

企业操作手册有必要弄成在线版本吗?

企业操作手册是对企业运营的各个环节进行详细记录、说明和规范化,以指导企业各类人员在工作中的行为、方法和流程。 下面是编写企业操作手册的基本步骤: 1.明确编写内容。制定编写计划,明确需要编写哪些方面的操作手册和具体内容&#xff0…

抗战时期的15W电台竟能传送到千里之外?

我们大部分人应该都看过谍战影视剧,在剧中不管是敌方、友方还是我方,要想传递情报,基本都是通过无线电台进行联络的。而一旦离开无线电台,谍报人员之间的联络沟通就会变得十分困难。 在电影《永不消逝的电波》中,我们…

Hyper-V管理器无法连接到服务器,Hyper-V主机计算服务无法打开,vmcompute.exe应用程序无法正常启动(0xc0000606)的一种解决方法

Hyper-V无法连接到服务器,发现Hyper-V主机计算服务打不开,然后找到“C:\WINDOWS\System32\vmcompute.exe”,双击报错0xc0000606,用Microsoft 错误查找工具找到是程序不支持“控制流保护(CFG)”,…

vr消防隐患排查软件应用到加油站的好处

传统的隐患辨识排查安全培训方式主要以理论培训为主,现有的实操培训力量较弱且加油站涉及危险环境现有的实操培训难以满足实际需求,如何高效进行加油站安全隐患辨识与排查? 加油站火灾VR安全隐患排查系统是一种基于VR虚拟现实技制作术的智能化安全检查工…