一图尽展视频游戏AI技术,DQN无愧众算法之鼻祖优

选自arXiv

via:https://keon.io/rl/deep-q-learning-with-keras-and-gym/

参与:Geek AI、贾伟

优信彩票购彩大厅 1

游戏中的人工智能技术纷繁杂乱,近期来自来自哥本哈根大学和纽约大学的几位研究人员发表的一篇论文对相关技术做了详尽的综述,并用一张图描述出了游戏 AI 技术的历史沿革,DQN以其巨大影响成为众算法之鼻祖。

综述

优信彩票购彩大厅 2

这篇blog将会展示深度强化学习(深度Q学习)是如何使用Keras与Gym环境使机器学会玩CartPole游戏的。只有78行代码哦

如今,将人工智能技术应用到游戏中已经是一个成熟的研究领域,有许多会议和专门的期刊对此进行讨论。来自哥本哈根大学和纽约大学的几位研究人员近期发布的一篇综述文章中,梳理并回顾了视频游戏深度学习领域的最新进展,详细介绍了各种游戏研究平台及相关深度学习方法的演化历史,同时讨论了重要的开放性挑战。据作者介绍,其撰写该论文旨在从不同类型游戏的视角来回顾这个研究领域,指出它们对深度学习的挑战,以及如何利用深度学习来玩这些游戏。

我将会解释一切,不需要你对强化学习有任何的先决知识。

我们感兴趣的是,在不存在前向模型的情况下,使用像素数据或特征向量,玩好一款特定的视频游戏(不同于围棋等棋盘游戏)的方法。

这篇文章中使用的代码的仓库在这里:GitHub

值得注意的是,尽管这篇文章收集并讨论了大量的游戏 AI,但还是有很多在本文中没有涉及到——游戏 AI 是一个广阔而多样的领域。这篇论文的重点在于深度学习方法如何更好地玩视频游戏,而关于如何以靠谱的、有趣的或与人类似的方式玩游戏的研究也有很多。人工智能技术也被用于对玩家的行为、经验或偏好建模,或被用于生成游戏内容(如游戏难度、贴图或规则)。深度学习并不是游戏中唯一使用的人工智能方法。其它比较著名的方法,例如还包括蒙特卡罗树搜索和演化计算。在接下来的内容中,读者需要记住,这篇综述论文涉及的范围还是很有限的。

 

本文将简单介绍这篇论文的核心内容,并着重介绍关于游戏 AI 中深度学习技术历史演化的部分。

强化学习

论文标题:Deep Learning for Video Game Playing

优信彩票购彩大厅 3

优信彩票购彩大厅 4

强化学习是一种允许你创造能从环境中交互学习的AI agent 的机器学习算法。就跟我们学习骑自行车一样,这种类型的AI通过试错来学习。如上图所示,大脑代表AI agent并在环境中活动。当每次行动过后,agent接收到环境反馈。反馈包括回报(reward)和环境的下个状态(state)。回报由模型设计者定义。如果类比人类学习自行车,我们会将车从起始点到当前位置的距离定义为回报。

链接:https://arxiv.org/abs/1708.07902

 

摘要:在本文中,我们将回顾近年来深度学习的进展,重点关注深度学习技术如何被用于玩不同类型的电子游戏,如第一人称射击游戏、街机游戏和实时策略游戏。我们分析了不同的游戏类型对深度学习系统的独特要求,并着重讨论了将这些机器学习方法应用于视频游戏时重要的开放性挑战(如通用的游戏玩法、应对巨大的决策空间和稀疏的奖励信号)。

深度强化学习

游戏中的深度学习

2013年,在DeepMind 发表的著名论文Playing Atari with Deep Reinforcement Learning中,他们介绍了一种新算法,深度Q网络(DQN)。文章展示了AI agent如何在没有任何先验信息的情况下通过观察屏幕学习玩游戏。结果令人印象深刻。这篇文章开启了被我们成为“深度强化学习”的新时代。这种学习算法是混合了深度学习与强化学习的新算法。

人工神经网络的架构大致可分为两大类。一类是前馈和递归神经网络,前馈网络采用单个输入(例如游戏状态的表示),并输出每个可能动作的概率值。另一类是卷积神经网络,它由可训练的滤波器组成,适用于处理图像数据,例如来自视频游戏屏幕的像素。

优信彩票购彩大厅 5

优信彩票购彩大厅 6

 

优信彩票购彩大厅 7

