我想知道在同一问题上运行时深度 Q 学习与 Q 学习的收敛时间。谁能告诉我他们之间的模式?如果用图表来解释会更好。
1 回答
简而言之,状态越复杂,DQN 对 Q-Learning 的影响就越好(复杂,我指的是所有可能状态的数量)。当状态太复杂时,由于时间和硬件的限制,Q-learning 变得几乎不可能收敛。
请注意,DQN实际上是一种Q-Learning,它使用神经网络来充当aq table,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 值。因此收敛起来要容易得多。