FrozenLake-v1 ☃️ 和 Taxi-v3 🚕环境相对简单,状态空间是离散且较小的(FrozenLake-v1 有 16 个不同的状态,Taxi-v3 有 500 个), Atari 游戏中的状态空间可以包含从$10^9$ 到$10^{11}$个状态。
在状态空间较大的环境中,生成和更新 Q 表会变得低效。
深度 Q 学习不是使用 Q 表,而是使用一个神经网络,该网络接收一个状态,并根据该状态近似每个动作的 Q 值。
Q-Learning 是一种用于训练我们的 Q-函数的算法, Q-函数是一种动作-价值函数—决定了在特定状态下执行特定动作的价值
Q 函数的内部由一个 Q 表编码,Q 表中的每个单元格对应一个状态-动作对的价值, 将这个 Q 表视为 Q 函数的记忆。
在这种情况下,最好的想法是使用参数化的 Q 函数$Q_θ(s,a)$来近似 Q 值

作为输入,将通过网络的 4 帧堆栈作为状态,并输出在该状态下每个可能动作的 Q 值向量。
然后,就像 Q 学习一样,只需要使用 $\epsilon$ 贪婪策略来选择要采取的动作。
需要预处理输入,因为希望减少状态空间的复杂性,从而减少训练所需的计算时间。
为了实现这一点,将状态空间减少到 84x84,并将其转换为灰度图像,(三个颜色通道(RGB)减少到了 1)因为在 Atari 环境中颜色并不包含重要信息。
<aside> 💡
为什么要将四帧图像堆叠在一起?将帧堆叠在一起是因为这有助于处理时间上的局限性。 例子: 以Pong游戏为例

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

</aside>