其他分享
首页 > 其他分享> > 深度强化学习(四)Model Free Prediction

深度强化学习(四)Model Free Prediction

作者:互联网

前提:一个环境可以用 MDP 进行表示,但是我们并不知道这个 MDP,我们还是想要解决问题,找到最优解

到访本站

一、Introduction

1)课程联系:

  1. 上节课:
    • Planning by dynamic programming
    • Solve a know MDP
  2. 本节课:
    • Model-free prediction 【给定一个 Policy ,我们按照这个 Policy 可以获取多少奖励】
    • 评估(Estimate)一个未知的 MDP 的 value function
  3. 下节课:
    • Model-free Control
    • 优化(Optimize)一个未知 MDP 的value function

本节下面的部分介绍具体的几种方法,分别是蒙特卡洛强化学习(Monte-Carlo Learning)、时序差分强化学习(Temporal-Difference Learning)和介于两者之间的λ时序差分强化学习(TD(λ))

二、Monte-Carlo Learning【蒙特卡洛学习】

1)MC Learning 的特点

  1. 直接从经验中学习;这种方法非常适合于具有 episode 的 MDP 过程【类似于游戏的过程】
  2. Model-free: 不知道 MDP 的知识,包括状态转移和即时奖励
  3. 从整个 episodes 中学习;通常情况下,某一个状态的 value ,以这个状态在多个 Episode 中获得的奖励的平均来计算;
  4. 注意
    • 所有的 Episodes 必须会终止

2) MC Policy Evaluation【蒙特卡洛策略评估】

蒙特卡洛学习方法(Monte-Carlo RL):在不清楚 MDP状态转移以及即时奖励的情况下,直接从一系列的 Episodes 中学习状态值函;通常情况下,某一个状态的价值等于在多个 Episode 中以这个状态得到的所有收获的平均;

S 1 , A 1 , R 2 , S 2 , A 2 , . . . , S t , A t , R t + 1 . . . , S k ∼ π S_1, A_1, R_2, S_2, A_2, ..., S_t, A_t, R_{t+1} ...,S_k \sim \pi S1​,A1​,R2​,S2​,A2​,...,St​,At​,Rt+1​...,Sk​∼π

1. 首次访问蒙特卡洛策略评估(First-Visit Monte-Carlo Policy Evaluation)
2. 每次访问蒙特卡洛策略评估(Every-Visit Monte-Carlo Policy Evaluation)

3) Incremental Monte-Carlo

  1. Incremental Mean

    • 一个序列 x 1 , x 2 , . . . x_1, x_2,... x1​,x2​,... 的平均数 μ 1 , μ 2 , . . . \mu_1, \mu_2, ... μ1​,μ2​,... 可以增量地进行计算

      image-20210213153433456
  2. Incremental Monte-Carlo Updates【蒙特卡洛增量更新】

    • 对于一系列的 Episodes 中的每一个 Episode: S 1 , A 1 , R 2 , . . . , S T S_1, A_1, R_2, ..., S_T S1​,A1​,R2​,...,ST​ ,我们可以进行增量地进行更新(采用上面的办法);对于收获是 G t G_t Gt​ 的状态 S t S_t St​ ,更新方法如下:

      • 注意:即便是下面的更新,也是需要等待每一个 Episode 结束以后
      image-20210213154611471
    • 在处理非静态(non-stationary)问题的时候,使用这个方法跟踪一个实时更新的平均值是非常有用的,可以丢弃已经计算过的 Episode 信息。可以引入参数 α:

      image-20210213155507739

      • 这个方法的优点是,我们可以放弃保存一些过去的信息,这些信息可能会导致我们效率的下降
      • 在这里我们是在评估一个给定的 Policy,但是实际的强化学习中,我们是在不断地优化我们的 Policy,这样一些历史的信息就不是那么重要了;

三、Temporal-Difference(TD) Learning

TD 学习方法也是直接从经验中进行学习;这个方法是 Model-free 的,即在不知道 MDP 状态转移和奖励的情况下;与蒙特卡洛方法的区别: TD 方法从不完整的 Episodes 中进行学习(我们不必实际地走完整个轨迹,我们可以部分地走这个轨迹,然后预测走完整个轨迹我们所能获得的奖励),我们称这个方法为 bootstrapping. 实际上 TD 方法是 updates a guess towards a guess

