《星际争霸》一直是游戏玩家心目中即时战略类的经典之作,历时十多年而不衰。而如今它更成为深度强化学习、人工智能算法研究的一个主要平台和工具。因为其蕴含了多智能体协作、多任务学习、宏观策略规划等复杂问题,一旦取得部分突破和进展,对商业和社会发展都会带来极大影响。如国外的 DeepMind、Facebook 等公司相继投入大量人力基于它进行通用人工智能的研究。在本次演讲中,我们将介绍阿里巴巴如何在《星际争霸》游戏环境中研究人工智能算法,并重点阐述多智能体协作在微观战斗场景中的应用。
大家下午好!我是来自阿里巴巴认知计算实验室的龙海涛,今天主要跟大家聊一下“《星际争霸》与人工智能”的话题。首先我会介绍一下为什么我们会选择《星际争霸》这个游戏来做人工智能前沿性的研究,然后是我们在这方面初步的尝试和成果,最后我会跟大家探讨一下,未来我们在《星际争霸》这个游戏里面还可以继续去研究的一些课题。
首先可能大家有疑问,为什么选择《星际争霸》这个游戏来做我们AI研究的一个平台。我们这个认知计算实验室目前是挂靠在搜索事业部下面,我们团队的成员基本都是做搜索、广告、推荐、算法这样的背景,之前我们主要做的是CTR预估的优化,还有CVR转化率的一些优化,从去年“双11”之后,我们想在认知智能方面做一些前沿性的探索,
我们一致认为游戏是一个研究AI算法的绝佳平台,首先它是非常干净的平台,可以源源不断的去产生数据,而且迭代非常快,就是说它的智能是可以观测到的
。
另外,它离真实的场景和应用是比较近的
,并且《星际争霸》十多年来就是一个非常好的受大家欢迎的游戏,积累了非常非常多的数据,这样我们可以从之前的经验去学习,这也是我们考虑的一个方面。最重要的,它对AI来讲存在着非常大的挑战,非常复杂,主要有以下六点:
比起像围棋或者象棋这种大家都可能看得见的、完全信息下的博弈,《星际争霸》是有战争迷雾的,所以必须去探路、侦查、了解对手的信息,从而在不确定的情况下去做智能的决策,这个是相对其他游戏来讲非常不同或者挑战更大的一个方面。
围棋的搜索空间大概在10^170,《星际争霸》在128×128的地图上并且人口上限是400个unit的情况下,它的搜索空间大概在10^1685,比围棋高10个数量级,这还是在没有算上其他状态(比如说血量等等)的情况下。所以现有的任意一个单一的算法是根本不可能解决《星际争霸》里面所有的问题的。
下围棋可以有一分钟或者两分钟的思考时间,但是在《星际争霸》里,如果说正常游戏大概是1秒钟24帧,那么你必须在42毫秒之内做出迅速的反应,而且这个反应不是一个action,而是一系列的action,每个unit都会采取行动,这对我们算法的性能、效率、工程上的考虑都是非常大的挑战。
不是一个下意识的动作,是需要有记忆,需要考虑这场战争应该采取什么样的策略,中盘应该怎么考虑,发展到后期又应该采取什么样的策略,而且这个策略的计划是根据侦查到的所有的信息动态去调整,这对人工智能的挑战是非常非常大的。
在《星际争霸》里面要玩好的话,必须基于时序上、空间上去做推理,比如说地理位置的优势,坦克如果架在哪里可能会比较好,如果开分机在哪个位置去开会比较有利,甚至于军营造在什么地方,这些对于AI来说都需要进行一个空间上的推理。
《星际争霸》最高有400个unit,所以其实是需要多个智能体协作的,需要多个兵种去配合,这也是对AI来讲一个很大的挑战。
《星际争霸》里面AI的研究或者竞赛不是最近才出现的,其实在2010年的时候已经有大量的研究人员在研究《星际争霸》里面的AI,主要是以ALBERTA大学为主的研究力量,包括一些老师和学生,而且有三个固定的竞赛和一些循环赛,大家在上面PK。这一类AI的话是Classic AI,也就是没有学习能力、没有模型、也不需要训练,而是基于预编程的规则,所以不是非常灵活,这种算法下的AI其实离真正超过人类或者打败人类目标还是非常非常远的,它们可以打败内置的AI,但是还远远比不上人类的专业选手,甚至连普通选手基本上也打不过。
另外一类是Modern AI,也就是以智能体自主学习为主的算法,从去年开始这个领域火起来了,一方面就是,阿里巴巴还有伦敦大学学院,最近我们在合作的基于《星际争霸1》里面做一些新的AI的尝试。
另外就是Google Deep Mind,去年11月份他们和暴雪合作,会基于《星际争霸2》去开放一个API,让大家基于《星际争霸2》上开发自己的AI算法,另外像Facebook他们也有一些团队做这方面的研究。
强化学习是非常接近人类学习的一个学习机制,通过这个Agent跟环境的交互,在交互当中学习。Agent会观察周围的环境,然后环境会给它一些反馈,Agent根据状态和反馈会做出一些动作,这些动作会或多或少的影响这个环境,环境会根据这个动作反馈一些Reward,Reward可能是奖励的也可能是惩罚的,Agent根据这样的试错,不断的去调整。Agent背后有两个概念非常重要,一个是不停的优化策略,什么样的状况下采用什么样的Action是合理的,另外一个是用价值函数评估当前的状态它的价值是怎么样的。
强化学习跟深度学习结合,就叫深度强化学习。因为深度学习或者神经网络是非常适合去做这种表示学习的,可以表示成一个复杂的函数。policy或者value用神经网络去逼近的话,在工程上或者效率上是非常好的提升。以AlphaGo的例子来讲,在训练的时候分成三个阶段,第一个阶段,从人类的棋谱里面学习人类的先验的知识,通过监督学习学习一个还好的、胜率比较高的policy network,第二个阶段,基于监督学习学习出来的policy network,然后自我对弈,通过policy gradient再去优化policy network,这就比之前学出来的policy network要更好。第三阶段,再用学出来的强化学习版的policy network自我对弈,得到一个最佳的。
其实目前为止所有的AI的智能体比较成功的一些应用基本都是这种单个的Agent,其实对于人类来讲,协作智能是智能体的一个非常大的方面,我们的祖先智人为什么可以统治地球,其中一个很大的原因就是,他们学会了大规模的协作,而且是非常灵活的协作。可以想象一下,未来全部都是这种AI的智能体,它们能不能自我学习到人类水平协作的一个智能呢?
我们用了一个词Artificial Collective Intelligence,这对现实和未来都有非常大的意义。比如手机淘宝,现在绝大部分流量背后都是一个算法推荐出来的,不管广告还是搜索其背后都是AI的智能体在做,目前这些智能体都是各出各的优化,或者推出自己的商品。
其实我们在考虑的是,比如手机淘宝首页里边有爱逛街、猜你喜欢这种位置,那么他们能不能够协同地去推出一些这样的商品,从而可以让用户的体验最好,让平台的价值最大化。其实以后可能都是算法经济、AI经济,都是这种AI的Agent,比如满大街可能都是自动驾驶的无人车,他们之间是不是也需要一些协作,让交通出行效率能够达到最大化。
最近我们在《星际争霸》里的微观战斗场景下,提出来一个多智能体双向协作网络,关于这个网络的详细内容大家感兴趣可以下载我们的paper看一下,这个工作是我们跟UCL一起合作完成的,用来探索或者解决多智能体协作的问题。
这是我们提出来的BiCNet(Multiagent Bidirectionally-Coordinated Net)的网络结构,它其实也是比较经典的结构,分成两部分,左边这部分是一个policy的网络,就是说从下往上会把《星际争霸》的环境进行一些抽象,包括地图的信息、敌方单位的血量、攻击力,还有我方unit的信息,抽象出来形成一个共享的State,经过一个双向的RNN这样的网络,进行充分的双向的沟通,再往上每个Agent去得出自己的Action,比如我到某一个地方去攻击谁。左边这个policy network就是对于当前的状态应该采取什么行动,右边就是一个value的network,根据前面policy得出来的Action,还有抽象出来的State进行评估,Q值大概是多少,做出一个预判。当采取这些行动以后,这个环境就会给出相应的反馈,一些Reward来说明这步打的好还是不好,然后会通过一个Reword从右边这个网络下来,去反向传播更新里面的参数。
这个网络有几点比较好的设计:
第一,它的scalability比较好,《星际争霸》里面打仗的时候随时可能会有伤亡,这个Agent死掉以后这个网络不是还可以正常的工作,包括源源不断涌现的新的Agent进来,是不是也是可以工作。我们看到双向网络参数是共享的,所以是不会有影响的。
第二,我们在中间用了这样一个双向网络以后,其实是在一个效率和性能之间做了比较好的平衡,如果用全连接网络的话,计算量会过大。但是我们用一个双向网络,前面告诉你大概要做什么样的Action,回来再告诉前面的人他们采取了什么样的Action,一结合,最后算出来应该追加的策略是什么样子,从实际来看效果也是非常好的。