Deep Learning for Video Game Playing《DQN 在电子游戏中的应用》

在本文中,我们回顾了深度学习的最新进展,介绍了它们如何应用于玩不同类型的视频游戏,例如第一人称射击游戏,街机游戏和实时策略游戏。 我们分析了不同游戏类型对深度学习系统的独特要求,并强调了将这些机器学习方法应用于视频游戏(例如一般游戏,处理巨大决策空间和稀疏奖励)的情况下的重要开放挑战。

 

I. INTRODUCTION

现在,将AI技术应用于游戏已成为一个成熟的研究领域,有多个会议和专门的期刊。在本文中,我们回顾了视频游戏玩法深度学习的最新进展,并采用了游戏研究平台,同时重点介绍了重要的开放挑战。我们撰写本文的动机是从不同类型的游戏,它们对深度学习构成的挑战以及如何使用深度学习玩这些游戏的角度来回顾该领域。存在关于深度学习的各种评论文章[39],[81],[126],以及关于强化学习的调查[142]和深度强化学习[87],这里我们重点介绍这些应用于视频游戏的技术。
特别是,在本文中,我们着重介绍已广泛用于基于DL的游戏AI的游戏问题和环境,例如Atari / ALE,Doom,Minecraft,StarCraft和赛车。此外,我们回顾了现有工作并指出了尚待解决的重要挑战。我们对旨在通过像素或特征向量在没有现有前向模型的情况下很好地玩特定视频游戏(与围棋等棋盘游戏相反)的方法感兴趣。分析了几种游戏类型,以指出它们对人类和机器玩家构成的众多挑战。
重要的是要注意,本文中未涉及到AI在游戏中的许多用途以及在游戏中的许多用途。游戏AI是一个广阔而多样的领域[171],[170],[93],[38],[99]。本文着重介绍了如何很好地玩视频游戏的深度学习方法,同时以可信,有趣或类似人的方式对玩游戏进行了大量研究[59]。 AI还用于对玩家的行为,经验或偏好进行建模[169],或生成游戏内容,例如关卡,纹理或规则[130]。深度学习远非游戏中使用的唯一AI方法。其他著名的方法包括蒙特卡洛树搜索[18]和进化计算[115],[90]。在下面的内容中,重要的是要意识到本文范围的限制。
本文的结构如下:下一节概述了应用于游戏的不同深度学习方法,然后概述了当前正在使用的不同研究平台。第四节回顾了DL方法在不同视频游戏类型中的使用,第五节给出了该领域的历史概述。在本文结尾处,我们指出了第六节中的重要开放挑战,而在第七节中则给出了结论。

II. DEEP LEARNING IN GAMES OVERVIEW

本节简要概述了游戏环境中的神经网络和机器学习。 首先,我们描述了常见的神经网络体系结构,然后概述了机器学习任务的三个主要类别:监督学习,无监督学习和强化学习。 这些类别中的方法通常基于梯度下降优化。 我们还将重点介绍进化方法以及结合了几种优化技术的混合方法的一些示例。

A.神经网络模型
人工神经网络(ANN)是通用功能,由它们的网络结构和每个图形边缘的权重定义。由于它们的通用性和逼近任何连续实值函数(具有足够的参数)的能力,它们已被应用于各种任务,包括视频游戏。这些人工神经网络的体系结构大致可分为两大类:前馈和递归神经网络(RNN)。前馈网络采用单个输入,例如游戏状态的表示,并输出每个可能动作的概率或值。卷积神经网络(CNN)由可训练的过滤器组成,适用于处理图像数据,例如来自视频游戏屏幕的像素。
RNN通常应用于时间序列数据,其中网络的输出取决于先前时间步长[165],[82]中网络的激活。训练过程与前馈网络相似,除了网络的先前隐藏状态与下一个输入一起反馈到网络中。这样可以通过记住先前的激活来使网络变得上下文相关,当从游戏中获得的单个观察结果不能代表完整的游戏状态时,这将非常有用。对于视频游戏,通常使用一堆卷积层,然后是递归层和完全连接的前馈层。
以下各节将简要概述不同的优化方法,这些方法通常用于通过深度神经网络学习游戏行为。这些方法搜索最佳参数集以解决某些问题。优化还可以用于查找超参数,例如网络体系结构和学习参数,并且在深度学习中得到了很好的研究[13],[12]。

B.优化神经网络1)监督学习
在监督学习中,从示例中训练模型。在训练过程中,要求模型做出正确答案已知的决策。误差,即所提供的答案和基本事实之间的差异,被用作更新模型的损失。目标是实现一个模型,该模型可以推广训练数据以外的内容,从而在从未见过的示例中表现出色。大型数据集通常可以提高模型的概括能力。
在游戏中,此数据可以来自游戏轨迹[16](即人类在被记录的同时通过游戏进行游戏),从而允许代理根据人类在给定状态下执行的操作来学习从输入状态到输出操作的映射。如果游戏已经被另一种算法解决,则可以将其用于生成训练数据,如果第一种算法太慢而无法实时运行,则这很有用。虽然从现有数据中学习如何使代理人能够快速学习最佳实践,但它通常很脆弱。可用数据的生产成本可能很高,并且可能缺少代理应该能够处理的关键方案。对于游戏而言,该算法仅限于数据中可用的策略,并且本身无法探索新策略。因此,在游戏中,监督算法通常通过强化学习算法与额外的训练相结合[133]。
监督学习在游戏中的另一个应用是学习游戏的状态转换。代替提供给定状态的动作,神经网络可以学习预测动作状态对的下一个状态。因此,网络本质上是在学习游戏模型,然后可以将其用于更好地玩游戏或执行计划[45]。

2)无监督学习
代替学习数据及其标签之间的映射,无监督学习的目的是发现数据中的模式。这些算法可以了解数据集的特征分布,可用于对相似数据进行聚类,将数据压缩为其基本特征,或创建具有原始数据特征的新合成数据。对于奖励稀少的游戏(例如蒙特祖玛的复仇),以无人监督的方式从数据中学习是一种潜在的解决方案,也是一项重要的开放式深度学习挑战。
深度学习中最著名的无监督学习技术是自动编码器,它是一种神经网络,试图学习恒等函数,从而使输出与输入相同[80],[117]。该网络由两部分组成:将输入x映射到低维隐藏向量h的编码器,以及尝试从h重构x的解码器。主要思想是通过使h较小,网络必须学会压缩数据并因此获得良好的表示力。研究人员开始将这种无监督算法应用于游戏,以帮助将高维数据提取为更有意义的低维数据,但是这一研究方向仍处于早期阶段[45]。有关监督学习和无监督学习的更详细概述,请参见[126],[39]。

