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

这篇具有很好参考价值的文章主要介绍了强化学习:蒙特卡洛方法(MC)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引入蒙特卡洛方法例子

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

蒙特卡洛方法:基础算法

   理解该算法的关键是理解如何将基于模型的算法转化为无模型算法。
   通过前面学习,我们知道 策略迭代有 策略评估和策略更新 两步,其中一个关键量为 q π k ( s , a ) q_{πk}(s,a) qπk(s,a),而 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) 我们是根据模型来计算的。
强化学习:蒙特卡洛方法(MC)

   在策略迭代中, 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)
   我们来看一下这个算法的伪代码:
强化学习:蒙特卡洛方法(MC)

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)
强化学习:蒙特卡洛方法(MC)
  我们要计算 q π k ( s , a ) q_{πk}(s,a) qπk(s,a) 有两种方法,一种是依赖与模型的,就是 value iteration 算法所用的;另一种就是不依赖与模型的,而是根据 action value 最原始的定义,这就是蒙特卡洛算法的核心。

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

  我们来看一下蒙特卡洛计算 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)

实例:MC Basic 算法

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

强化学习:蒙特卡洛方法(MC)
  如上图所示,给出的策略并不是最好的,现在我们使用 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:策略评估
  由于给定的例子环境是确定的,在给定的策略下每一条路径都是相同的,所以我们只采样一次。采样结果如下:

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

步骤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)

在 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 ,如下图:

强化学习:蒙特卡洛方法(MC)
这样我们就可以同时得到在当前的 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)

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 ,其数学表达式如下:

强化学习:蒙特卡洛方法(MC)
在任意一个状态 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 作为新的策略,如下图:

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

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

强化学习:蒙特卡洛方法(MC)
其伪代码如下:
强化学习:蒙特卡洛方法(MC)文章来源地址https://www.toymoban.com/news/detail-482604.html

到了这里,关于强化学习:蒙特卡洛方法(MC)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蒙特卡洛方法的收敛性和误差

    目录 1.收敛性 2.误差 3.减少方差的各种技巧 4.效率 5.优缺点 蒙特卡罗方法作为一种计算方法,其收敛性与误差是普遍关心的一个重要问题。由此可以总结出蒙特卡洛方法的优缺点。

    2024年02月06日
    浏览(40)
  • Python学习28:计算圆周率——蒙特卡洛法

    描述 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬ 蒙特卡洛(M

    2024年02月08日
    浏览(50)
  • 蒙特卡洛算法

    定义 :蒙特卡洛算法是以概率和统计的理论、方法为基础的一种数值计算方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解,故又称随机抽样法或统计实验法。 适用范围 :可以较好的解决多重积分计算、微分方程求解、积

    2024年02月11日
    浏览(66)
  • 蒙特卡洛算法详解

    蒙特卡洛算法是20世纪十大最伟大的算法之一,阿法狗就采用了蒙特卡洛算法。 蒙特卡洛方法也称为 计算机随机模拟方法,它源于世界著名的赌城——摩纳哥的Monte Carlo(蒙特卡洛)。 它是基于对大量事件的统计结果来实现一些确定性问题的计算。其实质就是将问题转化为一个

    2024年02月02日
    浏览(48)
  • 数学建模-蒙特卡洛模拟

    2024年02月15日
    浏览(54)
  • 蒙特卡洛树搜索(MCTS)详解

    蒙特卡洛树搜索是一种经典的树搜索算法,名镇一时的 AlphaGo 的技术背景就是结合蒙特卡洛树搜索和深度策略价值网络,因此击败了当时的围棋世界冠军。它对于求解这种大规模搜索空间的博弈问题极其有效,因为它的核心思想是 把资源放在更值得搜索的分枝上 ,即 算力集

    2024年01月18日
    浏览(58)
  • 多数问题求解之蒙特卡洛与分治法

    多数问题(Majority Problem)是一个有多种求解方法的经典问题,其问题定义如下: 给定一个大小为 n n n 的数组,找出其中出现次数超过 n / 2 n/2 n /2 的元素 例如:当输入数组为 [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] [5, 3, 5, 2, 3, 5, 5] [ 5 , 3 , 5 , 2 , 3 , 5 , 5 ] ,则 5 5 5 是多数(majority)。 本文将

    2024年03月14日
    浏览(46)
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中。要计算总的反射光,每个入射方向的贡献,必须将他们在半球上相加: 为入射光线  与法线  的夹角,为方便计算可以使用法线向量和入射向量(单位化)的乘积表示。  对于基于图像的光照,入射

    2024年02月03日
    浏览(62)
  • 【Python数学建模常用算法代码——蒙特卡洛模型】

    蒙特卡洛方法的理论支撑其实是概率论或统计学中的大数定律。基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果。下面我们以三个经典的小实验来学习下蒙特卡洛算法思想。 实验原理 在正方形内部有一

    2024年02月02日
    浏览(52)
  • C# 随机法求解线性规划问题 蒙特卡洛

    线性规划问题: max=3 x1+2 x2 x1+2 x2=5 2 x1+x2=4 4 x1+3 x2=9 x1=0 x2=0 正确的结果:x1=1.5; x2=1, max z=6.5

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包