强烈推荐结合《Reinforcement Learning:An Introduction》Second edition阅读!!!
Dynamic Programming
其实从之前价值函数的计算公式就可以看出该最优化问题可以通过动态规划算法求解。
4.1 Policy Evaluation (Prediction)
价值函数可以通过迭代公式计算。当前状态的价值可以借助未来可能状态价值的数学期望计算。但如果每次都在遍历所有状态后才更新状态价值会导致收敛过慢。所以可以用in place的迭代方法。也就是说边遍历状态边更新,这样可以较快的收敛。
(建议伪代码与图4.1左列一起对照理解。)
4.2 Policy Improvement
前面的伪代码是在某一决策方案Policy下计算价值。那么得到价值后就可以根据某一原则更新决策方案。以图4.1为例,左列是在均匀分布的决策方案下计算价值,而右列同一行有对应的更新后方案。这些决策方案是以贪心算法为原则得到。
通过决策方案的更新,目标达成,成功知道了在什么状态该如何动作。此外,还应注意到公式(4.7)~(4.9)说明贪心算法可以达到最优,但不一定是全局最优,也可能是局部最优。
4.3 Policy Iteration & 4.4 Value Iteration
正如图4.1显示,policy evaluation与policy improvement依次迭代进行,伪代码也说明了这一点。值得注意的是,policy evaluation是遍历旧决策方案下的所有状态,之后再进行policy improvement更新。但这样每次都得遍历后更新,收敛速度慢。这里是否有点熟悉,我们联想到4.1节中提及边遍历边更新的in place方法。这就是4.4节要说的内容。
4.5 Asynchronous Dynamic Programming
根据公式以及伪代码可见,原始的迭代方法需要遍历下一步所有可能状态才能计算本次的Value值。但当状态很多的情况下,遍历的时间代价太大了。因此使用异步(asynchronous)动态规划,这里的异步指的是in-palce的迭代方法。
网友评论