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

news/2025/2/13 6:39:31/

引入蒙特卡洛方法例子

   以抛硬币为例,将结果(正面朝上或反面朝上)表示为作为随机变量 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.ppmy.cn/news/384301.html

相关文章

百度 flash html5自切换 多文件异步上传控件webuploader基本用法

双核浏览器下在chrome内核中使用uploadify总有302问题&#xff0c;也不知道如何修复&#xff0c;之所以喜欢360浏览器是因为帮客户控制渲染内核&#xff1a; 若页面需默认用极速核&#xff0c;增加标签&#xff1a;<meta name"renderer" content"webkit&quo…

PDF文档用什么软件打开?

PDF文档&#xff0c;在办公领域使用很广&#xff0c;那么&#xff0c;什么软件可以打开PDF文档呢&#xff1f;能打开PDF文档的软件统称为PDF阅读器&#xff0c;但是不同的PDF阅读器&#xff0c;功能相差还是很大的。如何主要用于编辑pdf&#xff0c;那就用adobe pdf或者金山pdf…

用IE浏览器打开pdf文件出来的是空白页面,怎么办?

启动Acrobat Reader并执行“文件”菜单“首选项”子菜单中的“一般”命令&#xff0c;打开“一般首选项”对话框&#xff0c;然后复选其中的“网络浏览器集成”选项(最好一并复选该选项卡中的“允许后台下载”选项&#xff0c;以便加快浏览速度)&#xff0c;最后重新启动IE及Ac…

怎样让 pdf 文件直接下载而非在浏览器里打开

问题&#xff1a;点击 <a href"18禁.pdf">下载</a> 的时候&#xff0c;Chrome 会自动调用内置的 pdf 阅读器打开&#xff0c;我只想让用户下载这个文件&#xff0c;有什么办法呢&#xff1f; 答案&#xff1a;<a href"18禁.pdf" download&g…

用VBA打开PDF文件

Shell "RUNDLL32.EXE URL.DLL,FileProtocolHandler " & myfile, vbMaximizedFocus myfile是PDF文件完整路径

如何打开PDF文档?必看的5种方法

经常接触各种电子文档的人对于PDF肯定特别熟悉&#xff0c;但对于另一部分日常更多使用office的人来说&#xff0c;PDF格式相对陌生&#xff0c;那么如何才能打开PDF文件查看呢&#xff1f; 打开PDF文档的工具一般包含PDF阅读器和编辑器&#xff0c;如果我们打开PDF仅是为了查…

用电脑怎么打开pdf文件阅读

有的pdf文件不能打开阅读怎么办&#xff1f;阅读效果差想让阅读效果更好一些怎么办&#xff1f;其实这些问题用pdf阅读器就可以解决啦。 轻快pdf阅读器是一个非常便捷的pdf阅读器&#xff0c;它具有个性化的阅读模式&#xff0c;支持单页以及书本浏览&#xff0c;还有提供精准搜…

怎样让pdf 文件直接下载而在浏览器里直接打开

经常出现点击pdf文件直接跳转到预览&#xff0c;以下是实现不跳转&#xff0c;直接下载文件的方法使用axios之前请求pdf路径&#xff0c;转换成流文件&#xff0c;然后可以直接进行进行下载&#xff0c;就不会直接打开pdf文件了 //使用axios直接请求pdf完整路径 axios({method…