《Easy RL:强化学习教程》读书笔记02
策略迭代
策略迭代由两个步骤组成:策略评估和策略改进(policy improvement)。第一个步骤是策略评估,当前我们在优化策略 \piπ,在优化过程中得到一个最新的策略。我们先保证这个策略不变,然后估计它的价值,即给定当前的策略函数来估计状态价值函数。 第二个步骤是策略改进,得到 状态价值函数后,我们可以进一步推算出它的 Q 函数。得到 Q 函数后,我们直接对 Q 函数进行最大化,通过在 Q 函数做一个贪心的搜索来进一步改进策略。这两个步骤一直在迭代进行。
价值迭代
价值迭代做的工作类似于价值的反向传播,每次迭代做一步传播,所以中间过程的策略和价值函数 是没有意义的。而策略迭代的每一次迭代的结果都是有意义的,都是一个完整的策略。如图所示为一个可视化的求最短路径的过程,在一个网格世界中,我们设定了一个终点,也就是左上角的点。不管我们在哪一个位置开始,我们都希望能够到达终点(实际上这个终点在迭代过程中是不必要的,只是为了更好地演示)。价值迭代的迭代过程像是一个从某一个状态(这里是我们的终点)反向传播到其他各个状态的过程,因为每次迭代只能影响到与之直接相关的状态。
策略迭代和价值迭代的区别
我们再来对比策略迭代和价值迭代,这两个算法都可以解马尔可夫决策过程的控制问题。策略迭代分两步。首先进行策略评估,即对当前已经搜索到的策略函数进行估值。得到估值后,我们进行策略改进,即把 Q 函数算出来,进行进一步改进。不断重复这两步,直到策略收敛。价值迭代直接使用贝尔曼最优方程进行迭代,从而寻找最佳的价值函数。找到最佳价值函数后,我们再提取最佳策略。
马尔可夫决策过程中的预测和控制总结
我们使用动态规划算法来解马尔可夫决策过程里面的预测和控制,并且采取不同的贝尔曼方程。对于预测问题,即策略评估的问题,我们不停地执行贝尔曼期望方程,这样就可以估计出给定的策略,然后得到价值函数。对于控制问题,如果我们采取的算法是策略迭代,使用的就是贝尔曼期望方程;如果我们采取的算法是价值迭代,使用的就是贝尔曼最优方程。
动态规划方法和蒙特卡洛方法的差异
蒙特卡洛方法通过一个回合的经验平均回报(实际得到的奖励)来进行更新。蒙特卡洛方法相比动态规划方法是有一些优势的。首先,蒙特卡洛方法适用于环境未知的情况,而动态规划是有模型的方法。蒙特卡洛方法只需要更新一条轨迹的状态,而动态规划方法需要更新所有的状态。状态数量很多的时候(比如 100 万个、200 万个),我们使用动态规划方法进行迭代,速度是非常慢的。这也是基于采样的蒙特卡洛方法相对于动态规划方法的优势。
时序差分方法
时序差分是介于蒙特卡洛和动态规划之间的方法,它是免模型的,不需要马尔可夫决策过程的转移矩阵和奖励函数。此外,时序差分方法可以从不完整的回合中学习,并且结合了自举的思想。
时序差分方法和蒙特卡洛方法的差异
(1)时序差分方法可以在线学习(online learning),每走一步就可以更新,效率高。蒙特卡洛方法必须等游戏结束时才可以学习。
(2)时序差分方法可以从不完整序列上进行学习。蒙特卡洛方法只能从完整的序列上进行学习。
(3)时序差分方法可以在连续的环境下(没有终止)进行学习。蒙特卡洛方法只能在有终止的情况下学习。
(4)时序差分方法利用了马尔可夫性质,在马尔可夫环境下有更高的学习效率。蒙特卡洛方法没有假设环境具有马尔可夫性质,利用采样的价值来估计某个状态的价值,在不是马尔可夫的环境下更加有效。
例子:时序差分方法是指在不清楚马尔可夫状态转移概率的情况下,以采样的方式得到不完整的状态序列,估计某状态在该状态序列完整后可能得到的奖励,并通过不断地采样持续更新价值。蒙特卡洛则需要经历完整的状态序列后,再来更新状态的真实价值。例如,我们想获得开车去公司的时间,每天上班开车的经历就是一次采样。假设我们今天在路口 A 遇到了堵车,时序差分方法会在路口 A 就开始更新预计到达路口 B、路口 C · · · · · · ,以及到达公司的时间;而蒙特卡洛方法并不会立即更新时间,而是在到达公司后,再更新到达每个路口和公司的时间。时序差分方法能够在知道结果之前就开始学习,相比蒙特卡洛方法,其更快速、灵活。
动态规划方法、蒙特卡洛方法以及时序差分方法的自举和采样
自举是指更新时使用了估计。蒙特卡洛方法没有使用自举,因为它根据实际的回报进行更新。动态规划方法和时序差分方法使用了自举。
采样是指更新时通过采样得到一个期望。蒙特卡洛方法是纯采样的方法。动态规划方法没有使用采样,它是直接用贝尔曼期望方程来更新状态价值的。时序差分方法使用了采样。时序差分目标由两部分组成,一部分是采样,一部分是自举。
Q学习和Sarsa的区别
-
Sarsa 是一个典型的同策略算法,它只用了一个策略 π,它不仅使用策略 π 学习,还使用策略 π与环境交互产生经验。 如果策略采用 ε-贪心算法,它需要兼顾探索,为了兼顾探索和利用,它训练的时候会显得有点“胆小”。它在解决悬崖行走问题的时候,会尽可能地远离悬崖边,确保哪怕自己不小心探索了一点儿,也还是在安全区域内。此外,因为采用的是 ε-贪心 算法,策略会不断改变(ε值会不断变小),所以策略不稳定。
-
Q学习是一个典型的异策略算法,它有两种策略————目标策略和行为策略,它分离了目标策略与行为策略。Q学习可以大胆地用行为策略探索得到的经验轨迹来优化目标策略,从而更有可能探索到最佳策略。行为策略可以采用 ε-贪心 算法,但目标策略采用的是贪心算法,它直接根据行为策略采集到的数据来采用最佳策略,所以 Q学习 不需要兼顾探索。
-
我们比较一下 Q学习 和 Sarsa 的更新公式,就可以发现 Sarsa 并没有选取最大值的最大化操作。因此,Q学习是一个非常激进的方法,它希望每一步都获得最大的利益;Sarsa 则相对较为保守,它会选择一条相对安全的迭代路线。
第二章习题链接:https://datawhalechina.github.io/easy-rl/#/chapter2/chapter2_questions&keywords
第三章习题链接:https://datawhalechina.github.io/easy-rl/#/chapter3/chapter3_questions&keywords