深度强化学习课程文档

从Q-Learning到深度Q-Learning

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

从Q-Learning到深度Q-Learning

我们了解到,Q-Learning是一种用于训练我们的Q函数(Q-Function)的算法,Q函数是一种动作-值函数,它确定了在特定状态下采取特定动作的价值。

Q-function

Q来自该状态下该动作的“质量”(Quality)。

在内部,我们的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值。这正是深度Q-Learning所做的。

Deep Q Learning

现在我们已经理解了深度Q-Learning,让我们更深入地了解深度Q网络。

< > 在 GitHub 上更新