【问题标题】:Why and when is deep reinforcement learning needed instead of q-learning?为什么以及何时需要深度强化学习而不是 q-learning?
【发布时间】:2018-11-04 22:23:12
【问题描述】:
我一直在研究强化学习,了解价值/策略迭代、TD(1)/TD(0)/TD(Lambda) 和 Q-learning 的概念。我不明白为什么 Q-learning 不能用于所有事情。为什么我们需要DeepMind's DQN paper 中描述的“深度”强化学习?
【问题讨论】:
标签:
machine-learning
neural-network
deep-learning
reinforcement-learning
q-learning
【解决方案1】:
Q-learning 是一种无模型强化学习方法,于 1989 年首次记录。它是“无模型”的,因为代理不会尝试对其环境进行建模。它基于一个 Q 表得出一个策略,该表存储从给定状态采取任何行动的结果。当代理处于状态s 时,它会参考该状态的 Q 表并选择具有最高关联奖励的动作。为了让代理达到最优策略,它必须平衡探索所有状态的所有可用动作与利用 Q 表所说的给定状态的最优动作。如果代理总是选择一个随机动作,它永远不会达到最优策略;同样,如果代理总是选择估计奖励最高的动作,它可能会得出次优策略,因为某些状态-动作对可能尚未完全探索。
如果有足够的时间,Q-learning 最终可以为任何有限马尔可夫决策过程 (MDP) 找到最优策略 π。在简单的井字游戏示例中,不同游戏状态的总数少于 6,000。这听起来可能是一个很高的数字,但考虑一下 OpenAI 的 gym 环境中的一个简单的视频游戏环境,称为“月球着陆器”。
目标是使用着陆器的推进器引导着陆器在黄旗之间着陆,确保着陆器的惯性足够慢,以免坠毁。可能的动作是:什么都不做,使用左推进器,使用右推进器,使用主中心推进器。使用主推进器会产生小的负面回报。着陆而不崩溃提供了很大的奖励,在旗帜之间降落也提供了很大的奖励。崩溃提供了很大的负面奖励。代理体验状态作为以下参数的组合:着陆器的x 和y 坐标,以及它的x 和y 每条腿的速度、旋转、角速度和简单的二进制值以确定它是否接触地面。考虑代理可能从这些参数的不同组合中遇到的所有不同的可能状态;与井字游戏相比,这个 MDP 的状态空间是巨大的。代理需要花费大量时间来体验足够多的情节来可靠地驾驶着陆器。 Lunar Lander 环境提供的状态空间太大,传统 Q 学习无法在合理的时间内有效解决,但通过一些调整(以“深度”Q 学习的形式),智能体确实可以在合理的时间内定期成功地在环境中导航。
正如您链接到的 DeepMind 论文中所述,深度 Q 学习基于 Tesauro 的 TD-Gammon 方法,该方法根据代理与环境交互时收到的信息近似值函数。一个主要区别是,不是不断更新价值函数,而是以固定集或批次处理情节中的经验。一个情节完成后,最旧的情节会从集合中移除,最新的情节会被推入集合中。这有助于算法更有效地探索环境,因为它试图防止反馈循环。这种批处理的使用被称为“体验回放”。它也更有效,因为从成对的连续状态中学习可能会由于这两个状态的密切相关而导致不准确。
TL;DR:当状态-动作空间如此之大以至于常规 Q 学习需要很长时间才能收敛时,深度强化学习可能是一种可行的替代方案,因为它使用了函数逼近。
【解决方案2】:
Q-learning 使用 Q-table 存储 Q-values,并使用它们通过使用相应的 Q-values 为当前状态选择操作。
但这并不总是可行的。当我们有很大的状态空间时,我们的 Q-table 变得非常大,并且每个估计的 Q-values 需要很长时间才能更新,并且它们中的大多数可能只更新很少次,因此它们是不准确的。
为了解决这类问题,我们使用函数逼近器来学习一般的 Q 值。神经网络擅长函数逼近,因此提出了DQN来获取状态表示并估计Q值。现在网络学习使用状态的低级特征来预测 Q 值,因此有助于泛化。