文档介绍:详解蒙特卡洛方法:这些数学你搞懂了吗?
加州大学洛杉矶分校计算机科学专业的 Ray Zhang 最近开始在自己的博客上连载介绍强化学习的文章,这些介绍文章主要基于 Richard S. Sutton 和 Andrew G. B这种情况下,我们可以使用动作值而非状态值,也就是说我们求解的是 q?
我们希望估计而非。将 G[s] 简单地改成 G[s,a] 似乎很恰当,事实也确实如此。一个显然的问题是:现在我们从 S 空间变成了 S×A 空间,这会大很多,而且我们仍然需要对其进行采样以找到每个状态-动作元组的期望回报。
另一个问题是,随着搜索空间增大,如果我们在我们的策略方面过快地变得贪婪,那就越来越有可能我们也许无法探索所有的状态-动作对。我们需要适当地混合探索(exploration)和利用(exploitation)。我将在下一节解释我们克服这一问题的方法。
蒙特卡洛控制
回想一下来自马尔可夫决策过程的策略迭代。这种情况没有太大的差别。我们仍然固定我们的 π,寻找,然后寻找一个新的 π′ 再继续。大致过程就像这样:我们寻找的方式类似于上面我们寻找 v 的方式。我们可以通过贝尔曼最优性方程(Bellman optimality equation)的定义改善我们的 π,简单来说就是:有关于此的更多详情请参阅之前的马尔可夫决策过程相关博文。
现在,在蒙特卡洛方法的语境中,策略迭代的核心关键是:我们如何确保探索与利用的情况?
探索开始
一种弥补大型状态空间探索的方法是指定我们从一个特定的状态开始,然后采取一个特定的动作,再在所有可能性上循环以采样它们的回报。这假设我们可以从任意状态开始,然后在每个 episode 开始时采取所有可能的动作;这在很多情况下都不是合理的假设。但是,对于二十一点(BlackJack)这样的问题,这是完全合理的,这意味着我们可以轻松解决我们的问题。
在代码中,我们只需要给我们 (1) 处的代码加个小补丁即可:
# Before (Start at some arbitrary s_0, a_0)
episode = generate_episode(pi)
# After (Start at some specific s, a)
episode = generate_episode(pi, s, a) # loop through s, a at every :?-贪婪策略
所以,如果我们不能假设我们可以从任何任意状态开始和采取任意动作,又如何呢?那么只要我们不太贪婪并且多次无限地探索所有状态,那么我们就可以确保收敛,是这样吗?
上述内容本质上是在策略(on-policy)方法的主要特性之一。在策略方法是要试图改善当前正在运行试验的策略,而离策略(off-policy)方法则是想试图提升不同于当前运行试验的策略的另一个策略。
有了这个说法,我们需要形式化「不太贪婪」。一种简单方法是使用所谓的「k-摇臂赌博机- ?-贪婪方法(k-armed bandits - ?-greedy methods)」!简单来说,给定一个状态,我们有 ? 概率会从所有动作的均匀分布中选取,有 1-? 的概率选取 动作。
现在我们的问题是:这会收敛到蒙特卡洛方法的最优 π? 吗?答案是:会收敛,但不会收敛到那个策略。
?-贪婪收敛
我们从 q 和一个 ?-贪婪策略 π′(s) 开始。同样,我们可以这样陈述:这个 ? 贪婪策略,就像任何贪婪策略一样,会在 上执行单调的提升。如果我们支持所有时间步骤,那么会得到:这就是我们收敛所需的。
但是,我们需要找到这一策略实际会收敛到的位置。很显然,即使最优策略是确定性,因为我们迫使我们的策略是随机的,所以无法保证收敛到 π?。但是,我们可以重构我们的问题:
假设不再让我们的策略具有以概率 ? 均匀选择动作的随机性,而是让我们的策略具有能随机选取动作而不管策略如何规定的环境。那么,我们就可以保证有最优解。其证明的大致过程是,在 (1) 中,如果等式成立,那么我们有 π=π′,因此,则由于该环境的设置,方程在随机性下是最优的。
离策略:重要度采样
1).离策略标记法
现在介绍一些新术语!
π 是我们的目标策略(target policy)。我们试图优化这个策略的期望回报。b 是我们的行为策略(behavioral policy)。我们使用 b 来生成 π 之后会用到的数据。这是覆盖率(coverage)的概念。离策略方法通常有 2 个或更多智能体,其中一个会生成数据,以让另一个智能体在这些数据上进行优化。我们将它们分别称为行为策略和目标策略。离策略方法比在策略方法更「炫酷」,就像神经网络比线性模型更「炫酷」一样。