3)强化学习方法
在强化学习(RL)中,代理通过与提供奖励信号给代理的环境交互来学习行为。在RL设置中,可以轻松地将视频游戏建模为环境,其中将玩家建模为代理商,并在每个步骤中采取一组有限的动作,并根据游戏得分来确定奖励信号。
在RL中,代理依赖于奖励信号。这些信号可能会频繁出现,例如游戏中分数的变化,也可能不经常出现,例如座席是赢还是输。电子游戏和RL配合得很好,因为大多数游戏都会为成功的策略提供奖励。开放世界游戏并不总是具有明确的奖励模型,因此对RL算法具有挑战性。
将RL应用到奖励稀疏的游戏时,面临的主要挑战是确定获得奖励信号时如何将功劳分配给许多先前的行为。状态s的奖励R(s)需要传播回导致奖励的动作。从历史上看,有几种不同的方法可以解决此问题,下面将对此进行描述。如果可以将环境描述为马尔可夫决策过程(MDP),则代理可以构建未来状态及其奖励的概率树。然后可以使用概率树来计算当前状态的效用。对于RL代理,这意味着学习模型P(s'| s,a),其中P是状态s'给定状态s和动作a的概率。对于模型P,可以通过以下公式计算效用:

其中,γ是未来状态效用的折现因子。 这种称为自适应动态规划的算法,由于可以直接处理信用分配问题,因此可以很快收敛[142]。 问题在于,它必须在整个问题空间上构建概率树,因此对于大问题来说是棘手的。 由于本文中涉及的游戏被认为是“大问题”,因此我们将不进一步详细介绍该算法。
解决此问题的另一种方法是时间差异(TD)学习。 在TD学习中,代理根据当前效用等于当前报酬加上下一个状态的效用值的观察值直接学习效用U [142]。 它不是学习状态转换模型P,而是学习为每个状态建模效用U。 更新
2 U的等式为:

其中α是算法的学习率。 上面的方程式没有考虑s'的选择方式。 如果在st找到奖励,它将仅影响U(st)。 代理下次在st-1时,U(st-1)将知道将来的奖励。 随着时间的流逝,这将向后传播。 同样,较少见的过渡对效用价值的影响也较小。 因此,U将收敛到与从ADP获得的值相同的值,尽管速度较慢。
TD的替代实现可以学习对状态-动作对的奖励。 这允许代理在给定状态的情况下选择动作,而没有如何转换到未来状态的模型。 因此,这些方法被称为无模型方法。 流行的无模型RL方法是Q学习[162],其中状态的效用等于状态的最大Q值。 Q学习的更新公式为:

在Q学习中,通过选择最著名的未来状态-动作对来考虑未来奖励。在称为SARSA(状态行动-奖励状态行动)的类似算法中,仅当选择了下一个a且已知下一个s时,才会更新Q(s,a)[118]。使用该操作对代替最大Q值。与非策略性Q学习相反,这使SARSA成为一种基于策略的方法,因为SARSA的Q值说明了代理自己的策略。
Q学习和SARSA可以使用神经网络作为Q函数的函数逼近器。给定的Q更新方程式可用于为状态-动作对提供新的“预期” Q值。然后可以在监督学习中更新网络。
代理的政策π(s)确定在给定状态s时应采取的行动。对于Q学习,一个简单的策略是始终采取具有最高Q值的动作。但是,在训练的早期,Q值不是很准确,代理商总是会因为获得少量奖励而陷入困境。学习者应该优先研究新动作以及对所学知识的利用。这个问题被称为多武装匪徒问题,并且已经得到了很好的研究。 ε贪婪策略是一种简单的方法,它以ε概率选择(估计的)最佳动作,否则选择随机动作。
RL的一种方法是在策略的参数空间中执行梯度下降。设πθ(s,a)是在给定参数θ的情况下在状态s采取动作a的概率。来自REINFORCE算法家族的基本策略梯度算法[164]使用梯度∇θ􏰂aπθ(s,a)R(s)更新θ,其中R(s)是从s向前获得的折现累积奖励。 。实际上,从策略中抽取了可能采取的措施的样本,并对其进行了更新以增加将来返回更成功的措施的可能性。这很适合神经网络,因为π可以是神经网络,而θ可以是网络权重。

Actor-Critic方法将策略梯度方法与TD学习相结合,其中actor学习策略πθ(s,a)
使用策略梯度算法,评论者使用TD学习[R]学习近似R。总之,它们是迭代学习策略的有效方法。在演员批评家方法中,可以有一个单独的网络来预测π和R,也可以有两个单独的网络。对于应用于深度神经网络的强化学习的概述,我们建议Arulkumaran等人的文章。 [2]。
4)进化方法
迄今为止,基于定义的误差的区分,迄今为止讨论的优化技术依赖于梯度下降。但是,诸如进化算法之类的无导数优化方法也已广泛用于训练神经网络,包括但不限于强化学习任务。这种通常称为神经进化(NE)的方法可以优化网络的权重及其拓扑结构/体系结构。由于其通用性,NE方法已广泛应用于不同类型的视频游戏。有关此领域的完整概述,请参考感兴趣的读者阅读我们的NE调查论文[115]。
与基于梯度下降的训练方法相比,NE方法的优点是不需要网络是可区分的,并且可以应用于有监督,无监督和强化学习问题。演化拓扑的能力以及权重潜在地提供了一种自动化神经网络体系结构开发的方法,目前需要大量的领域知识。这些技术的前景是,进化可以找到一种神经网络拓扑,这种神经网络拓扑比现有的人类设计架构更擅长玩某种游戏。传统上,NE已被用于解决输入维数比典型深度学习方法低的问题,最近Salimans等人。 [121]表明,依靠足够的计算资源,依赖于通过随机噪声进行参数探索而不是计算梯度的演化策略可以取得与当前Atari电子游戏深度RL方法相当的结果。
5)混合学习方法
最近,研究人员开始研究视频游戏的混合方法,该方法将深度学习方法与其他机器学习方法结合在一起。 Alvernaz和Togelius [1]以及Poulsen等人。 [113]进行了实验,将通过梯度下降训练的深度网络与通过人工进化训练的网络合并,将浓缩的特征表示馈入网络。这些混合方法旨在将两种方法中的最佳方法结合起来,因为深度学习方法能够直接从高维输入中学习,而进化方法则不依赖于可区分的架构,并且在奖励稀疏的游戏中表现良好。一些结果表明,无梯度方法在训练的早期似乎更好,以避免过早收敛,而基于梯度的方法则在需要较少探索的情况下最终会更好[139]。
另一种用于棋盘游戏的混合方法是AlphaGo [133],它依靠深度神经网络和树搜索方法来击败Go语言的世界冠军,[36]则将计划应用在预测模型之上。
通常,将本体遗传学RL(例如Q学习)与系统发育方法(例如进化算法)具有很大的影响力,因为它可以在不同的时间尺度上进行并发学习[153]。

III. GAME GENRES AND RESEARCH PLATFORMS

 

毋庸置疑,由于在公开数据集上比较结果的约定,深度学习方法的快速发展毫无疑问。游戏AI中类似的惯例是使用游戏环境来比较游戏算法,其中,根据得分或获胜的能力对方法进行排名。 IEEE计算智能与游戏大会之类的大会在各种游戏环境中都开展流行的比赛。
本节介绍与深度学习相关的文献中流行的游戏类型和研究平台;图2中显示了一些示例。对于每种类型,我们简要概述该类型的特征,并描述玩该类型游戏的算法所面临的挑战。本文讨论的视频游戏已在很大程度上取代了较早的较简单控制问题,这些问题长期以来一直是主要的强化学习基准,但对于现代RL方法而言通常太简单了。在这样的经典控制问题中,输入是一个简单的特征向量,描述了位置,速度和角度等。此类问题的流行平台是rllab [29],其中包括经典问题,例如杆平衡和山地车问题,以及MuJoCo(带接触的多关节动力学),一种物理引擎,用于复杂的控制任务,例如人形行走任务[152]。

A.街机游戏
在七十年代末和八十年代初的街机柜,家用视频游戏机和家用计算机中发现的经典街机游戏,在过去十年中一直被用作AI基准。这种游戏类型的代表平台是Atari 2600,Nintendo NES,Commodore 64和ZX Spectrum。大多数经典的街机游戏的特点是在二维空间中运动(有时以等轴测图表示,以提供三维运动的幻觉),大量使用图形逻辑(游戏规则由子图形或图像的交集触发) ,连续时间进度以及连续空间或离散空间运动。玩此类游戏的挑战因游戏而异。大多数游戏都需要快速的反应和精确的时间安排,而一些游戏,尤其是诸如田径运动(Track&Field,Konami,1983年)之类的早期体育游戏几乎完全依赖于速度和反应。许多游戏需要对几个同时发生的事件进行优先级排序,这需要能够预测游戏中其他实体的行为或轨迹的能力。这个挑战在例如Tapper(Bally Midway,1983),但也以不同的方式参与了平台游戏的一部分,例如Super Mario Bros(Nintendo,1985)和射击游戏,例如Missile Command(Atari Inc.,1980)。另一个常见的要求是在迷宫或其他复杂环境中导航,例如Pac-Man(Namco,1980)和Boulder Dash(First Star Software,1984)这样的游戏就清楚地说明了这一点。某些游戏,例如蒙特祖玛的复仇(Parker Brothers,1984),需要长期计划,涉及
记忆暂时无法观察的游戏状态。有些游戏具有不完整的信息和随机性,而另一些则具有完全确定性和完全可观察性。
用于深度学习方法的最著名的游戏平台是Arcade学习环境(ALE)[10]。 ALE建立在Atari 2600模拟器Stella的顶部,并包含50多种原始的Atari 2600游戏。该框架提取游戏分数,160×210屏幕像素和RAM内容(可用作游戏代理的输入)。 ALE是第一批使用原始像素作为输入的深度RL论文中探讨的主要环境。通过使代理能够从视觉输入中学习,ALE因此与强化学习文献中的经典控制问题(如购物车杆和山地车问题)有所不同。 ALE环境的概述和讨论可以在[91]中找到。
经典街机游戏的另一个平台是逆向学习环境(RLE),该平台目前包含为超级任天堂娱乐系统(SNES)发行的七款游戏[15]。这些游戏中许多都具有3D图形,并且控制器允许进行720多种动作组合。因此,SNES游戏比Atari 2600游戏更加复杂和真实,但是RLE尚未像ALE那样流行。
通用视频游戏AI(GVG-AI)框架[116]允许使用视频游戏描述语言(VGDL)[122]轻松创建和修改游戏和关卡。这是测试多个游戏或关卡上的座席普遍性的理想选择。 GVG-AI包括100多个经典街机游戏,每个游戏都有五个不同的级别。
赛车游戏
竞速游戏是指玩家被要求控制某种车辆或角色以便在尽可能短的时间内达到目标或在给定时间内沿轨道尽可能远地穿越的游戏。通常,游戏从玩家控制的车辆后面采用第一人称视角或有利位置。绝大多数赛车游戏都将连续输入信号作为方向盘输入,类似于方向盘。某些游戏,例如《极限竞速》(Microsoft Studios,2005–2016)或《真实赛车》(Firemint和EA Games,2009–2013)系列,允许复杂的输入,包括变速杆,离合器和手刹,而侧重于街机诸如“极品飞车”(电子艺术,1994–2015)系列中的游戏通常具有较简单的输入集,因此分支系数较低。
在所有赛车游戏中普遍存在的挑战是,代理商需要使用微调的连续输入来控制车辆的位置并调整加速度或制动,以便尽可能快地穿越轨道。最佳地做到这一点至少需要短期计划,向前或向后翻一两步。如果游戏中需要管理一些资源,例如燃料,损坏或提速,则需要进行长期规划。当其他车辆出现在赛道上时,在试图管理或阻止超车时会增加一个对抗性计划方面。通常在存在隐藏信息(轨道上不同部分上其他车辆的位置和资源)的情况下进行此计划。

 

