Q-learning本身并不新鲜。使用神经网络作为函数近似值的Q-learning也不新鲜(例如,神经适应型q迭代)。有关DQN的论文是第一个使用深度卷积网络来解决这一类型问题的文章,并引入了一些新颖的方法,使得训练过程更加稳定。 首先,回放经验。Vanilla Q-learning 的想法是一步一步操作,从而获得奖励和下一个状态,然后根据这个转换更新近似函数参数。DQN的想法是进行转换,并将其保存在“重放内存”中——这是一个数组,用于存储最后10^6(<插入任何大数字>)个转换期间有关奖励的信息、转换前后的状态,以及判别事件是否已达到终端(游戏结束)或否。 有了回放经验,我们可以随机采样mini-batch,更有效地学习。 第一,每个转换可能潜在地用于几个权重更新,并且更有效地使用数据。 第二,通过随机抽样,我们打破了样本之间的相关性,从而减少了权重更新的方差。 使算法更稳定的另一件事是DQN使用两个神经网络:第一个计算当前状态的Q值,第二个计算下一个状态的Q值。 你可以从具有目标的方程式中看出:两个不同的Q函数分别使用θ和θ'。每10000步,从学习参数θ复制参数θ',这有助于提高稳定性。 这里使用一个函数的出现的问题是,当我们更新权重时,Q(s,a)和Q(s',a')都会增加,这可能会导致振荡或策略散度。使用两个单独的网络在目标Q值的更新和计算之间增加了延迟,并减少这种情况。如果你对这些现象感兴趣,请阅读 DQN Nature paper中的“方法”部分。 好的,上面描述的一切听起来都很简单。如果还有一些你不明白的东西,请看David Silver的讲座,他完美地解释了这一切! 了解了这些,我们现在可以建立一个True AI吗?对不起,但我们不能。 强化学习的挑战 有几个问题阻碍我们建立一个能够在星际争霸II上击败ByuN(Hyun Woo,韩国的一位星际争霸选手)的智能体,使自动驾驶汽车早日问世,以及给你的奶奶买个午餐后为她洗碗的机器人。 其中一个问题是,我们的智能体最后获得的奖励可能非常少。假设你下国际象棋,如果你输了,你怎么知道什么时候下的死招?此外,很有可能没有死招,而是几个平常的棋子挪动。 奖励稀疏性是阻碍我们击败“蒙提祖玛的复仇”游戏的一个问题,这是一个非常难的Atari 2600游戏,尚未得到破解。 与前一个密切相关的另一个问题是样本效率问题。或者,更坦率地讲,是样本效率低下问题。即使掌控一个简单的游戏,如太空侵略者(Space Invaders),都可能需要几天的游戏时间。由于我们可以利用模拟器,所以在游戏中加速学习过程是很容易的,但是如果我们想在现实生活中学习一些东西呢?不幸的是,物理学还达不到,而且我们不能加速时间。 插图来源() 有一种方法可以解决这些问题,以及其他问题——模仿学习。正如我们在这篇文章开头提到的那样。像我们所说,人类很少学习一些没有任何先前信息的东西。我们现在使用这个数据,我们应该做什么? 什么是模仿学习? 模仿学习是通过在某种意义上模仿人类行为来暗示给予智能体关于世界的先前信息。 模仿学习不仅有助于我们解决样本效率低下或计算可行性问题,还可能使训练过程更加安全。 我们不能把一辆自动驾驶汽车放在街道的中间,让它做任何它想要做的事情。我们不希望它危害周围的人,摧毁某人的财产或设备。对人类演示的数据进行预处理可能会使训练过程更快,避免不好的情况发生。 说了上面所有的一切,我们忘了一件事——数据。 训练模型需要一些数据。 训练深度学习模型需要更多的数据。 训练深度强化学习模型需要...好的,你明白了。 所以,这一系列文章只是部分描述我们可以用演示数据做什么。所有这一切的要点是要求人类演示数据集,不幸的是,到目前为止我们没有很多办法。 好的,内容就到这里。这篇文章的要点是: 机器学习还远远没有建立一个能够解决或多或少复杂的现实世界任务的自主智能体; 模仿学习是使这些智能体更接近的可能解决方案之一; 我们还概述了强化学习的基础知识,特别是详细描述了强化算法之一的DQN。 想进一步了解,欢迎阅读以下内容: Andrew Sutton和Andrew Barto的强化学习圣经 David Silver在伦敦大学学院的强化学习课程 DQN原文报告:NIPS workshop, Nature 原始DQN torch代码 (责任编辑:本港台直播) |