策略迭代
策略迭代法(Policy Iteration method)是动态规划中求最优策略的基本方法之一。它借助于动态规划基本方程,交替使用“求值计算”和“策略改进”两个步骤,求出逐次改进的、最终达到或收敛于最优策略的策略序列。
我们发现如果想知道最优的策略,就需要能够准确估计值函数。然而想准确估计值函数,又需要知道最优策略,数字才能够估计准确。所以实际上这是一个“鸡生蛋还是蛋生鸡”的问题。而一般的策略迭代法的思路可总结为以下三个步骤:
第一步就是上文说的策略评估(Policy Evaluation);第二步是如何更新策略的呢?大体思想是在当前策略的基础上,贪婪地选取行为,使得后继状态价值增加最多:
上述过程的问题就在于策略迭代的主要时间都花费在策略评估上,对一个简单的问题来说,在策略评估上花费的时间不算长;但对复杂的问题来说,这个步骤的时间实在有些长。一个最直接的想法就是,我们能不能缩短在策略评估上花的时间呢?有,就是价值迭代。而策略迭代的优点也很明显,这样一步一步来做,是很容易证明其收敛性。
值迭代
理解价值迭代原理的思路,可以从策略迭代的缺点出发。可以理解为是策略迭代的一个改进版本。
- 策略迭代的策略评估需要值函数完全收敛才进行策略提升的步骤,能不能对策略评估的要求放低,这样如果可以实现的话,速度会有所提升。
- 我们在策略迭代中关注的是最优的策略,如果说我们找到一种方法,让最优值函数和最优策略同时收敛,那样我们就可以只关注值函数的收敛过程,只要值函数达到最优,那策略也达到最优,值函数没有最优,策略也还没有最优。这样能简化了迭代步骤。
我们的问题是寻找最优策略π \piπ,值迭代的解决方案是:使用贝尔曼最优方程,将策略改进视为值函数的改进,每一步都求取最大的值函数。具体的迭代公式如下所示:
上面这个公式与策略迭代相比,没有等到状态价值收敛才去调整策略,而是随着状态价值的迭代,及时调整策略,这样就大大减少了迭代的次数。也就是说从初始状态值函数开始同步迭代计算,最终收敛,整个过程中没有遵循任何策略。
由于策略的调整,我们现在的价值每次更新。倾向于贪婪法寻找到最优策略对应的后续的状态价值。这样收敛的速度会更快。在值迭代过程中,算法不会给出明确的策略,迭代过程其间得到的价值函数不对应任何策略。