C.第一人称射击游戏(FPS)
最近出现了更高级的游戏环境,用于第一人称射击游戏(FPS)中的视觉强化学习代理。与ALE基准中的经典街机游戏相比,FPS具有带有部分可观察状态的3D图形,因此是学习时更现实的环境。通常,观点是由玩家控制的角色,尽管一些FPS类别中的游戏大多采用过分的观点。第一人称射击游戏的设计使得挑战的一部分就是简单的快速感知和反应,特别是发现敌人并迅速瞄准他们。但是,还存在其他认知挑战,包括在复杂的三维环境中的定向和移动,预测多个对手的动作和位置以及在某些游戏模式中还进行基于团队的协作。如果使用视觉输入,则存在从像素提取相关信息的挑战。
在FPS平台中有ViZDoom,该框架允许代理商使用屏幕缓冲区作为输入来播放经典的第一人称射击游戏《毁灭战士》(id Software,1993–2017)[73]。 DeepMind Lab是一个基于Quake III Arena(id Software,1999)引擎的3D导航和解谜任务的平台[6]。
D.开放世界游戏
Minecraft(Mojang,2011)或Grand Theft Auto(Rockstar Games,1997–2013)系列等开放世界游戏的特点是非常非线性的游戏玩法,需要探索的大型游戏世界既没有设定目标,也有很多目标内部秩序不明确,在任何给定时间都有很大的行动自由。代理商面临的主要挑战是探索世界并设定切合实际和有意义的目标。由于这是一个非常复杂的挑战,因此大多数研究都使用这些开放环境来探索强化学习方法,这些方法可以重用已学知识并将其转移到新任务中。马尔默计划(Project Malmo)是建立在开放世界游戏《我的世界》(Minecraft)之上的平台,可用于定义许多不同和复杂的问题[65]。
E.实时策略游戏
策略游戏是玩家控制多个角色或单位的游戏,其目的是在某种征服或冲突中占上风。通常但并非总是如此
叙述和图形反映了军事冲突,其中单位可能是骑士,坦克或战舰。策略游戏的主要挑战是制定并执行涉及多个单位的复杂计划。通常,此挑战比诸如Chess之类的经典棋盘游戏中的计划挑战要困难得多,主要是因为必须随时移动多个单元,并且有效的分支因子通常很大。规划期可能会非常长,游戏开始时采取的行动会影响整体策略。此外,要预测一个或多个自身具有多个单位的对手的行动也存在挑战。实时策略游戏(RTS)是一种策略游戏,它不会分阶段进行,但可以在任何时间点采取行动。 RTS游戏将时间优先级的挑战添加到了玩策略游戏已经很艰巨的挑战中。
《星际争霸》(暴雪娱乐公司,1998–2017)系列无疑是实时战略(RTS)类别中研究最多的游戏。 Brood War API(BWAPI)1使软件可以在游戏运行时与StarCraft通信,例如提取状态特征并执行操作。 BWAPI已在游戏AI研究中得到广泛使用,但是目前,只有少数几个例子应用了深度学习。 TorchCraft是建立在BWAPI之上的库,该库将科学计算框架Torch与StarCraft连接起来,从而可以对该游戏进行机器学习研究[145]。此外,DeepMind和Blizzard(StarCraft的开发者)开发了一种机器学习API,以支持StarCraft II中的研究,其功能包括为卷积网络设计的简化视觉效果[157]。该API包含多个迷你挑战,同时还支持完整的1v1游戏设置。 μRTS[104]和ELF [151]是两个简约的RTS游戏引擎,实现了RTS游戏中存在的某些功能。

F.团体运动会
流行的体育游戏通常基于基于团队的运动,例如足球,篮球和足球。这些游戏旨在通过逼真的动画和3D图形来尽可能逼真。在一年一度的机器人世界杯足球赛(RoboCup)中,几种类似于足球的环境已被广泛用作研究平台,包括物理机器人和2D / 3D模拟[3]。 Keepaway Soccer是一种简单的类似于足球的环境,其中一个团队的探员试图保持对球的控制,而另一团队则试图获得对球的控制[138]。类似的多代理环境
1 http://bwapi.github.io/
5
 
     ALE GVG­AI VizDoom TORCS项目Malmo星际争霸:巢之战(Breakout)(Zelda)(我的世界)
学习方法是RoboCup 2D半场进攻(HFO),由2-3名球员组成的团队在足球场的一半上扮演进攻或防守的角色[50]。
G.文字冒险游戏
经典的文字冒险游戏是一种互动小说形式,在游戏中,玩家会获得文字而非文字的描述和说明,并通过基于文本的命令与故事情节互动[144]。这些命令通常用于查询系统的状态,与故事中的角色进行交互,收集和使用物品或在虚构的世界中导航。
这些游戏通常实现三种基于文本的界面之一:基于解析器,基于选择和基于超链接[54]。基于选择的接口和基于超链接的接口在给定状态下以列表,上下文或状态描述中的链接的形式向播放器提供可能的操作。另一方面,基于解析器的界面可以接受任何输入,并且玩家必须学习游戏可以理解的单词。这对于计算机来说很有趣,因为它更类似于自然语言,在自然语言中,您必须基于对语言和给定状态的了解,知道应该采取什么行动。
与街机游戏等其他游戏类型不同,文字冒险游戏还没有人人都能比较的标准游戏基准。这使得很多结果难以直接比较。许多研究都针对可在Infocom的Z-Machine游戏引擎上运行的游戏,该引擎可玩很多早期的经典游戏。最近,Microsoft引入了TextWorld环境,以帮助创建标准化的文本冒险环境[25]。
H.OpenAI体育馆和宇宙
OpenAI Gym是一个用于比较钢筋强度的大型平台,
具有单一界面的一套高级学习算法,包括一套ALE,GVG-AI,MuJoCo,Malmo,ViZDoom等不同环境[17]。 OpenAI Universe是OpenAI Gym的扩展,目前可与上千种Flash游戏交互,并旨在在将来增加许多现代视频游戏2。
IV。深度游戏学习方法
本节概述了用于玩视频游戏的深度学习技术,按游戏类型划分。表II列出了每种游戏类型和亮点的深度学习方法,它们输入了它们依赖的功能,网络体系结构和训练方法。深度RL中使用的典型神经网络架构如图3所示。
A.街机游戏
街机学习环境(ALE)包含50多种Atari游戏,并且已经成为直接从原始像素学习控制策略的深度强化学习算法的主要测试平台。本节回顾了ALE中已演示的主要改进。表IV-A显示了这些进展的概述。
2 https://universe.openai.com/
深度Q网络(DQN)是在ALE中显示人类专家级控制的第一个学习算法[97]。 DQN已在7款Atari 2600游戏中进行了测试,并且性能优于以前的方法,例如具有特征构建功能的SARSA [7]和神经进化[49],以及三款游戏的人类专家。 DQN基于Q学习,其中神经网络模型学习近似Qπ(s,a),该Qπ(s,a)估计在遵循行为策略μ的情况下在状态s下采取行动a的预期回报。一个简单的网络体系结构由两个卷积层和一个单独的全连接层组成,用作函数逼近器。
DQN中的关键机制是体验重播[89],其中{st,at,rt + 1,st + 1}形式的体验存储在重播内存中,并在网络更新时分批随机采样。这使算法能够重用并从过去和不相关的经验中学习,从而减少了更新的差异。 DQN后来通过一个单独的目标Q网络进行了扩展,该参数在各个更新之间保持固定,并在49个经过测试的游戏中有29个显示出超过人类专家的分数[98]。
深度递归Q学习(DRQN)在输出之前在递归层扩展了DQN架构,并且对于具有部分可观察状态的游戏非常有效[51]。
在使用Gorila的49款游戏中,有41款游戏的DQN分布式版本的性能优于非分布式版本

