Reinforcement Learning: Planning by DP

来源:互联网 发布:淘宝买药是货到付款吗 编辑:程序博客网 时间:2024/06/13 05:28

  • Policy Evaluation
    • Iterative Policy Evaluation
  • Policy Iteration
  • Value Iteration
    • Asynchronous DP
      • In-place DP
      • Prioritised Sweeping
      • Real-time DP
      • Full-Width Backups
      • Sample Backups

转载请注明出处: http://blog.csdn.net/c602273091/article/details/78848962

动规是一般是把问题分解成子问题,子问题会有重叠,重复出现,所以可以进行cache再使用过。MDP正好符合这样的特征,所以使用DP解决非常合适。value function需要重复使用别的状态,那么可以进行保存和重复使用。Bellman equation使用递归分解问题,我理解的就是为了求解state value的时候,会需要计算与之相邻state 的value,但是为了求相邻的state value,又要计算它相邻的,迭代计算。

对于prediction和control,它们的目标函数不同,一个是optimal value function,用来更加精确的预测;一个是optimal policy,使action更加合理化,使value更大。

这里写图片描述

Policy Evaluation

为了评估一个policy,进行Bellman Expectation的迭代计算state value直到收敛。最后收敛的就是optimal policy,我觉得这一块和题目有些出入,更像是在介绍Bellman Expectation Matrix不断迭代直到收敛,这个过程中policy会不断改变,说明value iterative的方法可以找到optimal policy。

Iterative Policy Evaluation

这里的迭代更新的采用同步更新,也就是所有的state-value是一起更新的,计算更新的值的value都是上一个状态的,异步的方法后面会介绍,反正根据证明,多次迭代,异步也是会收敛到同一个policy。

矩阵中迭代更新公式如下:
这里写图片描述

下面的例子特别好,reward都是-1,采用random policy,那么在某个状态执行某个action的概率都是一样的。

这里写图片描述
这里写图片描述

Policy Iteration

话锋一转,突然就讲到如何进行policy iteration来进行optimal policy,刚才说的那是啥?我觉得刚才的迭代的example其实也算是一种optimal policy的过程,只是没把进行迭代的policy再加入下一次的value iterative过程,这样使得迭代次数会增加,但是结果还是正确的。所以在这里提出了improve policy的方法,具体就是先用Bellman计算当前policy下的state-value,然后再用这个value得到一个贪心的policy,就是更好的policy。接着再用这个policy,得到新的value,再用value更新得到新的policy,这样循环往复。

这里写图片描述

随着迭代次数增加,慢慢的整个policy就会接近optimal。并且在这个过程value也会收敛到optimal。

在这里slide给出policy evaluation和policy improvement的区别,一个是给定policy,然后看value的变化,一个是用贪心算法改进policy。

在policy improvement中,state-value是大于action-value,在最后收敛以后,得到optimal value的时候,state-value和action-value是一样的。
这里写图片描述

最后收敛:
这里写图片描述

Value Iteration

Optimality的定义:对于能够取得optimal value的policy(π(a|s) 必须满足对于任何可以到达s的状态s‘都可以获得optimal value)

如何在这种情况下,那么v(s)的optimal solution就可以一步到位:
这里写图片描述

下图中计算每个state的value,都是从它周围的四个state中选择了value的最大的那个,另外discount factor这里为1。
这里写图片描述

Value Iteration:找到最好的policy。
- 使用同步备份进行更新:每次对每个value进行更新
- 最后value会收敛
- 不像policy iteration,这里没有明显的policy。
- 中间的value不对应任何policy,但是最后收敛以后会得到optimal policy,根据value。

这里写图片描述

Asynchronous DP

异步DP与之前说的同步DP不同在于,异步DP并没有严格区分前一个状态和当前状态,当前状态更新的时候可能会用到当前另外一个状态刚刚更新的值,异步DP会有两个矩阵来存储前一个状态和当前状态,当前状态只会由前一个状态的值得到。异步DP最终也是会收敛的,可以减少计算量以及存储量。一般来说异步DP有:

  • In-place DP
  • 优先队列priotised sweeping
  • 实时DP

In-place DP

在数学表达上,同步与异步可以表示为:
这里写图片描述

Prioritised Sweeping

使用一个优先队列来表示应该对哪个state-value进行更新。
这里写图片描述

Real-time DP

只有与agent有关的state才会进行更新,使用agent的经验去选择状态,只对要更新的state进行备份。

这里写图片描述

Full-Width Backups

DP使用整个state的备份,那么代价非常大。

Sample Backups

对备份进行抽样备份,下一章model-free会需要。

这一章看起来感觉还是有些迷糊,没有对应的题目来讲解感觉很空,也就走马观花看一下吧。

Useful Links:
1. Lecture 3 Video: https://www.youtube.com/watch?v=Nd1-UUMVfz4
2. Lecture 3 Slide: http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/DP.pdf