上一趴讲的是无模型预测中用蒙特卡罗思想来进行策略评估,即离线评价某个特定策略的表现,但未进行策略的优化。这一趴对前一篇博文做一个完善和延续,因为在一个问题或者游戏中,你光会评价自己的策略好坏是远远不够的,固守成规没有用,我们得让自己变得聪明,找到最明智最优的策略,仍然采用蒙特卡罗思想,不同的是需要在策略评估后做一个策略的迭代,在一个内部循环中找到可能的最优解。这从一个预测问题上升到了控制问题,当然,所有所有方法的前提是MDPS。
一、原理——一边评估一边提升
控制思想的核心是广义策略迭代(Generalised Policy Iteration)简单来说,在一个过程中建立两个网络,一个是评估网咯,另一个是策略优化网络,开始时我们有初始策略π和价值函数V,我们先对策略π进行评估(上升箭头表示,可以得到新的价值函数V),评估的原理和方法见上一篇博文,评估结束后,我们根据结果用各种方法(greedy算法 或ε-greedy算法等)优化策略(下降箭头表示,可以得到熄灯呢策略π),与DP中的迭代类似,这两个网络的作用过程可以用下面这个图来表示:
二、trick——use Q instead of V
不知道这个算不算trick,反正当我们只有State-Value(V)的时候,如果要用贪婪等方法找出比原来好的策略,是需要通过已知的MDP(模型)的,为了计算最大的V(s),我们需要知道每个接下来的状态的状态转移概率和下一个状态s'的价值函数
,因此就难以用状态价值函数V来进行无模型问题的迭代计算。这里我们采用Action-Value(实际行为函数值Q)来代替V,Q(s,a)表示的是在某个状态s下,采取行为a的好坏,所以当我们优化策略时,仅仅需要从中挑选使函数值Q最大化的行为即可。通过这个代替,我们就可以免去了寻找模型的负担。
用Q替换V值之后,上面介绍的广义迭代策略的策略评估也可以同样换成对Q值的评估,示意图如下方左图,注意与上图进行比较。为了加快收敛的速率,有时候我们不必对所有状态的策略进行评估,只需要往前走几步,收集到足够用于策略提升的信息即可,这样就大大提升了算法效率。示意图如下方右图所示。