我想知道在处理同一问题时,深度Q学习与Q学习的收敛时间。有人能告诉我他们之间的模式吗?如果用图表来解释会更好。
简而言之,状态越复杂,DQN就越优于Q-Learning(我所说的复杂,是指所有可能状态的数量(。当状态过于复杂时,由于时间和硬件的限制,Q学习几乎不可能收敛。
注意,DQN实际上是一种Q学习,它使用神经网络来充当Q表,Q网络和Q表都用于输出以状态为输入的Q值。我将继续使用Q学习来参考带有Q表的简单版本,DQN带有神经网络版本
在不指定特定问题的情况下,你无法判断收敛时间,因为这实际上取决于你在做什么:
例如,如果你在做一个简单的环境,比如FrozenLake:https://gym.openai.com/envs/FrozenLake-v0/
只要你有一个合理的奖励函数,Q学习就会比DQN更快地收敛
这是因为FrozenLake只有16个状态,Q-Learning的算法非常简单高效,因此它的运行速度比训练神经网络快得多。
然而,如果你正在做类似atari的事情:https://gym.openai.com/envs/Assault-v0/
有数百万种状态(请注意,即使是单个像素的差异也被认为是全新的状态(,Q-Learning需要枚举Q-表中的所有状态才能真正收敛(因此可能需要非常大的内存加上非常长的训练时间才能枚举和探索所有可能的状态(。事实上,我不确定它是否会在某种更复杂的游戏中收敛,仅仅因为有这么多状态。
这里是DQN变得有用的时候。神经网络可以推广状态,并找到状态和动作之间的函数(或者更准确地说,状态和Q值(。它不再需要枚举,而是学习状态中隐含的信息。即使你从未在训练中探索过某个状态,只要你的神经网络经过训练来学习其他类似状态上的关系,它仍然可以泛化并输出Q值。因此,收敛要容易得多。