深度强化学习(三)Planning by Dynamic Programming

这里说的 Dynamic Programming 实际是工行就是我们算法中所说的动态规划,为了在以后在看到 Dynamic Programming 不再陌生,这里统一使用 Dynamic Programming,简写为(DP)

一、Introduction

1) 什么是 DP
  • Dynamic:问题的序列或者时间组成部分(sequential or temporal component to the problem)
  • Programming:优化一个“程序”,比如一个策略(Policy)
  • DP 实际上是解决复杂问题的一种方法,这个方法将问题分解为子问题:
    1. 解决这些子问题
    2. 将子问题的解决方案进行整合
2) DP 的要求
  • DP 实际上是一种非常通用的解决方案,这种解决方案主要用于解决有下面两个性质的问题:
    1. 最优子结构(Optimal substructure):一个问题的最优解可以由子问题的最优解有效构造出来;【这样保证了原问题的最优解可以通过子问题的最优解推导出来】
    2. 重叠子问题(Overlapping subproblems):原问题可以分解为若干子问题,并且这些子问题重复出现(我们可以将子问题的最优解缓存并重复利用)
  • 马尔可夫决策过程(MDP)满足上面的两个性质,因此可以使用 DP 来求解:
    • Bellman 方程给出了MDP 的递推分解
    • Value Function 可以存储并重复利用已经获取的结果
3)Planning by DP
  • 这里要知道 planning 的含义,这个在第一节中已经提到过:

    • DP 假设有 MDP 的所有知识,即模型是已知的【这并不是一个完整的强化学习问题】
    • 注意:本节实际上就是围绕着 planning 进行的
  • Planning 可以解决下面两类问题:

    1. For Prediction:【Policy 是已知的】

      image-20210210112809353

    2. For Control:【Policy 是未知的,需要找出最佳的 Policy】

      image-20210210112839262

4)DP 的其他应用

image-20210210113228520

二、Policy Evaluation

1) Iterative Policy Evaluation
  1. 问题:评估给定一个Policy

  2. 解决方法:迭代地使用 Bellman Expectation backups

    • 从一个初始化的 MDP 的 Value Function 开始,迭代地使用 Bellman Expectation:
      v 1 → v 2 → . . . → v π v_1 \rightarrow v_2 \rightarrow ... \rightarrow v_{\pi} v1v2...vπ

    • 使用 同步备份(synchronous backups)

    • 在每一次迭代 k + 1 ,对于 S 中的每一个状态 s,都进行更新:利用 v k ( s ′ ) v_k(s^{'}) vk(s) 来更新 v k + 1 ( s ) v_{k+1}(s) vk+1(s),其中, s ′ s^{'} s 是 s 的下一个状态;

    • 图文并茂:

      image-20210210120425628

  3. 举个栗子:

    • 首先介绍例子的前提条件:

      • 折扣因子 γ = 1 \gamma = 1 γ=1
      • 下图中,灰色的两个块是终止状态,其他的 14 个是非终止状态
      • 导致会超出格子之外的动作,其最终状态还是在原地
      • 每次动作的奖励是 -1(包括保持在原地的动作),直到达到终止状态
      • 选在四个方向的概率是相同的,都是 0.25
      image-20210210150502144
    • 迭代过程:

      image-20210210151109290

三、Policy Iteration

1)优化 Policy 的方法
  • 给定一个 Policy π \pi π

    • Evaluate 这个 Policy
      v π ( s ) = E [ R t + 1 + γ R t + 1 + . . . ∣ S t = s ] v_{\pi}(s) = E[R_{t+1} + \gamma R_{t+1} + ...| S_t = s] vπ(s)=E[Rt+1+γRt+1+...St=s]

    • 优化 Policy
      π ′ = g r e e d y ( V π ) \pi^{'} = greedy(V_{\pi}) π=greedy(Vπ)

    image-20210210162525354
2) Policy Improvement
  • 考虑一个确定的(deterministic policy), a = π ( s ) a = \pi (s) a=π(s)

  • 我们可以通过贪婪的策略来优化 Policy:

    image-20210210202940553
  • 假如我们仅仅考虑一步的话,这种方法可以提升任何状态下的 value:

    image-20210210201027190
  • 因此,这种方法可以提升 value Function:

    image-20210210201122612
  • 当优化停止的时候,有:

    image-20210211092706408
  • 这就会满足 Bellman Optimality Equation

    image-20210211092814075
  • 因此,对于所有的 S 中的状态 s,都有 $ v_{\pi}(s) = v_{*}(s)$ ,所以 π \pi π 是一个最佳 policy