在Q学习算法中,有一种函数被称为Q函数,它用来估计基于一个状态的回报。同样地,在DQN中,我们使用一个神经网络估计基于状态的回报函数。我们将在之后细致地讨论这一部分工作。

RNN 通常应用于时间序列数据,其中网络的输出取决于先前时间步骤的激活。除了网络的先前隐藏状态与下一个输入一起反馈给网络外,RNN 的训练过程类似于前馈网络。这就允许网络通过记忆先前的激活而变得具有上下文感知,这在那种单个观察不代表完整状态的游戏中是非常有用的。对于 shi'pi 视频游戏,通常使用一堆卷积层,然后是循环层和完全连接的前馈层。

 

优信彩票购彩大厅 8

Cartpole游戏

机器学习任务中主要有三种任务类型:监督学习、无监督学习和强化学习。这些任务类型中的方法通常基于梯度下降优化。

通常训练一个agent玩Atari游戏通常会好一会儿(从几个小时到一天)。所以我们将训练agent玩一个简单的游戏,CartPole,并使用在上面论文中的一些思想。

1、监督学习

CartPole是OpenAI gym中最简单的一个环境。正如你在文章一开始看到的那个gif一样,CartPole的目的就是杆子平衡在移动的小车上。除了像素信息,还有四种信息可以用作状态,像是,杆子的角度和车在滑轨的位置。agent可以通过施加左(0)或右(1)的动作,使小车移动。

在监督学习中,模型是从样本中训练出来的。大数据集通常有利于提高模型的性能。在游戏中这些数据可以来自游戏踪迹(即人类在游戏中的记录),用这些数据可以训练 agent 学习从输入状态到输出动作的映射。

Gym使游戏环境的交互非常方便:

虽然现有数据可以让 agent 快速地学习到最佳实践,但由此获得的模型往往也是脆弱的;可用的数据生产成本可能很高,并且可能缺少 agent 应该处理的关键方案。对于游戏的玩法,算法也仅限于数据中可用的策略,而不能自行探索新算法。因此,在游戏中监督算法通常通过与强化学习算法及一些额外训练相结合来使用。

next_state, reward, done, info = env.step(action)

监督学习在游戏中的另一个应用是学习游戏的状态切换。神经网络可以学习预测动作状态对的下一状态,而不是为给定状态生成动作。

如我们上面所说,action要么是0要么是1。当我们将这些数字串入环境中将会得出结果。“env”是游戏环境类。“done”为标记游戏结束与否的布尔量。当前状态“state”,“action”,“next_state”与“reward”是我们用于训练agent的数据。

2、无监督学习

 

无监督学习的目标不是学习数据与其标签之间的映射,而是发现数据中的模式。这些算法可以学习数据集的特征分布,可以用于聚类相似数据,将数据压缩为基本特征,或创建原始数据特征的新合成数据。对于奖励稀疏的游戏,例如蒙特祖玛的复仇(Montezuma』s Revenge),以无监督的方式从数据中学习是一种潜在的解决方案,也是一项重要的开放式深度学习挑战。

使用Keras实现简单神经网络

深度学习中一种重要的无监督学习技术是自动编码器,它是一种试图学习使输入与输出一致的神经网络。网络由两部分组成:将输入 x 映射到低维隐藏向量 h 的编码器,以及尝试从 h 重构 x 的解码器。主要思想是,为了保持较小的 h,网络必须学会压缩数据,从而学习良好的表示。研究人员将这种无监督算法应用于游戏,可以从高维数据中提取到更有意义的低维数据。但目前这一研究方向仍处于早期阶段。

这篇文章不是关于深度学习或神经网络的。所以我们将神经网络试做黑箱算法。这个算法的功能是从成对的输入与输出数据学习某种模式并且可以基于不可见的输入数据预测输出。但是我们应该理解在DQN算法中的那部分神经网络算法。

3、强化学习

优信彩票购彩大厅 9

在强化学习中,agent 通过与向 agent 提供奖励信号的环境交互来学习行为。视频游戏可以容易为强化学习设立环境,而玩家则建模为可以在每个步骤采取有限动作集的 agent,奖励信号可以由游戏分数来确定。

注意到我们使用的神经网络类似于上图所示的网络。我们使用一个包含四种输入信息的输入层和三个隐藏层。但是我们在输出层有两个节点因为在这个游戏中有两个按钮(0与1)