1) MC 与 TD 的对比

  1. 目标(Goal):给定策略 Policy 的情况下,在线地从经验中学习状态价值函数 v π v_{\pi} vπ​

  2. every-visit 增量蒙特卡洛:用实际的 return G t G_t Gt​ 更新值 V ( S t ) V(S_t) V(St​)

    image-20210213163247273
  3. 最简单的 TD 学习算法

    • 使用预测的return(estimated return)即:image-20210215162848600,来更新 V ( S t ) V(S_t) V(St​)

      image-20210213163610677
    • image-20210215162954218 称之为 TD target

    • δ t = R t+1 + γV (S t+1 ) − V (S t ) 称之为 TD error

  4. TD 对 MC 的优势在于

    • 当遇到可能的非常大的负奖励的时候,TD 会立即采取行动,而 MC 直到这种不好的情况发生才会进行更新

      image-20210213165136574

  5. 举个栗子:开车回家

    • TD 算法实际上在整个回家的过程中(一个 Episode),根据已经消耗的时间和预期还需要的时间来不断更新最终需要消耗的总时间;
    • MC 算法在路上碰到各种状况的时候并不会更新对回家时间的预估,只有在真的回家之后,才会更新各个节点上的时间,在下一次回家的时候使用新的评估进行决策;
    image-20210213165826376
  6. 分别使用 MC 和 TD 方法绘制出上个例子的图形

    • TD 算法不需要等待所有的都发生以后再进行更新

    image-20210213170109613

  7. 对比 MC 与 TD 算法的优势与不足:

    • TD 算法可以在知道最终结果之前进行学习:
      • TD 算法可以在每一步之后在线学习
      • MC 算法必须等待一个 Episode 结束之后,才能进行学习
    • 当没有最终结果的时候,TD 算法可以进行学习
      • 也就是说,TD 算法可以从不完整的序列中进行学习
      • MC 算法只能从完整的序列中进行学习
      • TD 算法可以在没有终止的,持续的环境中进行训练
      • MC 算法只能在有终止的 Episode 环境中
    • 偏差(Bias)与方差(Variance)
      • 蒙特卡洛方法中,Returnimage-20210215163051349 是 v π ( S t ) v_{\pi}(S_t) vπ​(St​) 的无偏估计
      • True TD 算法中的 target image-20210215163146560,也是 v π ( S t ) v_{\pi}(S_t) vπ​(St​) 的无偏估计
      • 但是,TD 中的 target image-20210215163211476是 v π ( S t ) v_{\pi}(S_t) vπ​(St​) 的有偏估计
      • TD 算法的 target 比 MC 算法有更小的方差(Variance)
        1. Return 依赖于很多随机的行为,转换和奖励
        2. TD 算法的 Target 则依赖于一个随机的行为,转换和奖励
    • 总结:
      • MC 算法高方差(Variance),零偏差(Bias)
        1. 以为上面的的性质,MC 算法有比较好的收敛性
        2. 对初始 value 不是很敏感
        3. 容易理解,并且使用简单
      • TD 算法有较低的方差(Variance)和一些偏差(Bias)
        1. 通常比 MC 算法更加高效
        2. TD(0) 收敛于 v π ( s ) v_{\pi}(s) vπ​(s)
        3. 对初始值更加敏感
  8. 举个栗子:Random Walk

    • 左图中分别介绍了这个游戏和使用 TD 算法得到的结果,可以看到随着训练的 Episodes 的增加,得到的状态价值函数,越来越接近于真实的状态价值函数
    • 右图中是 MC 算法和 TD 算法效率的比较,可以看出 TD 算法的效率更高;换可以看到当 step-size 不是非常小的情况下,TD 算法可能得不到最终真实的价值,会在某一个区间震荡

    image-20210215100502060

2) Batch MC and TD

3)蒙特卡洛学习(MC)、时序差分强化学习(TD)以及动态规划(DP)算法比较

image-20210215113724051

  1. 蒙特卡洛学习(MC):

    • 假如我们要更新的是根节点的 value,我们需要采样完整的 Episode(即从根节点到终止状态),用来更新根节点的状态值
    image-20210215111907300
  2. 时序差分学习(TD)

    • 假设同样的要更新根节点的状态值,我们需要采样,但是这个采样可以是不完整的 Episode,只考虑向前 一步,即可用来更新根节点的状态值
    image-20210215112346286
  3. 动态规划(DP)

    • 同样的,我们在动态规划中想要更新根节点,我们不能进行采样要根据完整的模型更新根节点的状态值
    image-20210215112846685

四、TD(λ)

1)n-Step Prediction

image-20210215135736754

2) TD(λ)

  1. λ-return:将所有不同的 n 都考虑了进来

    image-20210215150136858

    • 公式推导:
      KaTeX parse error: No such environment: equation at position 10: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \begin{align…

      • 当 n 趋向于无穷的时候, S n = 1 1 − λ S_n = \frac{1}{1-\lambda} Sn​=1−λ1​ ,因此,上图中总和为 1
  2. Forward-view TD(λ)

    • 类似于 MC 算法,TD(λ) 算法只能适用于完整的 Episodes;使用 λ return 来更新 value function;

    image-20210215151234219

  3. Backward View TD(λ)

    • Eligibility Traces:首先了解一个概念;如下图所示,是铃铛还是亮灯引起了最后的警示?

      image-20210215153201009
      • 频率启发式(Frequency heuristic):认为是频率最高的

      • 最近启发式(Recency heuristic):认为是最近发生的

      • Eligibility Traces 将上面的两个结合在一起,实际上就是一个状态的影响是随着时间递减的:

        image-20210215153608223
    • Backward View TD(λ)

      • 给每一个状态保存一个 Eligibility Traces

      • 给每一个状态 s 更新状态值 V(s)

        image-20210215154459182
  4. Forward 和 backward TD 之间的关系【对于这两个概念理解还是不深刻,大家有自己的理解的话可以给我留言,一块探讨一下

    • TD(λ) 和 TD(0):

      • 当 λ = 0,只有当前的状态会被更新

        image-20210215155020026
      • 这等同于 TD(0) 的更新:

        image-20210215155106948
    • TD(λ) 和 MC

Reference

  1. 《强化学习》第四讲 不基于模型的预测

标签:状态,Episode,MC,Prediction,Free,算法,更新,Model,TD
来源: https://blog.csdn.net/forever_008/article/details/113817147