本章节主要介绍了基于动态规划来求解最优策略。
4.1策略评估
对于策略
π
\pi
π,其状态价值函数定义如下:
理论上,知道了系统的动态特性和策略,则基于上述公式,仅有状态价值函数为未知数,而对s个状态,有s个等式,可以直接求解,但是由于计算繁琐,采用迭代法求解。
其中,初始化时,除了终止状态的价值函数为0,其余均可以是随机数,采用以下式子迭代:
理论上k趋于无穷,终会收敛,但是我们可以在变化很小的时候就停止计算。
期望更新指根据给定的策略,得到所有可能的单步转移后的即时收益和每个后继状态的旧的价值函数,利用这二者的期望值来更新新的价值函数。
DP基于所有可能的后继状态的期望值,而不只是基于后继状态的一个样本。
计算流程如下:
4.2策略改进
知道了给定策略下的价值函数,则可以对策略进行改进。
考虑一种情况,在s状态下,采取一个不同于现有策略的动作,也就是采取一个新的策略,而其余状态下保持原有策略不变,则此动作对应的“状态-动作”价值函数为:
而要评判策略
π
\pi
π是否优于策略
π
′
\pi'
π′,关键在于判断对于状态s,按照新的策略获得的价值函数是否会优于当前策略:
如果上式成立,也就是对于所有状态。能获得一样或更好的期望回报:
因此,给定一个策略,很容易评估一个状态中某个特定动作的改变会产生怎样的后果。
很自然的可以推出一种贪心法来求解最优策略,即在每个状态选取价值函数最高的动作,不断更新策略:
由于动作空间有限,必然可以找到最优策略。
4.3策略迭代
在每个策略中,使用策略评估,计算当前策略的价值函数,然后通过策略改进,得到一个更优的策略,在新的策略中,又需要使用策略评估来收敛,以此循环。
由于一个有限MDP必然只有有限种策略,所以在有限次策略迭代中,必然收敛到最有策略。
流程如下图:
4.4价值迭代
策略迭代的一个缺点是,每次迭代都要使用策略评估,策略评估的收敛非常耗时。
策略迭代理论上要在极限处才成立,那是否可以提前终止迭代呢?
一种特例是,在一次遍历后马上停止策略评估,每次评估,只对每个状态更新一次,这种更新方式叫价值迭代。公式如下:
该方法也可以理解成是对贝尔曼最优方程转为的迭代形式。
对应的算法过程为:
4.5异步动态规划
之前的DP的一大缺点在于,需要对整个状态集进行遍历,再大规模情况下开销过大。
异步DP算法是一种就地迭代的算法,随机选择状态值就行更新,可能一个状态值被更新一次,另外一些已经被更新多次。但只要保证,某个时间点,所有状态值都被更新,它终会收敛。
一种典型的异步更新是,在价值迭代的基础上,每次只更新一个状态
S
k
S_k
Sk的值,而不是遍历状态集合。