深度强化学习课程文档

从 Q-Learning 到 Deep Q-Learning

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

从 Q-Learning 到 Deep Q-Learning

我们学习到 Q-Learning 是一种用于训练 Q 函数的算法,Q 函数是一种动作价值函数,它确定在特定状态并采取特定动作的价值。

Q-function

Q 来自于在该状态下该动作的“质量”。

在内部,我们的 Q 函数由 Q 表编码,Q 表是一个表格,其中每个单元格对应于一个状态-动作对的值。可以将此 Q 表视为我们 Q 函数的记忆或备忘单。

问题在于 Q-Learning 是一种表格方法。如果状态和动作空间不够小,无法通过数组和表格有效地表示,这就会成为问题。换句话说:它不具有可扩展性。Q-Learning 在小型状态空间环境中运行良好,例如

  • FrozenLake,我们有 16 个状态。
  • Taxi-v3,我们有 500 个状态。

但是想想我们今天要做什么:我们将训练一个智能体学习玩太空侵略者,这是一个更复杂的游戏,使用帧作为输入。

正如 Nikita Melkozerov 提到的,Atari 环境的观察空间形状为 (210, 160, 3)*,包含从 0 到 255 的值,因此这给了我们256210×160×3=256100800256^{210 \times 160 \times 3} = 256^{100800}可能的观察结果(为了比较,我们大约有108010^{80}可观测宇宙中的原子)。

  • Atari 中的单帧由 210x160 像素的图像组成。考虑到图像是彩色的 (RGB),因此有 3 个通道。这就是形状为 (210, 160, 3) 的原因。对于每个像素,值可以从 0 到 255。
Atari State Space

因此,状态空间是巨大的;因此,为该环境创建和更新 Q 表将效率低下。在这种情况下,最好的方法是使用参数化的 Q 函数来近似 Q 值Qθ(s,a)Q_{\theta}(s,a) .

这个神经网络将近似地给出给定状态下每个可能动作的不同 Q 值。这正是 Deep Q-Learning 所做的。

Deep Q Learning

现在我们了解了 Deep Q-Learning,让我们更深入地研究 Deep Q 网络。

< > 在 GitHub 上更新