强化学习5 :蒙特卡洛和时间差分学习

385 阅读6分钟

现在我们已经介绍了 MDP,是时候讨论 Q-learning 了。为了增强我们对这个主题的认识,我们需要逐步了解:

  • 动态规划 (DP): 在我们对 MDP 的讨论中介绍
  • 蒙特卡洛 (MC) 学习: 在缺乏信息时进行调整
  • 最简单的Temporal Difference学习,TD(0):  DP和MC的结合

一旦我们介绍了蒙特卡洛和时间差异学习,我们就会到达更知名的Q-learning

让我们开始吧!

MDP 和动态规划

在我系列的最后几部分中,我们一直在学习如何使用马尔可夫决策过程 (MDP) 解决问题。为此,我们使用动态规划 (DP) 评估给定策略,并通过连续迭代得出最佳价值函数。

让我们列出并回顾一些关键术语以帮助我们继续:

  • 动态规划: 将大问题分解为渐进的步骤,以便在任何给定阶段都可以找到子问题的最佳解决方案
  • 模型: 真实世界过程的数学表示(参见第 3 部分中的“与 Adam 一起学习” )
  • Bellman Optimality Equation: 为我们提供了估计每个状态最优值的方法(参见第 4 部分)

现在请务必注意,MDP 仅适用于已知模型,其中所有五个元组(如下所示)都很明显。

image.png

从本文开始,我们将着手解决一个部分模型未知的MDP 问题。

在这种情况下,我们的代理必须通过与环境交互并收集经验或样本来从环境中学习。在此过程中,智能体进行策略评估和迭代,可以获得最优策略。

由于支持这种方法的理论来自蒙特卡罗方法,让我们从讨论蒙特卡罗学习开始。

蒙特卡洛学习

我们已经了解到,整个问题可以转化为马尔可夫决策过程 (MDP),它使用上面的五个元组 <s、P、a、R、γ> 做出决策。

当我们知道所有五个时,就很容易计算出获得最大奖励的最佳策略。然而,在现实世界中,我们几乎不会同时拥有所有这些信息。

例如,状态转移概率 ( P) 很难知道,没有它,我们就无法使用下面的贝尔曼方程来求解 V 和 Q 值。

image.png image.png 但是,如果我们必须在不知道P 的情况下解决问题怎么办?我们如何将其转化为马尔可夫决策过程?

首先,考虑一下虽然我们不知道状态转移概率P是多少,但我们确实客观地知道它存在。因此,我们只需要找到它。

为此,我们可以让我们的智能体进行试验,不断收集样本,获得奖励,从而评估价值函数 这正是蒙特卡洛方法的工作原理:尝试多次,最终估计的V值将非常接近真实的V值。

蒙特卡洛评估

如前所述,蒙特卡洛方法涉及让代理通过与环境交互和收集样本来从环境中学习。这相当于从概率分布P(s, a, s')R(s, a) 中抽样。

然而,蒙特卡洛 (MC) 估计仅适用于基于试验的学习。换句话说,没有P 元组的 MDP 可以通过反复试验来学习。

在这个学习过程中,每一次“尝试”称为一次episode,所有episode都必须终止。也就是说,应该达到 MDP 的最终状态。每个状态的值仅根据最终奖励 Gt 更新,而不是根据对邻居状态的估计更新——正如贝尔曼最优方程中发生的那样。

MC 从完整的 episode 中学习,因此只适用于我们所说的episodic MDP

这是我们更新的状态值公式:

image.png 其中:

  • V(St) 是我们要估计的状态值,可以随机初始化,也可以用某种策略初始化。

image.png

  • Gt是上面计算出来的,T是终止时间。
  • 是一个类似学习率的参数。它可以影响收敛。

获得 V(St) 的各种方法

考虑一下:如果状态s在时间 t + 1和时间t + 2中分别出现两次,我们在计算状态s的值时是使用其中一个还是两者?我们多久更新一次 V(St)?我们对这些问题的回答将引导我们采用不同的方法:

  • First-Visit Monte-Carlo 政策评估

对于每一集的策略(可以是随机策略,就像我们在之前的文章中使用的那样),只有代理第一次到达 S 才算数:

image.png

  • EverEvery-Visit 蒙特卡洛政策评估

对于每一集,使用策略(可以是随机策略,就像我们在之前的文章中使用的那样),每次代理到达 S 计数:

image.png

  • 增量蒙特卡洛更新

对于情节中的每个状态St ,都有一个奖励 Gt,对于每出现一次St,状态的平均值V(St) 通过以下公式计算:

image.png

时间差异学习

Monte-Carlo强化学习算法克服了未知模型带来的策略估计困难。但是缺点是策略只能在整集之后更新。

也就是说,蒙特卡洛方法没有充分利用MDP学习任务结构。幸运的是,这就是更高效的时间差分 (TD) 方法的用武之地,它充分利用了 MDP 结构。

时间差异学习:深度编程和蒙特卡洛的结合

正如我们所知,蒙特卡洛方法需要等到情节结束才能确定 V(St)。另一方面,Temporal-Difference 或 TD 方法只需要等到下一个时间步。

也就是说,在时间t + 1时,TD 方法使用观察到的奖励 Rt+1 并立即形成TD 目标 R(t+1)+V(St+1) ,用 TD 误差更新 V(St) (我们'将在下面定义)。

解决了蒙特卡罗的缺点后,我们准备进一步讨论时间差分学习。著名的 Q-learning 算法属于 TD 方法,但让我们从最简单的一种开始,称为TD (0)

TD (0)

在蒙特卡洛,Gt 是完整剧集的实际回归。现在,如果我们将 Gt 替换为估计的回报R(t+1)+V(St+1) ,这就是TD(0) 的样子:

image.png

在哪里:

  • R(t+1)+V(St+1) 称为TD目标值
  • R(t+1)+V(St+1)- V(St) 称为TD误差

MC使用准确的return Gt更新值,TD使用Bellman Optimality Equation估计值,然后用目标值更新估计值。

概括

你做到了!通过本文,我希望您已获得以下基本知识:

  • MC:蒙特卡洛学习
  • TD:时间差异学习
  • 最简单的TD学习,TD(0)