每个玩家,并在训练过程中互相对抗[146]。经过多人游戏模式训练的特工在对抗新对手时表现出色,而经过固定算法训练的特工无法将其策略推广到新对手。
DQN,SARSA和Actor-Critic方法的多线程异步变体可以在单台机器上利用多个CPU线程,从而减少了与并行线程数量大致成线性的训练[96]。这些变体不依赖于重播内存,因为网络会根据并行参与者的不相关经验进行更新,这也有助于稳定基于策略的方法。异步优势Actor-Critic(A3C)算法是一种actor-critic方法,该方法使用多个并行代理收集所有异步更新全局actor-critic网络的体验。 A3C的性能优于优先决斗DQN,后者在GPU上进行了8天的培训,而在CPU上仅进行了一半的培训时间[96]。
具有经验重演的行为者批判方法(ACER)实现了一种有效的信任区域策略方法,该方法强制更新与过去策略的运行平均值之间的偏差不大[160]。 ALE中的ACER的性能与具有优先级体验回放的Dueling DQN以及没有体验回放的A3C相匹配,而数据效率更高。
具有渐进神经网络的A3C [120]可以有效地将学习从一种游戏转移到另一种游戏。通过为每个新任务实例化一个网络来完成培训,并连接到所有先前学习的网络。这使新网络可以访问已经学习的知识。
优势行为者批判(A2C)是A3C的一种同步变体[96],可以分批同步更新参数,并且在仅维护一个神经网络的情况下具有可比的性能[166]。使用Kronecker要素信任区域(ACKTR)的Actor-Critic通过对参与者和评论者的自然政策梯度更新进行近似来扩展A2C [166]。在Atari中,与A2C相比,ACKTR的更新速度较慢(每个时间步长最多25%),但采样效率更高(例如,在Atlantis中是10倍)[166]。信任区域策略优化(TRPO)使用替代目标,并为单调策略的改进提供了理论上的保证,而实际上实现了一种称为信任区域的近似方法[128]。这是通过限制网络更新并限制当前和当前KL之间的KL差异来完成的。
更新的政策。 TRPO在Atari游戏中具有强大且数据高效的性能,同时它对内存的要求很高,并且存在一些限制。近端策略优化(PPO)是对TRPO的改进,它使用类似的替代目标[129],但通过添加KL散度作为惩罚,使用了软约束(最初在[128]中建议)。它使用固定的替代目标代替固定的惩罚系数,该目标在某些指定时间间隔之外对策略更新进行惩罚。 PPO被证明比A2C具有更高的采样效率,与Atari中的ACER相当,而PPO不依赖于重播内存。在连续控制任务中,PPO还表现出与TRPO相当或更好的性能,同时更简单,更易于并行化。
IMPALA(重要加权演员学习者体系结构)是一种演员批评方法,其中具有GPU访问权限的多个学习者彼此之间共享梯度,同时从一组参与者同步更新[30]。此方法可以扩展到大量机器,并且性能优于A3C。此外,IMPALA经过训练,具有一组参数,可以在ALE中玩所有57场Atari游戏,人类标准化平均得分为176.9%(中位数为59.7%)[30]。参与者在IMPALA设置中收集的经验可能缺乏学习者的政策,从而导致脱离政策的学习。通过V-trace算法可以减轻这种差异,该算法根据参与者和学习者政策之间的差异来权衡体验的重要性[30]。
UNREAL(无监督的强化和辅助学习)算法基于A3C,但使用重播内存,可同时从中学习辅助任务和伪奖励功能[63]。与ALE中的香草A3C相比,UNREAL仅显示了少量改进,而在其他领域则显示出较大的改进(请参阅第IV-D节)。
分布DQN通过将Q(s,a)视为回报的近似分布而不是每个动作的单个近似期望,来从强化学习的分布角度出发[9]。分布被分为一组原子,它决定了分布的粒度。他们的结果表明,分布越细,结果越好,并且具有51个原子(此变体称为C51),其ALE平均得分几乎与UNREAL相当。

在NoisyNets中,将噪声添加到网络参数中,并使用梯度下降来学习每个参数的唯一噪声水平[35]。相对于ε贪婪探索(代理从策略或从统一随机分布中采样行动)而言,NoisyNets使用该政策的嘈杂版本来确保探索,这被证明可以改善DQN(NoisyNet-DQN)和A3C (NoisyNet-A3C)。
Rainbow组合了多个DQN增强功能:双DQN,优先重播,决斗DQN,分布式DQN和NoisyNets,并且平均得分高于任何单个增强[56]。
进化策略(ES)是黑盒优化算法,它依靠通过随机噪声进行参数探索而不是计算梯度,并且当使用更多CPU时,可以在训练时间上以线性加速的方式高度并行化[121]。使用720个CPU的时间为一小时,此后ES在51款游戏中有23款在性能上优于A3C(运行了4天),而ES则由于其高度并行化而使用了3至10倍的数据。 ES仅运行了一天,因此目前尚不清楚它们的全部潜力。新颖性搜索是一种流行的算法,它可以通过指导新颖性行为来克服具有欺骗性和/或稀疏奖励的环境[84]。 ES已被扩展为使用新颖性搜索(NS-ES),通过在RAM状态下定义新颖的行为,它在一些具有挑战性的Atari游戏中胜过ES [24]。兼具新颖性和奖励信号的称为NSR-ES的质量多样性变体可以达到更高的性能[24]。在一些游戏中,NS-ES和NSR-ES的效果较差,可能是奖励功能不稀疏或具有欺骗性。
一种具有高斯噪声突变算子的简单遗传算法可改进深度神经网络(Deep GA)的参数,并且可以在多个Atari游戏中获得令人惊讶的好成绩[139]。在使用多达数千个CPU的13种Atari游戏中,Deep GA显示出与DQN,A3C和ES相当的结果。此外,在计算量大致相同的情况下,随机搜索在13场比赛中有4场表现优于DQN,在5场比赛中表现优于A3C [139]。尽管人们一直担心进化方法不像基于梯度下降的方法那样可扩展,但一种可能性是将特征构造与策略网络分开。然后,进化算法可以创建仍然发挥良好作用的极小的网络[26]。
一些监督学习方法已应用于街机游戏。在郭等。 [42]使用蒙特卡洛树搜索(Macro-Carlo Tree Search),离线部署慢速计划代理,以通过多项式分类生成用于训练CNN的数据。这种方法被称为UCTtoClassification,表现优于DQN。策略提炼[119]或角色模仿[108]方法可用于训练一个网络来模仿一组策略(例如,针对不同的游戏)。这些方法可以减小网络的大小,有时还可以提高性能。可以使用DQN代理使用编码,转换,解码网络体系结构从数据集中学习帧预测模型。然后,该模型可用于在再培训阶段改进勘探[103]。自我监督的任务,例如报酬预测,状态后继对的验证以及将状态和后继状态映射到行动可以定义用于政策网络预训练的辅助损失,最终可以改善学习[132]。培训目标向代理提供反馈,而绩效目标指定目标行为。通常,单个奖励功能会同时扮演这两个角色,但是对于某些游戏,性能目标无法充分指导训练。混合奖励架构(HRA)将奖励功能分为n个不同的奖励功能,其中每个功能都被分配了一个单独的学习代理[156]。 HRA通过在网络中具有n个输出流以及n个Q值来实现此目的,这些Q值在选择操作时进行组合。 HRA能够以更少的成本获得最大可能的分数
超过3,000集。
B.蒙特祖玛的复仇
反馈稀疏的环境仍然是强化学习的挑战。蒙特祖玛的复仇游戏就是ALE中这种环境的一个很好的例子,因此已经进行了更详细的研究,并用于基于内在动机和好奇心的基准学习方法。应用内在动机的主要思想是基于某种自我奖励系统来改善对环境的探索,这最终将帮助主体获得外部奖励。 DQN在此游戏中未获得任何奖励(得分为0),而Gorila的平均得分仅为4.2。一个人类专家可以达到4,367分,很显然,到目前为止介绍的方法无法应对如此稀疏的奖励环境。一些有希望的方法旨在克服这些挑战。
分层DQN(h-DQN)[77]在两个时间尺度上运行,其中一个控制器的Q值函数Q1(s,a; g)学习满足满足上级Q选择的目标的操作的策略值函数Q2(s,g),元控制器,它学习有关内在目标(即选择哪些目标)的策略。这种方法在蒙特祖玛的复仇中平均得分约为400,其中目标被定义为特工达到(碰撞)某种类型的对象。因此,此方法必须依赖某种对象检测机制。
当观察到意外的像素配置时,伪计数已被用于以探索性奖金的形式提供内在动机,并且可以从CTS密度模型[8]或神经密度模型[107]中得出。密度模型为图像分配概率,与在同一幅图像上再训练一次相比,模型对观测图像的伪计数是模型的预测变化。通过将DQN与CTS密度模型(DQN-CTS)或PixelCNN密度模型(DQN-PixelCNN)相结合,在蒙特祖玛的Revenge和其他艰苦的Atari游戏中取得了令人印象深刻的结果[8]。有趣的是,当CTS密度模型与A3C(A3C-CTS)结合使用时,结果效果不佳[8]。
Ape-X DQN是类似于Gorila的分布式DQN架构,因为演员与学习者是分开的。 Ape-X DQN使用376个内核和1个GPU(在50K FPS上运行),可以在57个Atari游戏中获得最先进的结果[61]。从演示中进行的深度Q学习(DQfD)从体验重播缓冲区中抽取样本,该缓冲区由人类专家的演示数据初始化,并优于11种稀疏奖励的Atari游戏中的先前方法[57]。 Ape-X DQfD结合了Ape-X的分布式体系结构和DQfD的使用专家数据的学习算法,并被证明优于ALE中的所有先前方法,并优于Montezuma的Revenge [112]中的1级。
为了提高性能,Kaplan等。等通过文字说明增强了代理商培训。一种基于指令的强化学习方法,该方法同时使用CNN进行视觉输入,同时使用RNN进行基于文本的教学,输入的管理得分为3500分。指令与房间中的位置相关联,代理商到达这些位置时会得到奖励[71],这说明了人类和学习算法之间的卓有成效的合作。在蒙特祖玛的《复仇》中进行的实验也表明,该网络学会了将其推广到与以前的指令相似的看不见的指令。类似的工作演示了代理如何在学习了教师的语言之后,在称为XWORLD的2D迷宫状环境中执行基于文本的命令,例如步行和捡起对象[172]。 基于RNN的语言模块连接到基于CNN的感知模块。 然后,将这两个模块连接到一个动作选择模块和一个识别模块,该模块在问答过程中学习教师的语言。

