用深度强化学习来玩游戏

末日死斗

深度强化学习是人工智能的最前沿。结合深度学习的最新进展和基于心理学的强化学习,我们已经能够创建疯狂的AI,在复杂环境中能够胜过人类 - 所有这些都没有任何标记数据!

为了试验DRL的强大功能,本文构建了一个程序,允许代理人自我玩死亡竞赛。在本文中,我将分解创建我的代理所使用的技术,以及一些在DRL的最前沿。

摘要:深度Q网络

在Q Learning中,任何特定状态和动作的Q值通常由TD算法给出Q值。(最小化更新值的目标)

相比之下,Deep Q Learning使用类似的逻辑来查找Q,但不是用Bellman方程计算它,而是用神经网络直接近似它,其中状态和动作用作输入。

然而,Deep Q Networks不是使用每个新的状态动作对更新每个单独的Q值,而是通过使用Bellman方程中使用的更新值计算损失函数来进行反向传播。

第一项是目标值

在使用Deep Q Learning代替Q Learning时,我们在模型性能和存储方面都获得了巨大的提升!发现最佳Q值要快得多,并且不需要为每个单独的状态动作对存储Q值(因为状态和动作直接馈入Deep Q网络!)。

创造一个毁灭死亡竞赛特工的大脑

只有深度Q网络足以创造一个自我玩耍的代理,但它们并不是最理想的; 他们仍然可以改进!虽然深度Q学习被用于该计划,但使用了两个主要的改动:

1. 目标深度Q网络

2. 决斗深度Q网络

目标深度Q网络

在正常的Deep Q网络中,同一网络预测Q(s,a)和目标值的Q值 - 因此,当网络更新时,Q和目标都将一起移动 - 这反过来又使得它变得更难最小化损失,因为Q值在目标值之后开始"追逐"。

这是一个类比:

假设Q值和目标分别由Bob和Joe表示。Bob和Joe正在玩一个标记游戏,而Bob想要最小化他和Joe之间的距离。然而,当鲍勃每次移动时乔移动,鲍勃很难赶上乔(即失败)。

为了防止Q值"追逐"目标值,我们偶尔会冻结用于预测目标值的网络 - 同时继续更新估算Q值的网络(因此将冻结的网络命名为目标网络) 。根据之前的类比,乔会比鲍勃更快地疲倦,并且需要偶尔停下来休息 - 这反过来会缩小两者之间的差距。

用于查找目标Q的操作可能看起来很复杂,但它只是表示a'在更新值中使用的更好的方式,正常Q网络找到下一个操作,但目标网络使用它来查找目标Q 。

代码实现:

在上面的代码片段中,使用单独的目标网络来预测目标值,其中目标网络复制用于每10000步预测Q值的模型。这反过来又大大提升了模型性能。

决斗深度Q网络

鉴于Q值决定了在给定状态下执行操作的好处,Q可以分解为:

A确定州s每项行动的利益,而V确定处于州s的好处。Q值评估在特定州采取行动的好处。这又可以分为两个部分 - 价值和优势(V和A)。通过分别评估优势和状态值,我们的网络可以更好地确定Q的最佳值。

以此为例:代理被置于汽车游戏中,必须移动以避免进入汽车。当屏幕上没有任何进入的汽车时,动作并不重要 - 代理处于非常好的状态,并且不需要移动。然而,当汽车非常靠近代理时,它会比当前的行动更重视当前行动。

通过优先考虑这样的值,我们可以在训练中更快地找到更好的Q值!

Deep Reinforcement Learning是一个非常新的机器学习领域,并且一直在不断改进。虽然像DQNetworks这样的算法可能是最广为人知的算法,但我们还远未解开DRL的真正潜力。目标和决斗DQN可能有助于释放这种潜力,但我们最终还有很长的路要走。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181109A0JNKE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券