第五章 蒙特卡洛算法

一、MC basic 算法

如前述, 将策略迭代算法中"策略评估" 的部分, 由原来基于模型直接计算, 替换成基于多次实验采样来计算, 就得到了MC basic,所以MC basic的过程几乎与策略迭代算法相同

  • 求解MC basic的步骤
    Step1(稍有改动): (策略评估)Policy evaluation (PE)

    • 目的依然是更新state value

    • 首先从一个状态中的一个动作出发, 进行N次实验(episode)来收集数据

    • 比如在状态s1 , 我们多次从动作a1开始行动 并累计得到的结果(计算 discount return)

    • episode的长度是一个人为配置的参数, 每一次行动, 只有步数到达episode才终止 可以认为episode的长度就是探索半径

    • 最后把这些结果取平均, 来代替原本依赖模型计算出的的结果

    • 对于所有的状态s和所有的动作a 都执行一次这个步骤就完成了策略评估Policy evaluation

在这里插入图片描述
Step2(无变化): (策略改进)Policy evaluation (PI)

  • 对于每一个state, 求出它能进行的所有动作(action)的行动价值(action value)

  • 选择行动价值(action value)最大的动作(action), 更新策略

  • 迭代过程也是 Step1→Step2→Step1→Step2→…→Step2→收敛
    在这里插入图片描述

二、MC Exploring Starts 算法

相比较计算效率极低的MC basic有两个优化

  • 第一个优化是关于episide, 对于MC basic来说

    假如有这样两个episide :

    1. s1(a2) → s2(a4) → s3(a5) →…

    2. s2(a4) → s3(a5) →…

    s1(a2) 代表在s1采取行动a2

    第一个是从s1出发, 第二个是从s2出发 但是因为第一个路径其实包含了第二个路径, 所以对于第二个路径的计算就是重复的 我们只需要在第一次计算到s2(a4)时, 把它的结果保存下来, 在计算第二个, 第三个…包含s2(a4)的路径时就能可以不重复计算, 这样完成了这个优化, 而这个优化对于采样的处理又可以分为两种:

    1. first-visit method

    2. every-visit method

    • 1是只把第一次遇到某个状态-行动对, 比如(s1, a2)的时候计算得到的值作为样本, 后续再遇到时直接照搬这个值
    • 2是每次遇到某个状态-行动对, 都计算一次它的值, 但是当做它的不同样本

    个人观点 : 表面上every-visit 方法每次都重复计算, 看起来好像没有减少重复计算量, 但是由于无论起点在哪, 每遇到一次就增加一次样本量, 所以重复实验的次数N确定的情况下, 这种方法获取的样本量远超MC basic算法, 那么我们就能适当减小N的值, 也相当于变相减少了计算量

  • 第二个优化是更多策略更新(改进), 对于MC basic来说

    对于每个状态-行动对要进行N次episode取均值以后, 才进行一次策略更新。

    由于进行N次episode的计算量远超进行一次策略更新(改进)的计算量, 所以这里可以每完成一次episode的计算就直接进行一次策略更新, 来达到更高的效率

    Exploring Starts的理解
    Exploring : 必须探索(explore)完所有的action, 才能够确定最优的action Start : 为了确保所有action都被探索到, 简单的想法是确保每个(s, a)都发起(Start)一个episode

在这里插入图片描述

  • 什么是探索起始(exploring starts)?

    • 探索(exploring)指的是我从每一个(s,a)出发,都要有 episode,只有这样我才能用后面生成的这些 reward 来估计 return,进一步估计 action value。如果恰恰有一个 state-action 没有被访问到,那我就可能把这个 action 给漏掉了,但是那个可能就是最优的,所以我们需要确保每个都被访问。
    • 起始(starts)意味着我们要访问每个(s,a),从它后面能够生成 reward 的这些数据有两种方法:第一种方法是从每一个 (s,a) 开始都有一个 episode,就是 start;第二种方法是从其他的 (s,a) 开始,但是也能经过当前的这个 (s,a),那后面的这些数据也可以估计当前 (s,a) 的 return,这个叫 visit。目前来讲,visit 方法没法确保,它依赖于策略和环境,没法确保从其他的 (s,a) 开始一定能够经过剩下的所有 (s,a),下面我们介绍的新方法就是使得 visit 可以做到,这样就可以避免必须从每个 (s,a) 都开始的条件。

三、MC ε-Greedy 算法

上一个算法中虽然能够保证所有action都能探索到, 但从每一个(s, a)出发一个episode, 是一个比较低效的方法,ε-Greedy 算法的思想就是从策略下手:

  • 如果在某个状态s0处的策略是100%选择 a1, 那么在固定策略下, 其他的动作一定不会被随机选择 只有通过覆盖式的方法, 将所有(s, a)无论概率如何都遍历一遍才能保证不会遗漏action。

  • 而如果我们允许策略(policy) 在执行中以比较小的概率, 随机的选择一些并不是最优的action, 那么我们就得到了一种soft-policy (相对于determined policy) 也就是ε-Greedy policy 这样即使原始策略中某个action的概率是0% , 它也有一定几率被尝试
    在这里插入图片描述
    选择greedy(最优action)的概率 始终比选择其他action的概率要大

  • ε是一个可调参数
    如果ε = 0. 那么会始终选择greedy (最优action)
    如果ε = 1. 那么选择所有action的概率都相同 (均匀分布)
    ε的值越小, 生成的策略可能接近最优策略, 所以在实际中可以在前期让ε较大获得探索性, 在后期让ε较小获得最优性

通过这种方法, 我们不必从每一个action出发, 也能保证所有action都不会被遗漏, 也就去掉了Exploring Starts的限制

  • MC ε-Greedy 算法的特点
    优点: 具有一定的探索性, 即使只有一个episode , 它也会尝试多数的action
    缺点: 牺牲了最优性, 得到的策略可能不是最优的, 这点与之前所有的算法都不同
    在这里插入图片描述
  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值