C.赛车游戏
在Chen等人的文章中,针对基于视觉的自动驾驶通常有两种范例。 [21]; (1)学会直接将图像映射到动作(行为反射)的端到端系统,以及(2)解析传感器数据以做出明智决策(介导的感知)的系统。介于这些范式之间的一种方法是直接感知,其中CNN学会从图像映射到有意义的负担能力指示符,例如汽车角度和到车道标记的距离,简单的控制器就可以做出决策
[21]。在TORCS中记录了12个小时的人类驾驶情况,对直接感知进行了训练,并且训练后的系统能够在非常不同的环境中驾驶。令人惊讶的是,该网络还能够推广到真实图像。
端到端强化学习算法(例如DQN)不能直接应用于连续环境(例如赛车游戏),因为动作空间必须是离散的并且具有相对较低的维度。取而代之的是,诸如参与者行为准则[27]和确定性策略梯度(DPG)[134]之类的策略梯度方法可以在高维连续行动空间中学习策略。深度DPG(DDPG)是一种策略梯度方法,可同时实现体验重播和单独的目标网络,并且用于从图像中训练TORCS中的CNN端到端[88]。
前面提到的A3C方法也已应用于仅使用像素作为输入的赛车游戏TORCS [96]。在这些实验中,奖励的形成取决于代理人在赛道上的速度,经过12小时的训练,A3C在有和没有对手机器人的赛道上,分别达到了人类测试人员的大约75%和90%的得分。
虽然大多数从视频游戏中的高维输入训练深度网络的方法都是基于梯度下降的,但值得注意的例外是Koutńk等人的方法。 [76],其中发展了傅立叶型系数,该系数编码了具有一百万以上权重的递归网络。在这里,evolution能够找到仅依赖于高维视觉输入的TORCS高性能控制器。
D.第一人称射击游戏
Kempka等。 [73]证明了具有最大池和使用DQN训练的完全连接层的CNN在基本情况下可以实现类似人的行为。在Visual Doom AI竞赛20163中,许多参与者提交了经过预训练的基于神经网络的特工,这些特工在多人死亡竞赛中竞争。既进行了有限的竞赛(其中机器人在已知级别进行竞争),又进行了全面的竞赛,其中包括了在看不见的级别中进行竞争的机器人。有限赛道的获胜者使用了经过奖励塑造和课程学习的A3C训练的CNN [167]。奖励塑形解决了奖励稀疏和延误的问题,为捡起物品提供了人为的积极奖励,为使用弹药和失去健康提供了消极奖励。课程学习试图通过在一组逐渐困难的环境中进行训练来加快学习速度[11]。受限赛道上的第二名参赛者使用了经过改进的DRQN网络体系结构以及附加的全连接层流,以学习有监督的辅助任务,例如敌人侦察,目的是加快对卷积层的训练[79]。 。使用同时定位和映射(SLAM)从像素和深度缓冲区进行位置推断和对象映射也可以改善Doom中的DQN [14]。
完整的比赛竞赛获胜者采用了直接未来预测(DFP)方法,该方法被证明优于DQN和A3C [28]。 DFP广告管理系统中使用的体系结构包含三个流:一个流用于屏幕像素,一个流用于描述代理的当前状态的低维测量,还有一个用于描述业务代表的目标的指标,它是优先衡量指标的线性组合。 DFP会在内存中收集经验,并使用有监督的学习技术进行培训,以根据当前状态,目标和选定的操作来预测未来的测量结果。在训练期间,根据以下情况选择能够产生最佳预测结果的动作:
当前的目标。可以针对各种目标训练该方法,并在测试时将其推广到看不见的目标。
在3D环境中导航是FPS游戏所需的重要技能之一,并且已经进行了广泛的研究。 CNN + LSTM网络经过A3C扩展训练,并具有预测像素深度和环路闭合的附加输出,显示出显着改进[95]。
基于A3C的UNREAL算法实现了
辅助任务,它训练网络以预测从一系列连续观察中得出的即时后续未来收益。 UNREAL在OpenArena上的水果采集和勘探任务上进行了测试,并获得了87%的人类标准化平均得分,而A3C仅达到53%[63]。
将知识转移到新环境中的能力可以减少学习时间,并且在某些情况下对于某些具有挑战性的任务至关重要。通过在类似环境中用更简单的任务对网络进行预训练或在训练过程中使用随机纹理可以实现转移学习[20]。 Distill and Transfer Learning(Distral)方法同时训练了几个工人策略(每个任务一个),并共享一个蒸馏策略[149]。对工作人员策略进行了规范化处理,以使其紧贴共享策略,而共享策略将成为工作人员策略的重心。 Distral已应用于DeepMind Lab。
内在好奇心模块(ICM)由多个神经网络组成,它根据代理人无法预测采取行动的结果来计算每个步骤的内在奖励。它被证明学会了仅依靠内在的奖励就可以在复杂的《毁灭战士》和《超级马里奥》中导航[110]。
E.开放世界游戏
分层深度强化学习网络(H-DRLN)架构实现了终身学习框架,该框架被证明能够在Minecraft中的简单任务(如导航,项目收集和放置任务)之间传递知识[150]。 H-DRLN使用各种策略提炼[119]来将学习到的知识保留和封装到单个网络中。
神经图灵机(NTM)是完全可区分的神经网络,再加上外部存储资源,可以学习解决简单的算法问题,例如复制和排序[40]。在NTM的启发下,基于记忆的两种变体称为循环记忆Q网络(RMQN)和反馈循环记忆Q网络(FR-MQN)能够解决需要记忆和主动感知的复杂导航任务[102]。
师生课程学习(TSCL)框架结合了一位老师,该老师对任务进行了优先排序,其中学生的表现是增加(学习)或减少(忘记)[92]。 TSCL启用了策略梯度学习方法来解决迷宫问题,而这些迷宫问题在子任务的统一采样下是不可能的。
F.实时策略游戏
前面的部分描述了学会端到端玩游戏的方法,即训练了神经网络将状态直接映射到动作。但是,实时策略(RTS)游戏提供了更为复杂的环境,在这种环境中,玩家必须同时在部分可观察的地图上实时控制多个特工。另外,RTS游戏没有游戏内计分,因此奖励由谁赢得游戏来确定。由于这些原因,在可预见的未来,学会端到端玩RTS游戏可能是行不通的,到目前为止,已经研究了子问题。
对于简单的RTS平台μRTS,在生成的数据集上使用监督学习将CNN训练为状态评估器,并与Monte Carlo Tree Search [136],[4]结合使用。该方法的性能明显优于以前的评估方法。
《星际争霸》一直是人工智能研究的流行游戏平台,但到目前为止仅提供了几种深度学习方法。 《星际争霸》的深度学习方法侧重于微管理(单元控制)或构建顺序计划,而忽略了游戏的其他方面。在战斗场景中可以避免《星际争霸》中奖励延迟的问题。在这里,奖励的形式可以是所造成的损害与所遭受的损害之间的差额[154],[33],[111],[32]。状态和动作通常是相对于单位进行本地描述的,单位是从游戏引擎中提取的。如果对代理商进行单独培训,则很难知道哪个代理商对全球奖励做出了贡献[19],这个问题称为多代理商信用分配问题。一种方法是训练通用网络,该网络分别控制每个单元,并根据每个情节中产生的奖励使用零级优化在策略空间中进行搜索[154]。还有一个用于描述业务代表的目标的指标,它是优先衡量指标的线性组合。 DFP会在内存中收集经验,并使用有监督的学习技术进行培训,以根据当前状态,目标和选定的操作来预测未来的测量结果。在训练期间,根据以下情况选择能够产生最佳预测结果的动作:
当前的目标。可以针对各种目标训练该方法,并在测试时将其推广到看不见的目标。
在3D环境中导航是FPS游戏所需的重要技能之一,并且已经进行了广泛的研究。 CNN + LSTM网络经过A3C扩展训练,并具有预测像素深度和环路闭合的附加输出,显示出显着改进[95]。
基于A3C的UNREAL算法实现了
辅助任务,它训练网络以预测从一系列连续观察中得出的即时后续未来收益。 UNREAL在OpenArena上的水果采集和勘探任务上进行了测试,并获得了87%的人类标准化平均得分,而A3C仅达到53%[63]。
将知识转移到新环境中的能力可以减少学习时间,并且在某些情况下对于某些具有挑战性的任务至关重要。通过在类似环境中用更简单的任务对网络进行预训练或在训练过程中使用随机纹理可以实现转移学习[20]。 Distill and Transfer Learning(Distral)方法同时训练了几个工人策略(每个任务一个),并共享一个蒸馏策略[149]。对工作人员策略进行了规范化处理,以使其紧贴共享策略,而共享策略将成为工作人员策略的重心。 Distral已应用于DeepMind Lab。
内在好奇心模块(ICM)由多个神经网络组成,它根据代理人无法预测采取行动的结果来计算每个步骤的内在奖励。它被证明学会了仅依靠内在的奖励就可以在复杂的《毁灭战士》和《超级马里奥》中导航[110]。
E.开放世界游戏
分层深度强化学习网络(H-DRLN)架构实现了终身学习框架,该框架被证明能够在Minecraft中的简单任务(如导航,项目收集和放置任务)之间传递知识[150]。 H-DRLN使用各种策略提炼[119]来将学习到的知识保留和封装到单个网络中。
神经图灵机(NTM)是完全可区分的神经网络,再加上外部存储资源,可以学习解决简单的算法问题,例如复制和排序[40]。在NTM的启发下,基于记忆的两种变体称为循环记忆Q网络(RMQN)和反馈循环记忆Q网络(FR-MQN)能够解决需要记忆和主动感知的复杂导航任务[102]。
师生课程学习(TSCL)框架结合了一位老师,该老师对任务进行了优先排序,其中学生的表现是增加(学习)或减少(忘记)[92]。 TSCL启用了策略梯度学习方法来解决迷宫问题,而这些迷宫问题在子任务的统一采样下是不可能的。
F.实时策略游戏
前面的部分描述了学会端到端玩游戏的方法,即训练了神经网络将状态直接映射到动作。但是,实时策略(RTS)游戏提供了更为复杂的环境,在这种环境中,玩家必须同时在部分可观察的地图上实时控制多个特工。另外,RTS游戏没有游戏内计分,因此奖励由谁赢得游戏来确定。由于这些原因,在可预见的未来,学会端到端玩RTS游戏可能是行不通的,到目前为止,已经研究了子问题。
对于简单的RTS平台μRTS,在生成的数据集上使用监督学习将CNN训练为状态评估器,并与Monte Carlo Tree Search [136],[4]结合使用。该方法的性能明显优于以前的评估方法。
《星际争霸》一直是人工智能研究的流行游戏平台,但到目前为止仅提供了几种深度学习方法。 《星际争霸》的深度学习方法侧重于微管理(单元控制)或构建顺序计划,而忽略了游戏的其他方面。在战斗场景中可以避免《星际争霸》中奖励延迟的问题。在这里,奖励的形式可以是所造成的损害与所遭受的损害之间的差额[154],[33],[111],[32]。状态和动作通常是相对于单位进行本地描述的,单位是从游戏引擎中提取的。如果对代理商进行单独培训,则很难知道哪个代理商对全球奖励做出了贡献[19],这个问题称为多代理商信用分配问题。一种方法是训练通用网络,该网络分别控制每个单元,并根据每个情节中产生的奖励使用零级优化在策略空间中进行搜索[154]。独立Q学习(IQL)通过单独控制单元,同时将其他代理视为环境的一部分来简化多代理RL问题[147]。这使得Q学习可以很好地扩展到大量代理。但是,当将IQL与最新技术(如体验重播)结合使用时,代理倾向于根据过时策略的经验来优化其策略。通过将指纹应用于体验并应用重要性加权损失函数可以自然克服陈旧的数据,从而克服了这一问题,这对于某些小型战斗场景已显示出改进[33]。
多主体双向协调网络(BiC-Net)实现了基于双向RNN的矢量化行为者批评框架,每个主体具有一个维度,并输出一系列动作[111]。这种网络体系结构是其他方法所独有的,因为它可以处理任意数量的不同类型的单元。
反事实多主体(COMA)策略梯度是一种参与者批评方法,具有集中的评论者和分散的参与者,它们通过评论者网络计算出的反事实基线来解决多主体信用分配问题[32]。 COMA在分散作战的情况下,在每边最多10个单位的小型战斗场景中,可以达到最新成果。
深度学习也已应用在星际争霸中的构建订单计划中,它使用基于宏的监督学习方法来模仿人类策略[68]。训练有素的网络被集成为一个模块,该模块在现有的bot中使用,可以用其他方式的手工行为玩完整游戏。卷积神经网络拟合Q学习(CNNFQ)是另一种基于宏的方法,这里使用RL而不是SL,已通过Double DQN进行了星际争霸II中的建造订单计划培训,并且能够与中级脚本机器人竞争小地图[148]。一种基于宏动作的强化学习方法,使用近邻策略优化构建订单计划和高级攻击计划的集成化(PPO)的性能优于StarCraft II中内置的bot,级别为10 [141]。通过充分了解地图和更快地收集资源,这对于第10级机器人作弊来说尤其令人印象深刻。结果是在80台机器上的3840个CPU上使用1920个并行actor获得的,并且仅在一张地图上进行了一次对决。该系统在与白金级人类玩家的比赛中赢了几场比赛,但是与钻石级玩家的所有游戏都输了。作者报告说,博学的政策“缺乏策略多样性,以不断击败人类玩家” [141]。
G.团体运动会
深度确定性策略梯度(DDPG)已应用于RoboCup 2D半场进攻(HFO)[51]。角色网络使用了两个输出流,一个用于选择离散的动作类型(破折号,转弯,铲球和脚踢),一个用于每种动作类型的1-2个连续值参数(功率和方向)。当输出接近其边界时,Inverting Gradients边界方法会缩小梯度,如果参数超过边界,则将其反转。在2012年的RoboCup比赛中,这种方法的表现优于SARSA和最佳代理。 DDPG还通过将策略更新与第一步Q-Learning更新[53]相结合而应用于HFO,并且在每个团队中只有一名参与者,胜过了具有专业知识的手工编码代理。
H.物理游戏
由于视频游戏通常是对现实世界的反映或简化,因此了解有关环境中物理定律的直觉可能会富有成果。使用以对象为中心的方法(也称为注视)的预测性神经网络在接受随机交互训练后学会了运行台球游戏[36]。然后,该预测模型可用于计划游戏中的动作。
使用虚幻引擎在类似3D游戏的环境中测试了类似的预测方法,其中对ResNet-34 [55](用于图像分类的深层残差网络)进行了扩展和训练,以预测堆叠的块的视觉效果这样它们通常会掉下来[86]。残留网络实现跳过层的快捷连接,这可以改善非常深入的网络中的学习。
I.文字冒险游戏
文本冒险游戏是一种特殊的视频游戏类型,其中状态和动作都仅以文本形式呈现。一种称为LSTM-DQN [101]的网络体系结构专门设计用于玩这些游戏,并使用LSTM网络实现,该网络将文本从世界状态转换为矢量表示,该矢量表示估计所有可能的状态-动作对的Q值。在两种不同的文字冒险游戏中,LSTM-DQN能够平均完成96%至100%的任务。
为了改善这些结果,研究人员已转向学习语言模型和单词嵌入以增强神经网络。结合了一种方法
具有明确语言理解的强化学习是深度强化相关网络(DRRN)[54]。这种方法有两个学习单词嵌入的网络。一个嵌入状态描述,另一个嵌入动作描述。使用诸如向量的内积或双线性运算之类的相互作用函数来计算两个嵌入向量之间的相关性。然后将相关性用作Q值,并通过深度Q学习对整个过程进行端到端培训。这种方法允许网络将训练期间未看到的短语归纳为一个大型文本游戏的改进。该方法已在文字游戏《拯救约翰》和《机器的死亡》中进行了测试,这两种游戏都是基于选择的游戏。
使语言建模更进一步,Fulda等。等明确建模的语言能力可帮助选择行动[37]。首先通过无监督学习从维基百科语料库中学习单词嵌入[94],然后使用该嵌入来计算类比,例如将歌曲作为自行车与x一起唱歌,然后可以在嵌入空间中计算x [94]。 。作者构建了一个动词,名词对和另一个对象操纵对的字典。使用所学的能力,该模型可以为状态描述建议一小组动作。通过Q-Learning学习了策略,并在50个Z-Machine游戏上进行了测试。戈洛文特工专门研究语言模型[75],这些语言模型是从幻想类型的书籍中预训练的。使用单词嵌入,代理可以用已知单词替换同义词。戈洛文由五个命令生成器构成:常规,运动,战斗,战斗,收集和库存。这些是通过分析状态描述而生成的,使用语言模型为每个命令从许多功能中计算和采样。戈洛文(Golovin)不使用强化学习,其得分与可负担性方法相当。
最近,Zahavy等。等提出了另一种DQN方法[173]。此方法使用一种称为“行动消除网络”(AEN)的注意力机制。在基于解析器的游戏中,动作空间非常大。 AEN在玩游戏时会学习预测哪些动作对给定的状态描述无效。然后,使用AEN消除给定状态下的大多数可用操作,然后使用Q网络评估剩余的操作。整个过程经过端到端培训,并通过手动约束的操作空间实现了与DQN相似的性能。尽管文本冒险游戏取得了进步,但当前的技术仍远不能与人类的表现相提并论。
在文字冒险游戏之外,自然语言处理也已用于其他基于文字的游戏。为了促进通信,使用了深度分布式循环Q网络(DDRQN)架构来训练多个代理来学习通信协议,以解决多代理之谜[34]。 DDRQN中的一种新颖修改是,代理使用共享网络权重,该权重取决于其唯一ID,这使得能够在保持代理之间的多样性的同时加快学习速度。
V.游戏深度学习的历史概述
上一节根据游戏类型讨论了游戏中的深度学习方法。该部分看起来这些方法如何相互影响方面的发展,对深度学习方法进行了历史回顾,在上一节中进行了回顾。这些方法中有许多是从以前的方法中汲取灵感或直接建立在以前的方法上的,而有些方法则适用于不同的游戏类型,而另一些方法则是针对特定类型的游戏量身定制的。
图4显示了一个影响图,其中包含已审查的方法及其与早期方法的关系(当前部分可以看成是该图的长标题)。图中的每种方法都带有颜色,以显示游戏基准。 DQN [97]作为一种算法很有用,该算法使用基于梯度的深度学习进行基于像素的视频游戏,并且最初应用于Atari基准测试。请注意,存在较早的方法,但成功率较低,例如[109]和成功的无梯度方法[115]。 Double DQN [155]和Dueling DQN [161]是使用多个网络来改进估计的早期扩展。 DRQN [51]使用递归神经网络作为Q网络。优先DQN [123]是另一个早期扩展,它增加了改进的体验重播采样。自举式DQN [106]是Double DQN的基础,它采用了不同的改进采样策略。用于Atari的其他DQN增强功能包括:C51算法[9],该算法基于DQN但更改了Q函数;噪声网使网络随机,以协助探索[35]; DQfD也从例子中学习[57];和Rainbow,将许多这些最先进的技术结合在一起[56]。
Gorila是第一个基于DQN的异步方法[100],随后是A3C [96],该方法将多个异步代理用于参与者批评方法。 2016年底,UNREAL [63]进一步扩展了该方法,该方法结合了辅助学习完成的工作以处理稀疏的反馈环境。从那时起,A3C有了很多其他扩展[166],[160],[120],[35]。 IMPALA通过专注于可以玩所有Atari游戏[30]的受过训练的经纪人来进一步发展。在2018年,通过Ape-X [61],[112]继续向大规模分布式学习迈进。进化技术也正在使视频游戏复兴。第一Salimans等。等结果表明,进化策略可以与深度RL竞争[121]。然后,Uber AI又发表了两篇论文:一篇表明无导数进化算法可以与深度RL竞争[139],以及对ES的扩展[24]。它们得益于易于并行化,并且可能在勘探中具有一定优势。
引入DQN时,在Atari上使用的另一种方法是信任区域策略优化[77]。这将更新从环境更新的替代目标。 2017年下半年,引入了近端策略优化作为一种​​更健壮,更简单的代理优化方案,该方案也借鉴了A3C的创新[129]。一些扩展专门针对Montezuma的复仇,这是ALE基准内的游戏,但是由于稀疏的奖励和隐藏的信息而特别困难。在Montezuma上表现最佳的算法是通过使用固有动机[8]和分层学习[77]扩展DQN来实现的。 Packman女士还从Atari选拔出来,在那里,奖励功能是单独学习的,从而使
代理对新环境更健壮[156]。
《毁灭战士》是2016年的新基准。该游戏的大部分工作都在扩展为Atari设计的方法,以处理更丰富的数据。 A3C +课程学习[167]建议在A3C中使用课程学习。 DRQN +辅助学习[79]通过在培训期间增加额外的奖励来扩展DRQN。 DQN + SLAM [14]结合了使用DQN映射未知环境的技术。
DFP [28]是唯一没有扩展Atari技术的方法。与Atari的UCT分类[42],台球的以对象为中心的预测[36]和Racing的直接感知[21]一样,DFP使用监督学习来学习游戏。所有这些,除了《 UCT分类》外,都学会了直接预测游戏的某些未来状态并根据此信息进行预测。这些来自不同年份的作品都没有相互参照。除了Direct Perception之外,赛车上唯一独特的作品是Deep DPG [88],它将DQN扩展为连续控制。该技术已扩展到RoboCup Soccer [52] [53]。
《星际争霸》微管理(单元控制)的工作基于2016年底开始的Q学习。IQL[33]通过将所有其他代理视为环境的一部分来扩展DQN优先DQN。 COMA [32]通过计算反事实报酬(每个特工增加的边际贡献)扩展了IQL。 biCNet [111]和零阶优化[154]是基于强化学习的,但并非源自DQN。另一种流行的方法是分层学习。在2017年,它使用重播数据进行了尝试[68],并在2018年通过将其与两种不同的RL方法一起使用而获得了最先进的结果[141],[148]。
2016年发表的一些作品将DQN扩展到Minecraft [150]。大约在同一时间,开发了使DQN上下文感知和模块化以处理大型状态空间的技术[102]。最近,课程学习也已应用于Minecraft [92]。
DQN于2015年应用于文字冒险游戏[101]。不久之后,它被修改为具有特定于语言的体系结构,并使用状态-动作对相关性作为Q值[54]。这些游戏的大部分工作都集中在显式语言建模上。戈洛文特工和基于负担的行动选择都使用神经网络来学习语言模型,这些语言模型为特工提供了扮演的行动[37],[75]。最近,在2018年,DQN再次与“行动消除网络”配对使用[173]。
事实证明,结合以前算法的扩展是应用于视频游戏的深度学习的一个有希望的方向,而Atari是RL最受欢迎的基准。从表II中可以明显看出,另一个明显的趋势是对并行化的关注:将工作分配到多个CPU和GPU之间。并行化最常见于行动者批评方法,例如A2C和A3C,以及进化论方法,例如Deep GA [139]和Evolution Strategies [121],[24]。分层强化学习,内在动机和迁移学习是有望掌握视频游戏中当前尚未解决的问题的新方向。