在 RL 中,agent 依赖于奖励信号。这些信号可能经常发生,例如游戏中得分的变化;也可能不经常发生,例如用赢或输作为奖励信号。视频游戏可以和 RL 很好地结合,因为大多数游戏都会为成功的策略提供奖励。但开放世界游戏(Open world games)并不总是有明确的奖励模型,因此对 RL 算法具有挑战性。

keras库使基础神经网络的使用变得非常简单。下面的代码会生成一个空的神经网络模型。“activation”,“loss”与“optimizer”是定义神经网络特征的参数但我们不打算在这里讨论它们。

优信彩票购彩大厅 10

# Neural Net for Deep Q Learning

# Sequential() creates the foundation of the layers.
model = Sequential()

# Dense is the basic form of a neural network layer
# Input Layer 4 and Hidden Layer with 128 nodes
model.add(Dense(64, input_dim=4, activation='tanh')) 
# Hidden layer with 128 nodes
model.add(Dense(128, activation='tanh'))
# Hidden layer with 128 nodes
model.add(Dense(128, activation='tanh'))
# Output Layer with 2 nodes
model.add(Dense(2, activation='linear'))

# Create the model based on the information above
model.compile(loss='mse',
              optimizer=RMSprop(lr=self.learning_rate))

游戏类型和研究平台

为了让模型可以基于环境数据理解与预测,我们不得不给它提供数据。下列代码所示,“fit()”方法为模型提供“states”和“target_f”信息。你可以忽视其余参数。

深度学习方法的快速发展无疑受益于公开数据集上的评测。游戏 AI 也是类似,一个游戏 AI 算法的好坏完全由游戏中得分多少或者能否赢得比赛而决定。像 IEEE 计算智能和游戏大会(IEEE Conference on Computational Intelligence and Games)这样的会议在各种游戏环境中进行了广泛的比赛。

这个训练过程使模型从某个状态“state”预测回报函数值“target_f”。

论文中对各种与深度学习相关的流行游戏及研究平台的特征及面临的挑战做了详尽的介绍,这里不再一一赘述。

model.fit(state, target_f, nb_epoch=1, verbose=0)

优信彩票购彩大厅 11

当你在模型调用"predict()"函数时,模型根据之前训练过的数据将预测现在状态的回报函数

DL技术历史沿革

  

优信彩票购彩大厅 12

prediction = model.predict(state)

上图显示了各种深度学习方法以及它们之间互相影响的示意图(下面的部分相当于对此图的长篇解读)。图中的每一种方法都被着色了,以显示出用于对比的游戏基准。

 

DQN 是一种影响巨大的算法,它将基于梯度的深度学习应用于基于像素的视频游戏中,其最初被应用于 Atari 基准测试。请注意,还存在一些更早的方法,但是都没有 DQN 成功。Double DQN 和 Dueling DQN 是使用多个网络改进估计过程的早期的对 DQN 的扩展。DRQN 则采用递归神经网络作为 Q 网络。Prioritized DQN 是另一种早期的扩展,它加入了改进后的经验回放采样技术。Boostrapped DQN 建立在 Double DQN 的基础上,采用不同的改进后的采样策略。在 Atari 游戏中对 DQN 的进一步改进包括:C51 算法,该算法基于 DQN,但改变了 Q 函数;使网络随机化从而帮助模型进行探索的 Noisy-Nets;同样从示例中学习的 DQfD;结合了许多最先进的技术的 Rainbow 模型。

实现深度Q算法(DQN)

Gorila 是第一个基于 DQN 建立的异步方法,接着是 A3C 方法,它为 actor-critic 方法使用了多个异步智能体。2016 年底,UNREAL 进一步扩展了这一概念,它将已有的工作与辅助学习(auxiliary learning)结合起来,从而应对稀疏反馈环境。从那时起,出现了许多对 A3C 技术额外的扩展。IMPALA 通过重点关注一个被训练能够玩所有 Atari 游戏的智能体,对此进行了进一步的扩展。2018 年,随着 Ape-X 的诞生,大规模分布式学习在此领域的研究也得以继续发展。

 DQN算法最重要的特征是记忆(remember)与回顾(replay)方法。它们都有很简明的概念。

演化计算技术也见证了视频游戏的复兴。首先 Salimans 等人证明了进化策略在此领域可以与深度强化学习一争高下 [121]。随后,Uber AI 又发表了两篇论文:一篇表明不涉及求导的进化算法可以与深度强化学习相匹敌,另一篇是对进化策略的扩展。这些工作都得益于简单的并行化处理,并可能在探索过程中具有一定的优势。

 

