工欲善其事必先利其器——游戏 AI 环境对比

DeepMind 发表 DQN 算法在 Atari 游戏上超过人类之后,游戏 AI 研究迅速成为了研究热点。游戏 AI 研究火热的一个侧面是游戏 AI 环境推陈出新,层出不穷。OpenAI Gym/Universe、ELF 和 SC2LE 等高水准的游戏 AI 环境相继问世。

1. 游戏 AI 环境简介

游戏 AI 环境包括游戏和适应 AI 调用的 API 接口。现在的游戏 AI 环境可以分为两类:单一游戏 AI 环境和集成游戏 AI 环境。单一游戏 AI 环境是指针对一个游戏构建的游戏 AI 环境。因为针对星际争霸的实在太有名了,我将之单独作为一类。其中 TorchCraft 是 FaceBook 基于星际争霸 I 的做的,后来阿里在上面加了 Python 接口推出了 TorchCraft-py。SC2LE 则是 DeepMind 和暴雪合作,基于星际争霸 II 推出的。另外 Malmo 是基于 MineCraft,ViDoom 是第一人称射击类,Maze 是一个简单的即时策略游戏 (RTS),TorCS 是赛车模拟游戏。集成游戏 AI 环境则是指游戏 AI 环境拥有多款游戏,比较有名的集成游戏 AI 环境有 OpenAI Gym/Universe 和 ELF。

除了这种划分标准,我们还有一种划分标准——游戏目的。1)大部分游戏 AI 环境是对现有游戏进行改造;这些现有游戏是专业游戏团队建立的,游戏目的是人们的娱乐。2)但是也有少部分研究者认为,现有游戏并不适合做 AI 训练,因此自己设计和实现游戏从而建立游戏 AI 环境;Maze 和 ELF 就是这种思路的代表;游戏目的是研究。

2. OpenAI Gym/Universe

OpenAI Gym 是 OpenAI 发布的对比测试深度强化学习的框架,其框架是标准强化学习的框架,如下所示。

OpenAI Gym 的用法简单明了。

后来 OpenAI 又发布了一套工具,方便开发人员将世界上的游戏移植到 OpenAI Gym 上,并使用这套工具移植超过 1 千款游戏。这便是 Universe。OpenAI 的官博宣称:Universe 是一个能在世界上所有的游戏、网站和其他应用中,衡量和训练 AI 通用智能的软件平台。这样宣称是基于有了这套工具,就有了将世界上所有游戏移植到 OpenAI Gym 的潜力。。。

OpenAI Gym/Universe 有一些问题。其中一个就是现有算法能够在大部分 OpenAI Gym/Universe 游戏超过人类。换而言之,OpenAI Gym/Universe 大部分游戏在学术上处于 Solved 状态。这让 OpenAI Gym/Universe 的学术价值没有那么大了。不过,OpenAI Gym/Universe 游戏依然能够为新算法提供测试场景。毕竟新算法在 Solved 的问题上比旧算法高效很多,也很有学术价值。但游戏 AI 研究的两大重镇:DeepMind 和 FaceBook 都自己搞一套,没在 OpenAI Gym/Universe 做实验。

3. ELF

ELF 是 FaceBook 推出的游戏 AI 环境,包括围棋和 ALF(一个 Atari 游戏集)。除此之外,ELF 还实现了一个 RTS 游戏引擎,在这个引擎的基础上实现了一个夺旗游戏、一个塔防游戏和一个 mini-RTS。围棋和 ALF 是点缀,ELF 的重心是 RTS 游戏引擎上的 mini-RTS。

ELF 用 C++ 将许多并行的游戏线程和每个线程的历史数据封装进去,每次 Python 循环时都可以得到一批次的游戏状态。这样做有两个好处:Python 操作简便,不需要考虑分布式多线程的问题;同时 C ++ 实现的游戏引擎效率高。

在 ELF 的 mini-RTS 中,作者内置了一款基于规则的 AI, 同时实现了基于 A3C 强化学习的算法基线。从下面的对比图,我们可以看出 A3C 的效果要比基于规则的 AI。

ELF 作者关心重点是 ELF 的效率,强调高速的游戏 AI 环境对提升游戏 AI 研究的迭代有重要意义。从下面对比图来看,ELF 的效率非常高,速度比其他游戏 AI 环境高了不少。ELF 为了研究去设计和实现游戏,可以控制游戏复杂,并且做很多框架和实现上的优化,从而实现极高的运行效率。

4. SC2LE

2017 年 8 月 10 号,DeepMind 联合暴雪发布了星际争霸 II 游戏 AI 环境 SC2LE, 其框架如下所示。

这是标准的游戏 AI 环境的框架。对于一个复杂的游戏 AI 环境框架来说,三个问题需要得到解决:怎么抽象状态,怎么处理奖励和怎么抽象动作。对于怎么处理状态,SC2LE 使用三个部分的信息,分别是小地图、全地图和非空间信息。所谓非空间信息包括资源拥有量、科技树和建造队列等信息。

SC2LE 有两种奖励函数。一种是依照最终结果(1/胜,0/平,-1/负);另一种是基于暴雪给的 Bllizzard 分(资源采集量、科技树升级、单位、建筑的加权和),通过API可以实时获取。显而易见,第一种奖励和我们的目标一致,但太稀疏了;第二种则反之。

因为星际争霸的动作实在太多太杂,怎么抽象动作是 SC2LE 的一个重点。SC2LE 将星际争霸的动作空间整理成近 300 个动作函数,每个函数有相应的参数,参数一共有 13 种类型。比如在下图中,圈选一部分单位的函数为 select_rect, 两个整数参数表示选择矩阵的两个坐标点。

