深度强化学习课程文档

一个 Q-Learning 示例

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

一个 Q-Learning 示例

为了更好地理解 Q-Learning,我们来举一个简单的例子

Maze-Example
  • 你是一只小迷宫里的老鼠。你总是从同一个起点开始。
  • 目标是吃到右下角的那一大堆奶酪并避开毒药。毕竟,谁不喜欢奶酪呢?
  • 如果我们吃到毒药、吃到那一大堆奶酪,或者走的步数超过五步,本回合就结束。
  • 学习率为 0.1
  • 折扣率(gamma)为 0.99
Maze-Example

奖励函数如下:

  • +0: 进入没有奶酪的状态。
  • +1: 进入有小块奶酪的状态。
  • +10: 进入有大块奶酪的状态。
  • -10: 进入有毒药的状态,因此死亡。
  • +0 如果我们走了超过五步。
Maze-Example

为了训练我们的代理有一个最优策略(即一个向右、向右、向下的策略),我们将使用 Q-Learning 算法

第 1 步:初始化 Q 表

Maze-Example

所以,目前,我们的 Q 表是无用的;我们需要使用 Q-Learning 算法来训练我们的 Q 函数。

我们进行 2 个训练时间步

训练时间步 1

第 2 步:使用 Epsilon Greedy 策略选择一个动作

因为 epsilon 很大(= 1.0),我采取一个随机动作。在这种情况下,我向右走。

Maze-Example

第 3 步:执行动作 At,得到 Rt+1 和 St+1

向右走,我得到一小块奶酪,所以Rt+1=1R_{t+1} = 1然后我进入了一个新状态。

Maze-Example

第 4 步:更新 Q(St, At)

我们现在可以更新Q(St,At)Q(S_t, A_t)使用我们的公式。

Maze-Example Maze-Example

训练时间步 2

第 2 步:使用 Epsilon Greedy 策略选择一个动作

我再次采取了一个随机动作,因为 epsilon=0.99 很大。(注意,我们稍微衰减了 epsilon,因为随着训练的进行,我们希望探索越来越少)。

我选择了动作“向下”。这不是一个好的动作,因为它把我引向了毒药。

Maze-Example

第 3 步:执行动作 At,得到 Rt+1 和 St+1

因为我吃了毒药,所以我得到Rt+1=10R_{t+1} = -10,并且我死了。

Maze-Example

第 4 步:更新 Q(St, At)

Maze-Example

因为我们死了,我们开始一个新回合。但我们在这里看到的是,通过两个探索步骤,我的代理变得更聪明了。

随着我们继续探索和利用环境,并使用 TD 目标更新 Q 值,Q 表将为我们提供越来越好的近似。在训练结束时,我们将得到最优 Q 函数的估计。

< > 在 GitHub 上更新