zoukankan      html  css  js  c++  java
  • [Reinforcement Learning] Model-Free Prediction

    上篇文章介绍了 Model-based 的通用方法——动态规划,本文内容介绍 Model-Free 情况下 Prediction 问题,即 "Estimate the value function of an unknown MDP"。

    • Model-based:MDP已知,即转移矩阵和奖赏函数均已知
    • Model-Free:MDP未知

    蒙特卡洛学习

    蒙特卡洛方法(Monte-Carlo Methods,简称MC)也叫做蒙特卡洛模拟,是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。其实本质就是,通过尽可能随机的行为产生后验,然后通过后验来表征目标系统。

    如下图为使用蒙特卡罗方法估算 (pi) 值,放置30000个随机点后,(pi) 的估算值与真实值相差0.07%。

    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093127465-413339540.gif)

    在Model-Free的情况下,MC在强化学习中的应用就是获取价值函数,其特点如下:

    • MC 可以从完整的 episodes 中学习(no bootstrapping)
    • MC 以均值来计算价值,即 value = mean(return)
    • MC 只能适用于 episodic MDPs(有限MDPs)

    First-Visit 蒙特卡洛策略评估

    First-Visit Monte-Carlo Policy Evaluation:

    评估状态 (s) 在给定策略 (pi) 下的价值函数 (v_{pi}(s)) 时,在一次 episode 中,状态 (s) 在时刻 (t) 第一次被访问时,计数器 (N(s) ← N(s) + 1),累计价值 (S(s) ← S(s) + G_t)
    当整个过程结束后,状态 (s) 的价值 (V(s) = frac{S(s)}{N(s)})
    根据大数定理(Law of Large Numbers):(V(s) → v_{pi}(s) ext{ as } N(s) → infty)

    Every-Visit 蒙特卡洛策略评估

    Every-Visit Monte-Carlo Policy Evaluation:

    评估状态 (s) 在给定策略 (pi) 下的价值函数 (v_{pi}(s)) 时,在一次 episode 中,状态 (s) 在时刻 (t) 每次被访问时,计数器 (N(s) ← N(s) + 1),累计价值 (S(s) ← S(s) + G_t)
    当整个过程结束后,状态 (s) 的价值 (V(s) = frac{S(s)}{N(s)})
    根据大数定理(Law of Large Numbers):(V(s) → v_{pi}(s) ext{ as } N(s) → infty)

    Incremental Monte-Carlo

    我们先看下增量式求平均:
    The mean (mu_1, mu_2, ...) of a sequence (x_1, x_2, ...) can be computed incrementally:

    [egin{align} mu_k &= frac{1}{k}sum_{j=1}^{k}x_j\ &= frac{1}{k}Bigl(x_k+sum_{j=1}^{k-1}x_j Bigr)\ &= frac{1}{k}(x_k + (k-1)mu_{k-1})\ &= mu_{k-1} + frac{1}{k}(x_k - mu_{k-1}) end{align} ]

    根据上式我们可以得出增量式进行MC更新的公式:
    每次 episode 结束后,增量式更新 (V(s)),对于每个状态 (S_t),其对应的 return 为 (G_t)

    [N(S_t) ← N(S_t) + 1 \ V(S_t) ← V(S_t) + frac{1}{N(S_t)}(G_t - V(S_t)) ]

    在非静态问题中,更新公式形式可以改为如下:

    [V(S_t) ← V(S_t) + alpha (G_t - V(S_t)) ]

    时序差分学习

    时序差分方法(Temporal-Difference Methods,简称TD)特点:

    • TD 可以通过 bootstrapping 从非完整的 episodes 中学习
    • TD updates a guess towards a guess

    TD(λ)

    下图为 TD target 在不同 n 下的示意图:

    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093159343-566652060.png)
    从上图可以看出,当 n 达到终止时,即为一个episode,此时对应的方法为MC,因此从这个角度看,MC属于TD的特殊情况。

    n-step Return

    n-step returns 可以表示如下:
    (n=1) 时:(G_{t}^{(1)} = R_{t+1} + gamma V(S_{t+1}))
    (n=2) 时:(G_{t}^{(2)} = R_{t+1} + gamma R_{t+2} + gamma^2 V(S_{t+2}))
    ...
    (n=infty) 时:(G_{t}^{infty} = R_{t+1} + gamma R_{t+2} + ... + gamma^{T-1} R_T))
    因此,n-step return (G_{t}^{(n)} = R_{t+1} + gamma R_{t+2} + ... + gamma^{n}V(S_{t+n})))

    n-step TD 更新公式:

    [V(S_t) ← V(S_t) + alpha (G_t^{(n)} - V(S_t)) ]

    Forward View of TD(λ)

    我们能否把所有的 n-step return 组合起来?答案肯定是可以,组合后的return被称为是(lambda)-return,其中(lambda)是为了组合不同的n-step returns引入的权重因子。

    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093208269-1684521958.png)

    (lambda)-return:

    [G_t^{lambda} = (1-lambda)sum_{n=1}^{infty}lambda^{n-1}G_t^{(n)} ]

    Forward-view TD((lambda)):

    [V(S_t) ← V(S_t) + alphaBigl(G_t^{lambda} - V(S_t)Bigr) ]

    TD((lambda))对应的权重公式为 (( 1-lambda)lambda^{n-1}),分布图如下所示:

    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093216246-346895182.png)

    Forward-view TD((lambda))的特点:

    • Update value function towards the λ-return
    • Forward-view looks into the future to compute (G_t^{lambda})
    • Like MC, can only be computed from complete episodes

    Backward View TD(λ)

    • Forward view provides theory
    • Backward view provides mechanism
    • Update online, every step, from incomplete sequences

    带有资格迹的TD((lambda)):

    [delta_t = R_{t+1} + gamma V(S_{t+1} - V(S_t))\ V(s) ← V(s) + alpha delta_t E_t(s) ]

    其中(delta_t)为TD-error,(E_t(s))为资格迹。

    资格迹(Eligibility Traces)

    资格迹本质就是对于频率高的,最近的状态赋予更高的信任(credit)/ 权重。

    下图是对资格迹的一个描述:

    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093235016-1687119842.png)

    关于TD((lambda))有一个结论:

    The sum of offline updates is identical for forward-view and backward-view TD(λ).

    这一块的内容不再深入介绍了,感兴趣的可以看Sutton的书和David的教程。

    蒙特卡洛学习 vs. 时序差分学习

    MC与TD异同点

    相同点:都是从经验中在线的学习给定策略 (pi) 的价值函数 (v_{pi})

    不同点:

    • Incremental every-visit Monte-Carlo:朝着真实的 return (color{Red}{G_t}) 更新 (V(S_t))

    [V(S_t) ← V(S_t) + alpha (color{Red}{G_t} - V(S_t)) ]

    • Simplest temporal-difference learning algorithm: TD(0)
      • 朝着已预估的 return (color{Red}{R_{t+1} + gamma V(S_{t+1})}) 更新 (V(S_t))

      [V(S_t) ← V(S_t) + alpha (color{Red}{R_{t+1} + gamma V(S_{t+1})} - V(S_t)) ]

      • (color{Red}{R_{t+1} + gamma V(S_{t+1})}) 称为是 TD target
      • (color{Red}{R_{t+1} + gamma V(S_{t+1})} - V(S_t)) 称为是 TD error

    下图以 Drive Home 举例说明两者的不同,MC 只能在回家后才能改变对回家时间的预判,而 TD 在每一步中不断根据实际情况来调整自己的预判。

    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093245013-91806930.png)

    MC与TD优缺点

    学习方式

    • TD 可以在知道最后结果之前学习(如上图举例)
      • TD can learn online after every step
      • MC must wait until end of episode before return is known
    • TD 可以在不存在最后结果的情况下学习(比如无限/连续MDPs)
      • TD can learn from incomplete sequences
      • MC can only learn from complete sequences
      • TD works in continuing (non-terminating) environments
      • MC only works for episodic (terminating) environments

    方差与偏差

    • MC has high variance, zero bias(高方差,零偏差)
      • Good convergence properties
      • Not very sensitive to initial value
      • Very simple to understand and use
    • TD has low variance, some bias(低方差,存在一定偏差)
      • Usually more efficient than MC
      • TD(0) converges to (v_{pi}(s))
      • More sensitive to initial value

    关于 MC 和 TD 中方差和偏差问题的解释:

    • MC 更新基于真实的 return (G_t = R_{t+1} + gamma R_{t+2} + ... + gamma^{T-1}R_{T})(v_{pi}(S_t)) 的无偏估计。
    • 真实的TD target (R_{t+1} + gamma v_{pi}(S_{t+1})) 也是 (v_{pi}(S_t)) 的无偏估计。但是实际更新时用的 TD target (R_{t+1} + gamma V(S_{t+1}))(v_{pi}(S_t)) 的有偏估计。
    • TD target 具有更低的偏差:
      • Return 每次模拟依赖于许多的随机动作、转移概率以及回报
      • TD target 每次只依赖一次随机动作、转移概率以及回报

    马尔可夫性

    • TD exploits Markov property
      • Usually more efficient in Markov environments
    • MC does not exploit Markov property
      • Usually more effective in non-Markov environments

    DP、MC以及TD(0)

    首先我们从 backup tree 上去直观地认识三者的不同。

    • DP backup tree:Full-Width step(完整的step)
    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093304855-974791132.png)
    • MC backup tree:完整的episode
    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093311204-2050415371.png)
    • TD(0) backup tree:单个step
    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093318221-565424251.png)

    Bootstrapping vs. Sampling

    Bootstrapping:基于已预测的值进行更新

    • DP bootstraps
    • MC does not bootstrap
    • TD bootstraps

    Sampling:基于采样的期望来更新

    • DP does not sample(model-based methods don't need sample)
    • MC samples(model-free methods need sample)
    • TD samples(model-free methods need sample)

    下图从宏观的视角显示了 RL 的几种基本方法的区别:

    ![](https://img2018.cnblogs.com/blog/764050/201810/764050-20181029093326561-204428328.png)

    Reference

    [1] 维基百科-蒙特卡洛方法
    [2] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018
    [3] David Silver's Homepage

  • 相关阅读:
    第三方中间件 body-parser解析表单数据
    Express内置的中间件(express.json和express.urlencoded)格式的请求体数据
    用内置 querystring 模块解析请求体数据
    1108 低价购买
    1091 合唱队形
    1064 金明的预算方案
    1048 采药 & 1049 装箱问题
    1434 滑雪
    1443 马的遍历
    1141 01迷宫
  • 原文地址:https://www.cnblogs.com/maybe2030/p/9868799.html
Copyright © 2011-2022 走看看