深度强化学习课程文档

深度 Q 网络 (DQN)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

深度 Q 网络 (DQN)

这是我们的深度 Q-Learning 网络的架构

Deep Q Network

作为输入,我们接受堆叠的 4 帧,将其作为状态传递到网络中,并输出一个向量,其中包含该状态下每个可能动作的 Q 值。然后,就像 Q-Learning 一样,我们只需要使用 epsilon-贪婪策略来选择要采取的动作。

当神经网络初始化时,Q 值估计非常糟糕。但在训练期间,我们的深度 Q 网络智能体将情况与适当的动作相关联,并学会好好玩游戏

预处理输入和时间限制

我们需要预处理输入。这是一个重要的步骤,因为我们希望降低状态的复杂性,以减少训练所需的计算时间

为了实现这一点,我们将状态空间缩小到 84x84 并将其灰度化。我们可以这样做,因为 Atari 环境中的颜色不会添加重要的信息。这是一个很大的改进,因为我们将三个颜色通道 (RGB) 减少到 1

如果某些游戏屏幕的一部分不包含重要信息,我们也可以裁剪屏幕的该部分。然后我们将四个帧堆叠在一起。

Preprocessing

我们为什么要将四个帧堆叠在一起? 我们将帧堆叠在一起是因为它有助于我们处理时间限制问题。让我们以 Pong 游戏为例。当您看到这个帧时

Temporal Limitation

你能告诉我球往哪里去吗? 不,因为一个帧不足以感知运动! 但是,如果我再添加三个帧呢? 在这里你可以看到球正向右移动

时间限制 这就是为什么,为了捕捉时间信息,我们将四个帧堆叠在一起。

然后堆叠的帧由三个卷积层处理。这些层使我们能够捕获和利用图像中的空间关系。而且,由于帧堆叠在一起,我们可以利用这些帧之间的一些时间属性

如果您不知道什么是卷积层,请不要担心。您可以查看 Udacity 的免费深度学习课程的第 4 课

最后,我们有几个全连接层,它们输出该状态下每个可能动作的 Q 值。

Deep Q Network

因此,我们看到深度 Q-Learning 使用神经网络来近似给定状态下每个可能动作的不同 Q 值。现在让我们研究深度 Q-Learning 算法。

< > 在 GitHub 上更新