1、动态规划
动态规划算法通过把复杂问题分解为子问题,通过求解子问题进而得到整个问题的解。
动态规划的特性有两个:
-
一个复杂问题的最优解由数个小问题的最优解构成,可以通过寻找子问题的最优解来得到复杂问题的最优解;(最优子结构)
-
子问题在复杂问题内重复出现,使得子问题的解可以被存储起来重复利用。(重叠子问题)
而马尔可夫决策过程正好满足这两个特性。
-
Bellman方程把问题递归为求解子问题;
-
价值函数就相当于存储了一些子问题的解,可以复用。
2、贝尔曼方程
以状态价值函数为例,有S个状态,就会有S个方程,理论上是可以直接求解贝尔曼方程的,但是可发现每个等式都是要考虑所有(状态、动作、奖励)的,其复杂度很高,当状态空间变大时,其求解异常困难。
3、策略评估
使用迭代的方法(期望更新)可以代替直接方程求解得到价值函数的值,价值函数会在k趋近于∞时收敛到价值函数的真实值。
4、策略提升
4.1 策略改进定理
如果满足:
那么
其中, 是原策略, 是新的确定性策略。
4.2 贪心策略
由于
所以当使用贪心策略时,满足策略改进定理的条件
新价值函数为
5、策略迭代方法
策略迭代的过程就是不断进行策略评估与策略提升过程,直到策略达到稳定不发生变化。
Q:上面的伪代码是有一个bug的,当 算式在两个 处都达到最大值,此时就有可能陷入无尽迭代当中,那该如何修复呢?
A:一种方法是求最大值的时候使用集合,最后判断集合内的值是否稳定;还有一种方法是在判断是否策略已稳定时加上一条 。
6、价值迭代方法
在策略迭代中,每一次迭代都要进行策略评估,并且策略评估又是多步的计算过程,十分耗计算。为了减轻每一次迭代的计算量,将值进行一步策略评估的方法称为价值迭代法。
Example:Gambler's Problem
7、异步动态规划
当状态空间十分庞大的时候,即使是价值迭代的方法,每一轮也要遍历所有状态一次,这样的计算量仍然很大,所以异步动态规划提出每一轮迭代无需将所有状态都更新一遍,状态的更新也不必按照一定的顺序进行,这样的思想可以更加灵活,也能避免更新与最优动作无关的状态,更有利于用于实时计算,但其计算量不一定会减少。
8、广义策略迭代(GPI)
广义策略迭代指的是通过轮流进行策略评估与策略改进的方法,上面所讲的算法都输入GPI的范畴。
9、总结:
-
动态规划的前提是有环境的完整的动态特性,当不存在时可以通过experience学习得到
-
动态规划的求解方法其实就是将贝尔曼方程改动成了迭代更新
-
动态规划更适用于状态量不大的时候,当状态量很大时优选异步DP算法
-
策略迭代与值迭代的收敛速度与效果并没有确定的答案
-
广义策略迭代(GPI)是围绕一个近似策略和一个近似价值函数这两个交互过程的一种思想,也会用于接下来的蒙特卡洛采样与时序差分算法中
参考文献
-
强化学习(第二版)incompleteideas.net/book/RLbook…
-
强化学习(中文翻译)rl.qiwihui.com/zh\_CN/late…
-
强化学习编程题代码仓库github.com/ivan-ge677/…