优信彩票购彩大厅 13

记忆(remember)

在引入 DQN 前后,在 Atari 游戏中被采用的另一种方法是置信域策略优化。该方法更新一个根据环境更新的替代目标函数。2017 年晚些时候,近端策略优化作为一种更鲁棒、更简单的替代优化方案被引入,它也借鉴了 A3C 的创新指出。有些扩展方法是专门为游戏「蒙特祖玛的复仇」(ALE 基准测试中的一款游戏)而开发的,但由于奖励信息稀疏和信息隐藏问题,这款游戏尤其困难。在蒙特祖玛的复仇中表现最好的算法是通过内在动机和层次学习扩展 DQN。吃豆人也是一款非常著名的 Atari 游戏,研究人员针对其不同的部分单独学习奖励函数,以使智能体对新环境更鲁棒。

对于DQN来说一个挑战就是运用在算法中的神经网络区域通过覆盖掉先前学习的经验来遗忘它们。所以我们需要记录下先前的经验与观察值以便再用这些先前数据训练模型。我们将调用代表经验的数组数据“memory”和“remember()”函数来添加状态,回报,和下次状态到“memory”中。

Doom 是 2016 年被使用的另一个新对比基准。在这款游戏上的大部分工作都是针对为 Atari 设计的方法的扩展,从而处理更丰富的数据。A3C +递进学习(curriculum learning)的方法提出将递进学习与 A3C 结合使用。DRQN +辅助学习的方法通过在训练过程中加入额外的奖励来扩展 DRQN。DQN + SLAM 融合了 DQN 与映射未知环境的技术。

在本例中,“memory”列表中有以下形式的数据:

DFP 是唯一没有扩展在 Atari 使用过的技术的方法。正如 UCT 对 Atari 游戏的分类结果那样,他们将台球分类为以对象为中心的预测任务 [36],将赛车分类为直接感知任务,DFP 使用监督学习来对游戏进行学习。除了 UCT 的分类结果,所有这些技术都学着直接预测游戏的未来状态,并从这些信息中做出预测。这些不同年代的工作,没有任何工作之间是相互引用的。除了直接感知,在赛车游戏领域唯一独特的工作是 Deep DPG,它扩展了 DQN 将其用于连续控制。这项技术已经游戏中被扩展到机器人足球。

memory = [(state, action, reward, next_State)...]

优信彩票购彩大厅 14

“remember()”只是简单的存储上述这些数据:

2016 年底,研究人员基于 Q-learning 进行了针对于星际争霸游戏中的微操的研究工作。IQL 通过将所有其他智能体视为环境的一部分,扩展了 Prioritized DQN。COMA 通过计算反事实奖励(每个智能体增加的边际收益)扩展了 IQL。biCNet 和零阶优化也是基于强化学习的方法,但不是从 DQN 中引申出的。另一种流行的方法是层次学习。2017 年,研究人员将回放数据技术与层次学习结合,进行了相关的尝试。2018 年,用两种不同的强化学习方法与层次学习方法相结合的技术取得了目前最佳的性能。

def remember(self, state, action, reward, next_state, done):
    self.memory.append((state, action, reward, next_state, done))

2016 年发表的一些工作将 DQN 扩展到了「我的世界」游戏中。大约在同一时间,研究人员开发出了一些技术,使 DQN 具有上下文感知能力并将其模块化,从而使其能够应对大的状态空间。最近,递进学习技术也被应用到了「我的世界」中。

“done”只是一个标记是否为最后一个状态的布尔量。

2015 年,DQN 被应用到了文本冒险游戏中。不久之后,它被修改为针对特定于语言的文字冒险游戏的架构,并使用「state-action」对的相关性作为 Q 值。关于这些游戏的大部分工作都重点关注显式的语言建模上。「golovin ai agent」和「Affordance Based Action Selection」都利用神经网络学习了语言模型,该语言模型为智能体玩游戏提供动作选择机制。最近,在 2018 年,研究人员再次将 DQN 与一个动作消融网络(Action Elimination Network)联合使用。

是不是很简单??

本文由优信彩票购彩大厅发布于互联网资讯,转载请注明出处:一图尽展视频游戏AI技术,DQN无愧众算法之鼻祖优

您可能还会对下面的文章感兴趣: