【问题标题】:Convergence time of Q-learning Vs Deep Q-learningQ-learning 与 Deep Q-learning 的收敛时间
【发布时间】:2021-04-26 06:07:10
【问题描述】:

我想知道在同一问题上运行时,深度 Q 学习与 Q 学习的收敛时间。谁能告诉我他们之间的模式?用图表来说明会更好。

【问题讨论】:

    标签: deep-learning q-learning dqn


    【解决方案1】:

    简而言之,状态越复杂,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 值。因此收敛起来要容易得多。

    【讨论】:

    • 如果这是一个重复的 24 个州的天气预报问题怎么办?每个州都由一天中的小时和最近 12 个时间段的天气信息构成。它不像结冰的湖面那样的固定环境。这是一个连续的过程。 DQN 会更好地工作吗?
    • @A_Tahsin 用于时间序列(例如天气)预测,DQN 效果更好(我什至不认为 Q-Learning 会起作用)。 但是,一般来说,强化学习在这里不是一个好的选择,您可能想尝试深度学习。强化学习旨在模仿人类如何学习做某事:选择行动以最大化环境中的奖励,并从环境中获取反馈,通常将 RL 用于视频游戏、机器人等领域。预测是一个回归问题,所以深度学习(尤其是 RNN)或者传统的机器学习会更好。