强化学习笔记3:动态规划 planning by dynamic programming(DP)


规划,适用于MDP模型参数已知
学习,适用于Env未知或部分未知

概述

动态规划分为两步,Prediction、Control

  • (Prediction)Value:是对策略$\pi$的评价
  • (Control)Policy $\pi$:是对Value的选择

方法:

  • prediction:迭代法
    对所有状态s,应用贝尔曼公式

右边的$vk$不确定,但是迭代下去,因为$R^a_s$确定,所以收敛到真值$v\pi$

  • Control:greedly,每次都选基于上次预测最好的那个a

例子

问题:每走一步,r = -1,走到出口可以停止
在随机策略下,迭代k,最使v收敛
得到$v^{\pi}(s)$
-w395
然后最简单的策略,greedy,往v值高的地方走。
-w562

Policy iteration:$O(mn^2)$

每一步,遍历动作A

Find optim policy:
以Greedy为例,迭代:$\pi’ = greedy(v_{\pi})$
策略更新为:

值函数更新为:

主动改变策略,策略改变之后进行评估
根据q值,从集合A中选a,更新策略$\pi$,使新q大于之前一步

证明:

所以保证了每次迭代,价值函数 与 策略 增长

Value iteration:$O(m^2n^2)$

每一步,遍历了状态S和动作A

最优策略:

  • 当前状态s下,所有动作a产生回报的最大值
  • 采取动作a后,状态由s -> s’的期望
    公式:

根据值函数,选择策略

值迭代和policy迭代的区别

  • policy iteration每次迭代v(s)都会变大;而value iteration则不是。
  • 价值迭代不需要策略参与,依据MDP 模型,直接迭代,需要P矩阵、r 等已知
    • policy iteration: policy->value->policy
    • value iteration:value->value

Trick:

三种值迭代方法:
常规的值迭代,要遍历过所有s之后,才进行一次迭代,因此存在old、new两个v(s)

  • in-place DP:新值直接替换旧值,只存储一个v(s),
    • 异步更新,提高效率
    • 缺点:更新顺序影响收敛性
  • Prioritised sweeping:state的影响力排序
    • 比较贝尔曼误差绝对值,大的更新,小的忽略
  • Real-time DP:遍历过的才更新
    • 省去了agent 未遍历的状态s,对于稀疏任务效率提升极大


文章作者: Tolshao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Tolshao !
评论
  目录