游戏 AI 打星际争霸是非常难的任务,因此除了完整 1v1 游戏之外,SC2LE 还很贴心地提供了 7 种迷你游戏,包括指定位置移动、两个机枪兵收集水晶矿碎片、击败小狗、击败小狗和爆虫、收集资源、造机枪兵。虽然这种贴心到最后除了进一步证明了现有算法的渣,并没有什么卵用。。。

为了验证 SC2LE 的效果并提供基线,SC2LE 提供了三个基于深度强化学习的基线方法。其中两个方法的网络结构分别是 Atari-net 和 FullyConv,第三个方法是 FullyConv 加 LSTM。

我们可以看到三种方法都被人打成狗了。。

完整游戏打不过人,那试一试迷你游戏模式。从下图可以看出,稍微复杂一点的迷你游戏上,这三种方法被人远远地超越了。图中 DeepMind Human Player 是 DeepMind 的一位员工,而 StarCraft Grand Master 是一名专业选手。

从上面的结果来看,现有算法对于 RTS 无解,RTS 游戏是学术上 Un-Solved 的问题。在这里,我们可以看出 “为了研究设计和实现游戏” 做法的缺陷了:ELF 论文里面有实现基于规则和基于 A3C 的游戏 AI, 并报告了实验对比;但我们还是会困惑现有算法到底达到什么水平,和人类相比怎么样; ELF 中的 mini-RTS 本身比较简单同时没有大量人类玩的经验和技巧,因此无法给我们解答这些困惑。但 SC2LE 不一样,星际争霸 II 是被广泛接受,并有大量人类体验的实际游戏。在星际争霸上,算法和人类对弈,人们对算法的水平立马就有一个直观的感知。

5. 总结

游戏 AI 环境推陈出新,层出不穷,得利于如火如荼的游戏 AI 研究。现在游戏 AI 环境极大丰富,就看游戏 AI 算法是在短期突破,还是长久守望了。

最后有一点私货:目前我在和小伙伴们开发非完美信息游戏 AI 环境:RoomAI。RoomAI 的目标是提供一些非完美信息游戏环境和一些基线模型算法,方便 AI 开发人员快速地构建、测试和对比自己的非完美信息游戏 AI 算法。目前 RoomAI 已经支持德州、梭哈和七鬼,基本流程如下所示:玩家 AI 获得游戏环境给出的信息,当前玩家 AI 选择合适的动作,游戏环境根据该动作推进游戏逻辑;重复上述过程,直到分出胜负。

RoomAI 的用法也是简单明了,下面是一个随机玩家的示例。

from roomai.kuhn import *;
import roomai.common
import random

#### Define your player Bot ####
class KuhnPokerExamplePlayer(roomai.common.AbstractPlayer):
    def receive_info(self, info):
        if info.person_state.available_actions is not None:
            self.actions = info.person_state.available_actions
           
    def take_action(self):
        idx = int(random.random() * len(self.actions))
        return self.available_actions.values()[idx]
        
    def reset(self):
        pass

if __name__ == "__main__":
    #### init ####
    env     = KuhnPokerEnv()
    players = [KuhnPokerExamplePlayer() for i in range(2)]

    #### playing ####
    scores = KuhnPokerEnv.compete(env, players) 
    print (scores)      

如果对 RoomAI 项目有兴趣,欢迎同学们关注并 Star。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏VRPinea

想用话语砸死人?《Word Vomit 3D》将你说的每个单词“实体化”

2778
来自专栏IT技术精选文摘

浅析eBay联盟营销的上下文广告机制

1323
来自专栏Sign

pktball游戏解析

之前的『好玩的小游戏推荐』,只是罗列了一下图,感觉没啥意思,所以改成简单的游戏解析了。 首先有个观点要了解一下: 有部分非程序员的同学认为,在程序员眼里,大部分...

3448
来自专栏企鹅号快讯

三年后,人工智能将彻底改变前端开发?

关键时刻,第一时间送达! 近几天,因为阮一峰老师的一条微博,我们看到了这样一个项目:https://weibo.com/1400854834/FE1Tz8TIB...

2346
来自专栏理论坞

跟随这10个趋势,你可以在2018年设计出出众的网页

年底最后一个月是总结头一年,思考和展望下一年的月份。经过2017年一整年的沉淀和总结,在最近的这些设计作品,重设计甚至小幅度的设计改版中,窥见一些即将在2018...

531
来自专栏数据的力量

工具|如何使用思维导图快速学习?

1475
来自专栏互联网杂技

如何在“无设计”语境下打磨界面设计中的极致细节体验?

微博是一款典型的信息流产品,早期微博IM复用了信息流的一些设计,并且已经很久没做大的更新迭代,导致现有的设计与实际场景不符。为了让用户更自然的聚焦在对话体验之中...

3219
来自专栏留存

获取目标的时间是目标距离和大小的函数。

1954年,心理学家保罗费茨检验人体运动系统,发现移动到目标所需的时间取决于距离,但与其大小成反比。根据他的法律,由于速度精度的折衷,快速移动和小目标会导致更高...

2959
来自专栏达观数据

干货 | 用一座冠军奖杯的实力讲述资讯个性化推荐

在当前信息爆炸的时代,只有在有限的屏幕内给用户展示最感兴趣的内容才能留住用户,让用户“流连忘返”,这就要求个性化推荐算法的精准度必须达到尖端水平。“达观杯”参赛...

3247
来自专栏Crossin的编程教室

不懂就问,这波虎扑diss吴亦凡属于什么水平?

(押韵支持来自我们去年的文章 Python有嘻哈:Crossin教你用代码写出押韵的verse)

753

扫码关注云+社区