深度强化学习课程文档

蒙特卡洛与时序差分学习

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

蒙特卡洛与时序差分学习

在深入了解 Q-学习之前,我们需要讨论的最后一件事是两种学习策略。

请记住,强化学习智能体**通过与环境交互来学习。**其理念是,**根据经验和收到的奖励,智能体将更新其价值函数或策略。**

蒙特卡洛和时序差分学习是两种不同的**训练价值函数或策略函数的策略。**它们都**利用经验来解决强化学习问题。**

一方面,蒙特卡洛**在学习之前使用整个回合的经验。**另一方面,时序差分**只使用一个步骤(St,At,Rt+1,St+1S_t, A_t, R_{t+1}, S_{t+1} )来学习。**

我们将**使用基于价值的方法示例**来解释这两种方法。

蒙特卡洛:在回合结束时学习

蒙特卡洛等待到回合结束,计算GtG_t(回报),并将其用作**更新 V(St)V(S_t) 的目标。**

因此,它需要**完整的交互回合才能更新价值函数。**

Monte Carlo

如果我们举一个例子:

Monte Carlo
  • 我们总是**从相同的起点**开始回合。

  • **智能体使用策略采取行动。**例如,使用 Epsilon Greedy 策略,这是一种在探索(随机行动)和利用之间交替的策略。

  • 我们获得**奖励和下一个状态。**

  • 如果猫吃了老鼠,或者老鼠移动了 > 10 步,我们就终止回合。

  • 在回合结束时,**我们有一个状态、行动、奖励和下一个状态元组的列表。**例如 [[状态瓦片 3 底部,向左,+1,状态瓦片 2 底部],[状态瓦片 2 底部,向左,+0,状态瓦片 1 底部]…]

  • **智能体将对总奖励GtG_t**求和(以查看其表现如何)。

  • 然后它将**根据公式更新V(st)V(s_t)。**

    Monte Carlo
  • 然后**用这些新知识开始新游戏。**

通过运行越来越多的回合,**智能体将学会玩得越来越好。**

Monte Carlo

例如,如果我们使用蒙特卡洛训练状态价值函数

  • 我们初始化价值函数,**使其对每个状态返回 0 值。**

  • 学习率(lr)为 0.1,折扣率(discount rate)为 1(无折扣)。

  • 我们的老鼠**探索环境并采取随机行动**

    Monte Carlo
  • 老鼠移动了超过 10 步,因此回合结束。

    Monte Carlo
  • 我们有一个状态、行动、奖励、下一个状态的列表,**我们需要计算回报Gt=0G{t=0}**。Gt=Rt+1+Rt+2+Rt+3...G_t = R_{t+1} + R_{t+2} + R_{t+3} ...(为简单起见,我们不对奖励进行折扣)G0=R1+R2+R3G_0 = R_{1} + R_{2} + R_{3}… G0=1+0+0+0+0+0+1+1+0+0 G0=3G_0 = 3

  • 我们现在可以计算**新的**V(S0)V(S_0):

    Monte Carlo V(S0)=V(S0)+lr[G0V(S0)]V(S_0) = V(S_0) + lr * [G_0 — V(S_0)] V(S0)=0+0.1[30]V(S_0) = 0 + 0.1 * [3 – 0] V(S0)=0.3V(S_0) = 0.3
Monte Carlo

时序差分学习:每一步都学习

另一方面,**时序差分只等待一次交互(一个步骤)St+1S_{t+1}**来形成时序差分目标并更新V(St)V(S_t)使用Rt+1R_{t+1}γV(St+1) \gamma * V(S_{t+1}).

**时序差分的核心思想是在每个步骤更新V(St)V(S_t)。**

但是因为我们没有经历整个回合,所以我们没有GtG_t(期望回报)。相反,**我们通过添加Rt+1R_{t+1} 和下一个状态的折扣值来估计GtG_t。**

这被称为自举。之所以这样称呼,**是因为时序差分的更新部分基于现有估计值V(St+1)V(S_{t+1}),而不是完整的样本GtG_t。**

Temporal Difference

这种方法称为 TD(0) 或**一步时序差分(在任何单个步骤后更新价值函数)。**

Temporal Difference

如果我们使用相同的示例,

Temporal Difference
  • 我们初始化价值函数,使其对每个状态返回 0 值。

  • 学习率(lr)为 0.1,折扣率(discount rate)为 1(无折扣)。

  • 我们的老鼠开始探索环境并采取随机行动:**向左走**

  • 它得到一个奖励Rt+1=1R_{t+1} = 1因为它**吃了一块奶酪**

    Temporal Difference
Temporal Difference

我们现在可以更新V(S0)V(S_0):

新的V(S0)=V(S0)+lr[R1+γV(S1)V(S0)]V(S_0) = V(S_0) + lr * [R_1 + \gamma * V(S_1) - V(S_0)]

新的V(S0)=0+0.1[1+100]V(S_0) = 0 + 0.1 * [1 + 1 * 0–0]

新的V(S0)=0.1V(S_0) = 0.1

所以我们刚刚更新了状态 0 的价值函数。

现在我们**继续与这个环境交互,使用我们更新后的价值函数。**

Temporal Difference

总结一下

  • 使用*蒙特卡洛*,我们从一个完整的 эпизод 更新价值函数,因此我们**使用该 эпизод 的实际准确折扣回报。**

  • 使用*时序差分学习*,我们从一个步骤更新价值函数,并替换GtG_t我们不知道的,用**一个称为 TD 目标(时序差分目标)的估计回报。**

    Summary
< > 在 GitHub 上更新