第三章 动态规划-基于模型的RL
Posted 深度强化学习在生产调度中的应用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章 动态规划-基于模型的RL相关的知识,希望对你有一定的参考价值。
3.5 值迭代
策略迭代的一个缺点是,它的每个迭代都包含策略评估,而策略评估本身可能是一个需要多次遍历状态集的冗长迭代计算。当然等到策略评估完成是好的,因为值函数会精确地收敛到vπ。我们必须等待到精确的收敛吗,或者我们能不能停下来?
实际上,可以采用多种方法截断策略迭代的策略评估步骤,而不丧失策略迭代的收敛性保证。其中一个特别的方式就是当所有状态都遍历一遍后,停止策略评估过程。这个算法就叫做值迭代(valueiteration)。可以将其写为一个结合了策略改进和截断策略评估的简单更新操作:
(13)
对于任意v0,序列{vk}在保证v*存在的条件下可以收敛到v*。
另外一个理解值迭代的方式是参考贝尔曼最优方程。我们注意到值迭代本质上是简单地把贝尔曼最优方程转化成一个更新规则,同意注意到值迭代的更新过程和之前的策略评估(式5)的过程是一模一样的,只是在值迭代过程中每次我们都需要所有动作中使得上式取最大值的那个。
最后,我们需要考虑一下值迭代如何终止。和策略评估相同,我们理论上需要无限次迭代使之精确收敛到v*。在实际应用中,我们在相邻两次遍历状态的的差值非常小时,就停止运行。
图3 值迭代
我们可以看出,值迭代高效地结合了策略评估和策略改进,通过在每个策略改进遍历之间插入多个策略评估遍历,通常可以实现更快的收敛。总体来讲,一般来说,整类截断策略迭代算法都可以看作是遍历序列,其中一些使用策略评估更新,另一些使用值迭代更新。因为仅有的不同之处只是上式(13)中的max操作,这只意味着是把max操作加入了策略评估过程。所有这些算法对于折扣优先MDP来说都会收敛到最优策略。
3.6 异步动态规划
到目前为止,我们讨论的DP算法的主要缺陷是我们必须在MDP的整个状态集上进行操作,即遍历状态集合。如果状态集数量非常大,那么就算是单次遍历也非常耗时。例如,西洋双陆棋有超过1020个状态,即使我们可以每秒对一百万个状态执行值迭代更新,完成一次遍历也需要超过一千年的时间。
异步DP算法是一种实时(in place)迭代的DP算法,它不是系统地对状态集进行扫描的。这些算法以任何顺序,使用任何其他状态可用的值更新状态值。某些状态的值可能会在其他状态的值更新一次之前多次更新。然而,为了正确收敛,异步算法必须继续更新所有状态的值:它不能忽略计算中某个点之后的任何状态。异步DP算法允许选择要更新的状态,具有很大的灵活性。
例如,其中一种异步值迭代使用值迭代更新(式(13))在每个步骤k上只更新(in place)一个状态sk的值。如果0<γ<1,只有在所有状态都在序列{sk}中无限次出现(序列甚至可以是随机的)的前提下,才能保证渐近收敛到v*。(在非折扣的片段案例中,可能有一些更新顺序不会导致收敛,但相对容易避免这些情况。)类似地,可以将策略评估和值迭代更新混合使用,从而产生一种异步截断的策略迭代。
3.7 通用策略迭代
策略迭代由两个同步的交互过程组成,一个使值函数与当前策略保持一致(策略评估),另一个根据当前值函数给出贪婪策略(策略改进)。在策略迭代中,这两个流程交替进行,每个流程在另一个流程开始之前完成,但这并不是真正必要的。例如,在值迭代中,在每个策略改进之间只执行一次策略评估迭代。在异步DP方法中,评估和改进过程以更细的粒度交织在一起。在某些情况下,在返回到另一个过程之前,会在一个过程中仅更新一个状态。只要这两个过程持续更新所有状态,最终的结果通常是相同的—收敛到最优值函数和最优策略。
我们使用术语通用策略迭代(GPI)来表示允许策略评估和策略改进过程交互的一般思想,而不关注两个过程的粒度和其他细节。几乎所有的强化学习方法都可以用GPI来很好地描述,也就是说,它们都具有可识别的策略和值函数,策略总是根据值函数进行改进,并且值函数总是被驱动到策略的值函数,如图4所示。如果评价过程和改进过程都稳定下来,即不再产生变化,那么值函数和策略一定是最优的。值函数只有在与当前策略相一致时才稳定,而策略只有对当前价值函数贪婪时才稳定。因此,只有当发现策略对自己的评估函数贪婪时,这两个过程才会稳定下来,这说明贝尔曼最优方程成立,因此策略和值函数都是最优的。
图4 GPI
GPI的评估和改进过程可以看作是竞争和合作的过程。它们相互竞争的意义在于它们向相反的方向拉扯。使策略对值函数贪婪通常会否定当前值函数相对于改变后的策略的正确性,值函数进行更新使之和当前策略相一致,也就意味着当前的策略对于更新后的值函数来说,不再贪婪。然而,在长期交互作用中,这两个子过程却可以找到同一个最终答案:最优的策略和最优的值函数。
我们也可以将GPI中评估和改进过程之间的相互作用考虑为两个约束或目标,例如,就像图5所示的二维空间中的两条线。虽然实际的几何比这复杂得多,但该图显示了实际情况。每个过程都将值函数或策略驱动到直线(表示目标的解)的其中一条。目标相互作用是因为这两条线不是正交的,直接朝一个目标前进会导致远离另一个目标。然而,联合过程不可避免地更接近优化的总体目标。图中的箭头对应于策略迭代的行为,因为每个策略迭代都将系统带到完全实现两个目标中的一个。在GPI中,也可以朝着每个目标采取较小的、不完整的步骤。在这两种情况下,这两个过程一起实现了优化的总体目标,尽管它们都没有尝试直接实现优化。
图5迭代过程
3.8 总结
动态规划(DP)方法假设我们有一个完美的环境马尔可夫决策过程(MDP)模型。在实践中通常不是这样,但无论如何研究DP是很重要的。
策略评估:计算给定策略的状态值函数v(s)。在DP中,这是使用“完全备份”来完成的。在每一种状态下,我们一步前向观察每一个可能的行动和下一个状态。我们之所以能做到这一点,是因为我们有一个完美的环境模型。
完全备份基本上是将Bellman方程转换为更新。
策略改进:给定策略的正确状态值函数,我们就可以对它采取贪婪的动作(即在每个状态中选择最佳动作)。然后我们就可以保证改进这个政策,或者已经是最优时保持不变。
策略迭代:迭代地执行策略评估和策略改进,直到达到最优策略。
值迭代:我们不需要执行多个策略评估步骤来找到“正确的”v(s),而是只执行一步并立即改进策略。实际上,这个收敛得更快。
通用策略迭代:迭代地进行策略评估和改进的过程。我们可以为每个步骤选择不同的算法,但基本思想是相同的。
DP方法自举:它们基于其他估计更新估计(向前一步)。
以上是关于第三章 动态规划-基于模型的RL的主要内容,如果未能解决你的问题,请参考以下文章
路径规划基于matlab遗传算法求解外卖订单动态变换模型含Matlab源码 1983期
路径规划基于matlab DWA动态避障路径规划含Matlab源码 2356期