Dynamic Programming
动态规划是用来求解MDP的方法之一,动态的含义是问题具有时间或顺序特性,规划的含义是用程序来优化程序,也就是指优化策略。动态规划算法就是两种思想的结合,它把一个复杂的问题分割成许多小的问题,在解决了这些小问题之后原本复杂的问题就随之迎刃而解。在增强学习中,它主要是利用value function来搜索最优策略,利用Bellman方程作为更新规则来计算近似的期望value function。只要我们找到了最优的value function,就不难找到最优策略。
传统的动态规划算法具有局限性,一是因为其需要运行在环境模型完全已知的条件下,二是因为其冗长的计算量,针对以上不足,下一趴将介绍相关的改进算法。
本文主要包含以下三方面的内容:Policy Evaluation,Policy Iteration,Value Iteration。
一、Condition
能用DP解决的问题需要满足以下两个特性:
1.具有最优化结构(把一个问题分解成许多子问题,由子问题的最优解可得出整个问题的最优解,即化整为零)
2.满足重叠子问题(分解成的子问题是不断重复的)
MDP满足以上两种特性,因此可以用DP来求解。
二、Policy Evaluation
简单概括就是,在已知MDP和已知策略的情况下,根据策略不断地进行状态的转移,一直向前走(move on),然后计算这条路上能得到的奖励大小,这就是策略评估。计算value function时,需要用到上一篇博文中介绍的Bellman期望方程。
V1,V2,V3,V4,……,Vπ 是一串由任意初始状态V1(一般可取0)开始的序列,利用Bellman期望方程进行迭代计算,可以由V1得V2,由V2得V3,以此类推直到得到最终的Vπ值。这是一个同步备份的过程(课本中称之为full backup),也就是说每当进行一次迭代,就对序列中每个状态进行一次重新评估。而且当k→∞时,Vk将收敛至Vπ。
■ Example——gridworld
这是一个方格游戏,大小为4×4,角落里的两个阴影方格是终止状态。在每一个方格S={1,2,3,……,14},可以采取四种行动,分别是A={up,down,right,left },并且每移动一步获得-1大小的奖励,若移动超出边界则保持原地不动。
&n