3) Modified Policy Iteration
  • 这里提出的主要问题是,类似于上面的网格问题,我们可以看到 Value Function 是比较难以收敛的,但是 Policy 是比较容易收敛的
  • 可行的解决方案:【早停】
    1. 直接设置迭代次数
    2. 每次迭代更新一次策略
    3. 设定一个阈值,比较两次迭代的价值函数平方差

四、Value Iteration

1) 最优性原则(Principle of Optimality)【定理】
  • 任何一个最佳 Policy 都可以分解为下面的两个部分:

    1. 一个最佳的第一个动作 A ∗ A_{*} A
    2. 从下一个状态 s ′ s^{'} s 开始的最佳 Policy
  • 【定理】最优性原则

    image-20210211095431973
2) 确定性的价值迭代(Deterministic Value Iteration)
  • 当我们知道子问题的解 v ∗ ( s ′ ) v_{*}(s^{'}) v(s)

  • 那么整个问题的解,就可以通过多看一步来获取:

    image-20210211100235347
  • value Iteration 实际上就是迭代地使用上面的方法进行更新【实际上就是从最后的奖励开始,反向递推

  • 这种对于存在循环或者随机的 MDPs 仍然是适用的

  • 一个简单的例子

    • 最终状态是不一定已知的,也不一定必须存在的,这个例子中的最终状态只是用来便于理解;

    • 实际上我们是在每一步更新所有状态的 value

      image-20210211101611131
3)价值迭代(Value Iteration)
  • 过程描述:

    • 问题:找到最佳 Policy π \pi π
    • 解决方案:迭代地使用 Bellman Optimality backup v 1 → v 2 → . . . → v ∗ v_1 \rightarrow v_2 \rightarrow ... \rightarrow v_* v1v2...v
    • 使用同步备份(synchronous backups)
      • 在每一次迭代过程 k + 1 中,对于每一个状态 s ∈ S s \in S sS , 从 v k ( s ′ ) v_k(s^{'}) vk(s) 来更新 v k + 1 ( s ) v_{k+1}(s) vk+1(s)
    • 这里并没有一个显性的 Policy 存在【与 Policy Iteration 的区别】
    • 中间的值函数可能不对应任何的 Policy
  • 图文并茂:

    image-20210211112653053

  • value Iteration 的例子

4) DP 算法总结

image-20210211113458108

五、Extensions to Dynamic Programming

1)异步动态规划(Asynchronous Dynamic Programming)
  • 之前的都是同步动态规划(synchronous backups),因为我们在每一步都对所有状态的 value 进行更新

  • 异步的动态规划(Asynchronous DP)对状态进行备份的时候是独立地,可以是任何顺序

    • 对于每一个选中的状态,采用合适的 backup
    • 可以显著地减少计算
    • 如果所有的状态能够持续被选中,那么是可以保证收敛的
  • 异步动态规划中三个不同的方法(idea):

    1. In-place dynamic programming
    2. Prioritised sweeping
    3. Real-time dynamic programming
  1. In-Place Dynamic Programming

    image-20210211115227752
    1. Prioritised Sweeping

      • 维护一个队列,挑选出更加重要的状态进行更新;这个更加重要可能是更新后变化最大的,而不是更新之后毫无变化的
      image-20210211115300198
    2. Real-Time Dynamic Programming

      • 更新智能体正在访问的状态
      image-20210211115328141
2) Full-Width Backups and Sample Backups
  1. Full-Width Backups

    image-20210211120348204
  2. Sample Backups
    image-20210211120425449
3) Approximate Dynamic Programming
image-20210211121108215

六、Contraction Mapping

  • 可以自己看看 PPT,不是重点

Reference

  1. 深度强化学习(三)【David Silver】

  2. 《强化学习》第三讲 动态规划寻找最优策略

  3. David Silver强化学习课程 Lecture Planning by Dynamic Programming(总结版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值