VI。公开挑战
虽然深度学习已在视频游戏中取得了显著成果,但仍存在许多重要的开放挑战,我们将在这里进行回顾。确实,回顾未来一两年的研究现状,我们很可能会将当前的研究视为广泛而重要的研究领域中的早期步骤。本节分为四大类(代理模型属性,游戏行业,游戏学习模型和计算资源),它们具有不同的游戏玩法挑战,仍然对深度学习技术开放。我们提到了一些应对某些挑战的潜在方法,而目前尚不清楚针对其他挑战的最佳方法。
A.代理模型属性
1)普通电子游戏
能够解决一个问题并不能使您变得聪明。没有人会说深蓝色或AlphaGo
[133]具有一般的智力,因为他们甚至不能玩跳棋(未经重新训练),更不用说煮咖啡或系鞋带了。要学习一般的智能行为,您不仅需要训练单个任务,还需要训练许多不同的任务[83]。电子游戏被认为是学习一般智力的理想环境,部分原因是因为有太多共享共同接口和奖励惯例的电子游戏[124]。但是,视频游戏深度学习的绝大多数工作都集中于学习玩单个游戏,甚至在单个游戏中执行单个任务。
虽然基于RL的深入方法可以学习玩各种不同的Atari游戏,但是开发可学习玩任何类型游戏(例如Atari游戏,DOOM和StarCraft)的算法仍然是一项重大挑战。当前的方法仍然需要大量的努力来设计网络体系结构并为特定类型的游戏奖励功能。
在玩多个游戏的问题上的进步包括渐进式神经网络[120],它允许新游戏(不会忘记以前学习的功能),并通过横向连接利用以前学习的功能更快地解决问题。但是,它们为每个任务都需要一个单独的网络。弹性重量合并[74]可以顺序学习多个Atari游戏,并通过保护权重不被修改而避免灾难性的遗忘,而这对于以前学习的游戏很重要。在PathNet中,使用进化算法来选择将神经网络的哪些部分用于学习新任务,从而证明ALE游戏具有一些转移学习的性能[31]。
将来,即使这些游戏非常不同,也要扩展这些方法以学习玩多个游戏,这一点很重要-大多数当前的方法侧重于ALE框架中的不同(已知)游戏。这种研究的合适途径是GVGAI竞赛的新学习轨迹[78],[116]。与ALE不同,GVGAI有可能无限的游戏。 GVGAI的最新工作表明,无模型的深度RL不仅适合个人游戏,甚至适合个人水平。通过在培训过程中不断提高新水平来应对这一问题[69]。
多元游戏问题的重大进步可能来自外部深度学习。特别是,最近的缠结图表示法(一种遗传编程形式)已在这项任务中显示出希望[72]。最近的IMPALA算法试图通过大规模扩展解决多游戏学习问题,并取得了一些有希望的结果[30]。
2)克服稀疏,延迟或欺骗性的奖励
以稀疏奖励为特征的蒙特祖玛的复仇之类的游戏,仍然对大多数Deep RL方法提出了挑战。尽管将DQN与内在动机[8]或专家演示[57],[112]相结合的最新进展可以提供帮助,但是稀疏奖励的游戏仍然是当前深度RL方法的挑战。关于内在动机的强化学习[22],[125]和分层强化学习的研究已有很长的历史,在这里可能有用[5],[163]。基于Minecraft的Project Malmo环境提供了一个极好的场所,可用于创建具有稀疏奖励的任务,而代理商需要设定自己的目标。无导数和无梯度的方法,例如进化策略和遗传算法,通过局部采样来探索参数空间,并且对于这些游戏是有前途的,尤其是与[24],[139]中的新颖性搜索结合使用时。

