Q-learning Vs Deep Q-learning的收敛时间

问题描述

我想知道在同一问题上运行时 Deep Q-learning 与 Q-learning 的收敛时间。谁能告诉我他们之间的模式?如果用图表来解释会更好。

解决方法

简而言之,状态越复杂,DQN 就优于 Q-Learning(复杂,我指的是所有可能状态的数量)。当状态过于复杂时,由于时间和硬件限制,Q-learning 几乎不可能收敛。


注意,DQN实际上是一种Q-Learning,它使用一个神经网络来充当一个q表,Q-network和Q-table都是用来输出一个以状态为输入的Q值。我将继续使用 Q-learning 来引用带有 Q-table 的简单版本,带有神经网络版本的 DQN

如果不指定特定问题,您就无法确定收敛时间,因为这实际上取决于您在做什么:

例如,如果你正在做一个像 FrozenLake 这样的简单环境:https://gym.openai.com/envs/FrozenLake-v0/
只要你有一个合理的奖励函数,Q-learning 会比 DQN 收敛得更快。
这是因为 FrozenLake 只有 16 个状态,Q-Learning 的算法非常简单高效,所以它的运行速度比训练神经网络快很多。

但是,如果您正在执行类似 atari 的操作:https://gym.openai.com/envs/Assault-v0/
有数百万个状态(请注意,即使是单个像素差异也被认为是全新的状态),Q-Learning 需要枚举 Q-table 中的所有状态才能真正收敛(因此它可能需要非常大的内存和非常长的训练时间能够枚举和探索所有可能的状态)。事实上,我不确定它是否会收敛到一些更复杂的游戏中,仅仅因为有这么多状态。

这就是 DQN 有用的时候。神经网络可以概括状态并找到状态和动作(或更准确地说是状态和 Q 值)之间的函数。它不再需要枚举,而是学习状态中隐含的信息。即使你从来没有在训练中探索过某个状态,只要你的神经网络经过训练可以学习其他相似状态上的关系,它仍然可以泛化并输出 Q 值。因此更容易收敛。