Dynamic Programming

来源:互联网 发布:无纸化会议软件定制 编辑:程序博客网 时间:2024/05/24 05:24

Dynamic Programming

标签(空格分隔): Reinforcement Learning: An Introduction


  • Dynamic Programming
    • Dynamic Programming
      • Policy Evaluation
      • Policy Improvement
      • Policy Iteration
      • Value Iteration
      • Asynchronous Dynamic Programming
      • Generalized Policy Iteration
      • Efficiency of Dynamic Programming

Dynamic Programming

Policy Evaluation

Policy Evaluation 给定一个policy怎样来评价好坏的

首先开门见山给出经典的贝尔曼迭代公式
image_1bvf7122a1e75muh1j5b4pa1s2q9.png-27.4kB
用state value 来评价Policy的好坏的(在这里假设,policy是一个固定的策略),于是在不断的进行马尔可夫决策过程,迭代 state value的值,最终达到收敛。
image_1bvf7dlvriie1det1rek18ce103hm.png-18.9kB
在书中,作者提到 两种更新state value的方式:
(1)采用两个数组,一个存储新的state value值,另一个存储旧的state value的值,这种方式,就是 每次更新都计算旧的state value里面的值;
(2)第二种,采用一个数组,方式差不多,但是每次都用的是最新的state value;
作者在书中提到第二种方式收敛的比较快
下图给出了,iterative policy evaluation的伪代码:
image_1bvf7o7m71r51fbcbc1am2tv013.png-60.4kB

此外,作者还提到,Dynamic Programming是一种full back的方式。

full back:强化学习在进行贝尔曼公式迭代时,考虑到当前状态st的下一个状态st+1所有情况,并求期望值(平均值)

Policy Improvement

该小节,如何改进policy, 在MDP中,不断的完善Ploicy 

初始的Policy可能大多数都是随机的,本节利用上一节的Poliy Evaluation来完善。
当一个策略改变时,我们可以用state value来评价,这个改变是否使Policy更好了。
于是,这一段作者引入了state-action value qπ(s)
image_1bvf9teg21l0c16u5jbaqj71tsd1g.png-17.7kB

于是就可以量化策略的改变是往哪个方向发展的
若满足以下方式,则可认为变化再往好的方面发展
image_1bvfa2nvh1odjl9gfp617e3ssn1t.png-7.5kB
于是,通过证明就可以得到以下结论:
image_1bvfa5ulibkcmhdo4h10sb18ia2a.png-6.1kB

证明过程:
image_1bvfa6sd2o4vb87ncm13a41ar42n.png-55.4kB

这样,就得到了一个贪心的想法,如果每次,都是取state-action value最大的action, 这样在不断的迭代过程中,就能不断优化当前策略
image_1bvfaeksf1t4q101d1qoefdlgjh44.png-25.6kB

这种贪心迭代方式被称为Policy Improvement,作者在本节结束举了个例子如下:

image_1bvfav49k1jkuka5ju173vftf4h.png-215.2kB

虽然上面的例子,不管是random policy 还是 greedy policy都能达到一样的策略,但是:
(1)greedy policy达到最佳值时,所用的迭代次数比较少;
(2)state value值 greedy policy 比较大

Policy Iteration

本节将policy evaluation和policy improvement结合进行policy 优化

整体的policy优化策略如下:
image_1bvfbedsh17hv18jq17j2j9s2e95e.png-7.2kB
上图E表示policy evaluation;I表示policy improvement,通过有限次迭代就能达到最优解,具体的伪代码如下:
image_1bvfbkrlss291aun1dk1mkuqv25r.png-163.7kB

上面伪代码,说明的是,每一个策略都需要进行policy evaluation到达收敛后,再进行Policy improvement 依次这样循环

Value Iteration

本节解决的问题是,Policy Iteration中,训练过慢,计算量过大的问题

作者给出的思路是,将policy evaluation 过程进行截断,然而,不影响收敛性。
最简单的方式是在policy evaluation的过程中,进行一次迭代,这样就加快了
image_1bvffif331ids16l21t8r94i1pha68.png-18.5kB

伪代码如下图所示:
image_1bvffmoesh0ele0qpp1g0kp456l.png-70.1kB

Asynchronous Dynamic Programming

该节面对的问题是Dynamic Programming 是一个full back,也就是说在当前状态下,需要遍历下一个状态所有的可能性,而导致计算量过大的文图

作者采用的迭代方式是之前所说的用一个数组存放state value的形式,具体细节没看 以后用到深究

Generalized Policy Iteration

该节主要对policy iteration 作出解释,然后 说明policy evaluation和policy improvement 相互促进,相互竞争最后达到策略和state value最优化的双赢局面

作者说明无论是policy iteration 和 value iteration 以及 Asynchronous Dynamic Programming都存在policy evaluation 和 policy improvement相互交互的局面,于是作者给了两张图形象的说明了
image_1bvfhgcv3pu7vr31qoms7d154272.png-24.5kB

image_1bvfhgsd61eccu66f101dnq2vm7f.png-22.2kB

上面图说明了,evaluation和improvement如何相互作用的:
(1)对当前的策略π进行evaluation
(2)用state value 进行贪心来improve policy,达到收敛
重复(1),(2)一直达到收敛

下面的图说明的是两个阶段最终达到收敛的过程
作者给了相应的解释:
image_1bvfi2q3514o0139419f89ni5d07s.png-245.8kB
image_1bvfi3bq017g4tmq7sj1ousnt589.png-161.8kB

总的来说,如果evaluation阶段想要达到稳定 那么current policy 必须达到稳定;如果想要current policy 达到稳定 则,evaluation 的state value 也必须达到稳定。
作者提到两个阶段属于合作而又竞争的关系
(1)evaluation 的state value使得policy 不满足 greedy的关系;
(2)greedy的策略使得 当前的state value 不满足不断改变的策略。

Efficiency of Dynamic Programming

该节对Dynamic Programming这种算法的实用性进行辩证

Dynamic Programming可能在强化学习领域不算是特别实用的方法,但是它也有实用性
优点:
(1)Dynamic Programming在能够保障算法的收敛性;
(2)相对于直接搜索或者线性求解来说,它在节省了计算量;
缺点:
对于复杂的环境来说,计算量超大,因为每次都要遍历所有的可能性

原创粉丝点击