从 Q 学习到深度 Q 学习
我们了解到 Q 学习是一种算法,我们用它来训练我们的 Q 函数,一个 动作值函数 ,它决定在特定状态下采取特定动作的价值。
Q 来自于该状态下该动作的“质量”。
在内部,我们的 Q 函数由 一个 Q 表编码,该表中的每个单元格对应于一个状态-动作对值。 将此 Q 表视为 我们 Q 函数的记忆或备忘单。
问题是,Q 学习是一种表格方法。如果状态和动作空间不够小,无法通过数组和表格有效地表示,就会成为问题。换句话说:它不可扩展。Q 学习在状态空间较小的环境中效果很好,例如
- FrozenLake,我们有 16 个状态。
- Taxi-v3,我们有 500 个状态。
但是想想我们今天要做的事情:我们将训练一个代理来学习玩 Space Invaders,一个更复杂的游戏,使用帧作为输入。
正如 Nikita Melkozerov 提及的,Atari 环境 具有形状为 (210, 160, 3)* 的观察空间,包含范围从 0 到 255 的值,因此我们得到可能的观察结果(作为比较,我们在大约可观测宇宙中的原子数)。
- Atari 中的单个帧由 210x160 像素的图像组成。由于图像为彩色(RGB),因此有 3 个通道。这就是形状为 (210, 160, 3) 的原因。对于每个像素,值可以从 0 到 255。
因此,状态空间非常大;由于此原因,为该环境创建和更新 Q 表将效率低下。在这种情况下,最好的方法是使用参数化 Q 函数逼近 Q 值 .
此神经网络将在给定状态的情况下近似每个可能动作在该状态下的不同 Q 值。这正是深度 Q 学习所做的。
现在我们了解了深度 Q 学习,让我们深入了解深度 Q 网络。
< > 更新 在 GitHub 上