强化学习中价值迭代和策略迭代各有什么优缺点?

策略迭代

  策略迭代法(Policy Iteration method)是动态规划中求最优策略的基本方法之一。它借助于动态规划基本方程,交替使用“求值计算”和“策略改进”两个步骤,求出逐次改进的、最终达到或收敛于最优策略的策略序列。

  我们发现如果想知道最优的策略,就需要能够准确估计值函数。然而想准确估计值函数,又需要知道最优策略,数字才能够估计准确。所以实际上这是一个“鸡生蛋还是蛋生鸡”的问题。而一般的策略迭代法的思路可总结为以下三个步骤:

  1. 以某种策略 π \pi 开始,计算当前策略下的值函数 v π ( s ) v_{\pi}(s)
  2. 利用这个值函数,更新策略,得到 π \pi^{*}
  3. 再用这个策略 π \pi^{*} 继续前行,更新值函数,得到 v π ( s ) v_{\pi}^{\prime}(s) ,一直到 v π ( s ) v_{\pi}(s) 不在发生变化。

  第一步就是上文说的策略评估(Policy Evaluation);第二步是如何更新策略的呢?大体思想是在当前策略的基础上,贪婪地选取行为,使得后继状态价值增加最多:

π = g r e e d y ( v π ) \pi^{\prime} = greedy(v_{\pi})

  上述过程的问题就在于策略迭代的主要时间都花费在策略评估上,对一个简单的问题来说,在策略评估上花费的时间不算长;但对复杂的问题来说,这个步骤的时间实在有些长。一个最直接的想法就是,我们能不能缩短在策略评估上花的时间呢?有,就是价值迭代。而策略迭代的优点也很明显,这样一步一步来做,是很容易证明其收敛性。

值迭代

  理解价值迭代原理的思路,可以从策略迭代的缺点出发。可以理解为是策略迭代的一个改进版本。

  1. 策略迭代的策略评估需要值函数完全收敛才进行策略提升的步骤,能不能对策略评估的要求放低,这样如果可以实现的话,速度会有所提升。

  2. 我们在策略迭代中关注的是最优的策略,如果说我们找到一种方法,让最优值函数和最优策略同时收敛,那样我们就可以只关注值函数的收敛过程,只要值函数达到最优,那策略也达到最优,值函数没有最优,策略也还没有最优。这样能简化了迭代步骤。

  我们的问题是寻找最优策略 π \pi ,值迭代的解决方案是:使用贝尔曼最优方程,将策略改进视为值函数的改进,每一步都求取最大的值函数。具体的迭代公式如下所示:

v k + 1 ( s ) = max a A ( R s a + γ s S P s s a v k ( s ) ) v_{k+1}(s)=\max_{a \in \mathcal{A}}\left(R_{s}^{a}+\gamma \sum_{s^{\prime} \in S}\mathcal{P}_{ss^{\prime}}^{a}v_{k}(s^{\prime})\right)

  上面这个公式与策略迭代相比,没有等到状态价值收敛才去调整策略,而是随着状态价值的迭代,及时调整策略,这样就大大减少了迭代的次数。也就是说从初始状态值函数开始同步迭代计算,最终收敛,整个过程中没有遵循任何策略。

  由于策略的调整,我们现在的价值每次更新。倾向于贪婪法寻找到最优策略对应的后续的状态价值。这样收敛的速度会更快。在值迭代过程中,算法不会给出明确的策略,迭代过程其间得到的价值函数不对应任何策略。

  基于state-value function( v π ( s ) v_{\pi}(s) )每一次IterationComplexity O ( m n 2 ) O(mn^{2}) ,其中 m m 表示action space n n 表示state space

  基于state-action value function ( q π ( s , a ) q_{\pi}(s,a) )每一次IterationComplexity O ( m 2 n 2 ) O(m^{2}n^{2}) ,其中 m m 表示action space n n 表示state space

发布了199 篇原创文章 · 获赞 174 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/weixin_39059031/article/details/105596144