3)与多个代理一起学习
当前的深入RL方法大多与培训单个代理有关。存在多个例外,多个代理必须合作[85],[33],[154],[111],[32],但是如何在各种情况下扩展到更多代理仍然是一个公开的挑战。在许多当前的视频游戏中,例如《星际争霸》或《侠盗猎车手5》,许多特工相互之间以及与玩家互动。为了将视频游戏中的多代理学习扩展到与当前单代理方法相同的性能水平,可能需要能够同时有效培训多个代理的新方法。
4)终身适应
虽然可以训练NPC很好地玩各种游戏(请参阅第IV节),但是当涉及到应该能够代理的代理时,当前的机器学习技术仍然很困难
在他们的一生中(即在玩游戏时)适应。例如,当人类玩家意识到自己总是被伏击在FPS地图中的相同位置时,可以迅速改变其行为。但是,大多数当前的DL技术将需要昂贵的重新培训才能适应这些情况以及在培训过程中未遇到的其他不可预见的情况。一个人的实时行为所提供的数据量远不及普通深度学习方法所需的数据量。这项挑战与少拍学习,迁移学习和普通视频游戏的广泛问题有关。解决这一问题对于创建更具可信性和人性化的NPC至关重要。
5)类人游戏
终身学习只是当前NPC与人类玩家相比缺乏的差异之一。大多数方法都与创建尽可能玩特定游戏的代理有关,通常只考虑达到的分数。但是,如果期望人类在视频游戏中与基于AI的机器人对战或与其合作,则其他因素也会发挥作用。在这种情况下,与其创建一个能完美玩转的机器人,不如让机器人变得可信且有趣,并且具有与人类玩家相似的特质,这一点变得更为重要。
类人游戏是一个活跃的研究领域,有两个针对类人行为的竞赛,分别是2k BotPrize [58],[59]和马里奥AI冠军赛的Turing测试赛道[131]。这些比赛中的大多数参赛作品都是基于各种非神经网络技术,而有些则使用了深度神经网络的进化训练来产生类似人的行为[127],[105]。
6)可调节的性能水平
几乎所有有关DL的游戏研究都旨在创建能够尽可能玩游戏,甚至“击败”游戏的代理。但是,出于游戏测试,创建教程和演示游戏的目的-在所有具有类似于人类的游戏玩法的地方-能创建具有特定技能水平的特工很重要。如果您的经纪人比任何人类玩家都玩得更好,那么这不是人类在游戏中会做什么的好模型。从最基本的意义上讲,这可能需要训练一个玩得很好的代理,然后找到降低该代理性能的方法。但是,能够以更细粒度的方式调整性能水平,以便例如分别控制代理的反应速度或长期计划能力,将更为有用。甚至更有用的是能够禁止训练有素的特工的游戏风格的某些能力,从而测试例如是否可以在没有某些动作或战术的情况下解决给定水平。
实现这一点的一条途径是程序角色的概念,其中,代理的偏好被编码为一组效用权重[60]。但是,尚未使用深度学习来实现此概念,并且仍不清楚如何在这种情况下实现计划深度控制。

7)处理非常大的决策空间
国际象棋的平均分支因子徘徊在30左右,围棋的平均分支因子徘徊在300左右,而《星际争霸》之类的游戏的分支因子要大几个数量级。而
15
进化规划的最新进展已使分支因子较大的游戏的实时和长期规划达到[66],[159],[67],如何将Deep RL扩展到如此复杂的水平是一个重要的开放挑战。在这些游戏中通过深度学习来学习启发式方法以增强搜索算法也是一个有前途的方向。
B.游戏产业
1)在游戏行业中的采用
由于DL,Facebook,Google / Alphabet,Microsoft和Amazon等各种公司对DL的开发投入了大量资金,因此DL的许多最新进展得到了加速。但是,游戏行业尚未完全接受这些进步。有时,这被游戏界以外的评论员感到惊讶,因为游戏被视为大量使用AI技术。但是,在游戏行业中最常使用的AI的类型更多地集中在具有表现力的非玩家角色(NPC)行为的手工创作上,而不是机器学习上。在该行业中缺乏神经网络(及类似方法)采用的一个经常被提及的原因是,这种方法固有地难以控制,这可能导致不良的NPC行为(例如,NPC可能决定杀死一个与故事有关)。另外,训练深度网络模型需要一定水平的专业知识,并且该领域的专家库仍然有限。应对这些挑战很重要,以鼓励游戏行业的广泛采用。
另外,尽管大多数DL方法尽可能地只专注于玩游戏,但这一目标对于游戏行业而言可能并不是最重要的[171]。在此,玩家在玩耍时所经历的乐趣或参与度是至关重要的。 DL在游戏制作过程中用于游戏的一种用途是进行游戏测试,其中人工代理测试级别是否可解决或难度是否合适。 DL可能会在游戏行业中看到其最显着的用途,而不是玩游戏,而是基于对现有内容[140],[158]的训练或对玩家体验进行建模[169]来生成游戏内容[130]。
在游戏行业中,包括Electronic Arts,Ubisoft和Unity在内的数家大型开发和技术公司最近已开始内部研究部门,部分致力于深度学习。这些公司或其客户的开发部门是否也将接受这些技术还有待观察。

2)游戏开发的互动工具
与先前的挑战相关,目前缺少设计人员用于轻松训练NPC行为的工具。虽然现在有许多用于训练深度网络的开源工具,但是其中大多数都需要相当专业的知识。如果设计人员可以使用一种工具轻松地指定所需的NPC行为(以及不希望的NPC行为),同时又可以确保对最终训练结果的一定程度的控制,则可以极大地加快游戏行业对这些新方法的采用。
从人类的喜好中学习是该领域一个有希望的方向。在神经进化的背景下[115],也对这种方法进行了广泛的研究。
电子游戏的开发,允许非专业用户滋生超级马里奥的行为[135]。最近,类似的基于偏好的方法被应用于深度RL方法[23],允许代理商基于人类偏好学习和深度RL的组合来学习Atari游戏。最近,游戏公司King发布了使用模仿学习的结果,以学习对Candy Crush级别进行游戏测试的策略,为新的设计工具指明了一个有希望的方向[41]。
3)创建新型的视频游戏
DL可能会提供一种创建全新游戏的方法。当今的大多数游戏设计都源于没有先进的AI方法可用或硬件过于受限而无法使用它们的时代,这意味着游戏被设计为不需要AI。围绕AI设计新游戏可以帮助突破这些限制。特别是进化算法和神经进化[115]允许创建全新的游戏类型,但在这种情况下尚未探索基于梯度下降的DL。神经进化是NERO [137],银河军备竞赛[48],Petalz [114]和EvoCommander [64]等游戏的核心机制。基于梯度的优化的一个挑战是结构通常仅限于具有数学上的平滑度(即可微性),这使得创建有趣且出乎意料的输出具有挑战性。
C.游戏学习模型
关于游戏深度学习的许多工作都采用了无模型的端到端学习方法,其中训练了神经网络,以状态观察作为输入来产生动作。但是,众所周知,良好且快速的模型使玩游戏变得容易得多,因为可以使用基于树搜索或进化的计划方法[171]。因此,该领域面临的一个重要的开放挑战是开发一种可以学习游戏正向模型的方法,从而有可能对游戏的动力学进行推理。
希望学习游戏规则的方法可以更好地推广到不同的游戏变体,并表现出更强大的学习效果。在这方面有希望的工作包括Guzdial等人的方法。 [44]从游戏数据中学习了超级马里奥兄弟的简单游戏引擎。 Kansky等。 [70]介绍了模式网络的思想,该网络遵循一种面向对象的方法,并经过培训可以根据当前的属性和动作来预测未来的对象属性和奖励。因此,训练有素的模式网络提供了一种概率模型,该模型可用于计划,并且能够执行零散发转移到Breakout的变体,类似于训练中使用的变体。
D.计算资源
随着开放世界中更高级的计算模型和大量代理的出现,计算速度成为一个问题。旨在通过在训练后压缩网络[62]或修剪网络[47],[43]来使网络计算效率更高的方法可能会有用。当然,一般而言或神经网络的处理能力的提高也将很重要。目前,将网络实时训练为16适应游戏中的变化或适应玩家的游戏风格,这在设计过程中可能会很有用。

七。 结论
本文回顾了应用于各种类型视频游戏中的深度学习方法,包括: 街机,赛车,第一人称射击游戏,开放世界,实时策略,团队运动,物理和文字冒险游戏。 大部分经过审查的工作都在端到端的无模型深度强化学习中进行,其中卷积神经网络通过与游戏互动来学习直接从原始像素进行游戏。 最近的工作表明,无导数的进化策略和遗传算法是竞争性的选择。 一些经过审查的工作应用监督学习来模仿游戏日志中的行为,而另一些则基于学习环境模型的方法。 对于简单的游戏(例如大多数街机游戏),经过审查的方法可以实现高于人类水平的性能,而在更复杂的游戏中则存在许多开放性挑战。

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DeepLearning4j是一个基于Java编写的深度学习框架,支持多种神经网络模型和算法。其包括DQN算法,可以用于处理强化学习问题。 以下是DeepLearning4j实现DQN算法的示例代码: ```java public class DQNExample { public static void main(String[] args) throws Exception { //定义强化学习环境 GymEnv gymEnv = new GymEnv("CartPole-v0", false, false); //定义神经网络模型 int numInputs = gymEnv.getObservationSpace().getShape()[0]; int numOutputs = gymEnv.getActionSpace().getSize(); int numHiddenNodes = 32; MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder() .seed(123) .updater(new Adam(0.01)) .list() .layer(new DenseLayer.Builder().nIn(numInputs).nOut(numHiddenNodes).activation(Activation.RELU).build()) .layer(new DenseLayer.Builder().nIn(numHiddenNodes).nOut(numHiddenNodes).activation(Activation.RELU).build()) .layer(new OutputLayer.Builder(LossFunctions.LossFunction.MSE).nIn(numHiddenNodes).nOut(numOutputs).activation(Activation.IDENTITY).build()) .build(); //定义DQN算法 DQN dqn = new DQN(conf, gymEnv, new QLearning.QLConfiguration( 123, //随机数种子 1000, //最大步数 500, //记忆库大小 32, //小批量大小 500, //目标更新频率 10, //训练开始前等待步数 0.01, //初始ε贪心策略参数 0.1, //最小ε贪心策略参数 0.99, //ε贪心策略参数衰减率 1 //回放库采样策略参数 )); //训练模型 for (int i = 0; i < 1000; i++) { dqn.train(); } //测试模型 gymEnv.reset(); for (int i = 0; i < 1000; i++) { INDArray obs = gymEnv.getObservation(); int action = dqn.getAction(obs); gymEnv.step(action); gymEnv.render(); } } } ``` 在以上代码,首先定义了强化学习环境,这里使用了OpenAI Gym提供的CartPole-v0环境。接着定义了神经网络模型,使用了两个全连接层和一个输出层,其激活函数分别为ReLU和恒等函数。然后定义了DQN算法,其包括了训练的超参数,如最大步数、记忆库大小等。最后进行模型的训练和测试,测试时使用了模型的预测结果作为动作。 需要注意的是,DeepLearning4j实现DQN算法需要依赖于OpenAI Gym环境和ND4J库,需要进行配置和安装。此外,DQN算法还有许多改进版本,如Double DQN、Dueling DQN等,可以根据具体问题进行选择和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值