深度强化学习训练AI,像人类一样玩DOOM

发表于2017-09-08
评论1 3.4k浏览

822日下午,在美国纽约举行的IEEE CIG2017上,宣布了今年Doom AI竞赛(ViZDoom)的结果,IEG NEXT研发中心Axon小组的机器人摘得季军。


IEEE CIG 2017

      ViZDoom要求参加竞赛的机器人和人类一样看屏幕,通过键鼠操作来玩Doom。这一竞赛是在深度学习,强化学习兴起的背景下产生的一项颇有挑战的AI竞赛。这项竞赛吸引了不少全球顶尖的AI实验室前来一展身手。去年,FacebookFAIR拿了Track1的冠军,Intel拿了Track2的冠军,CMU的机器人Arnold拿了两个Track的亚军。

CIG2016 ViZDoom Final

      ViZDoom的竞赛规则十分简单:8个机器人放到同一场景做DeathMatch 10分钟,根据Frags数量定胜负(Frags = 杀敌数量 - 自杀数量)。竞赛分为两个TrackTrack1固定地图,固定武器;Track2随机地图,随机武器。地图中分布着随机产生的弹药包,医疗包。有限弹药,无限条命,死亡10秒后,会在地图随机地点重生。

      Axon是今年三月份刚刚成立的AI小组,我们的使命:扫描研究AI前沿技术,寻找将其孵化到游戏开发中的可能性,提高游戏开发效率,提升玩家体验。ViZDoom是继围棋之后,去年,知乎上最热门的竞赛。今年4月份ViZDoom开始报名,我们参赛主要有两个目的:第一,希望通过这样一次有挑战的竞赛快速的锻炼团队,使团队对Deep Learning,尤其是Reinforcement Learning有更具象的理解,并且能够跟上前沿的研究步伐;第二,我们做了很多年的游戏AI,也急切的想知道本轮AI变革,对于最直接的游戏AI有着怎样的影响,做到心中有数。

Axon‘s SloganHack AI for Game

      我们最开始没有急着去做算法,一边扫描RL最新的Paper,一边着手搭建三个平台:分布式的训练平台,数据采集平台,和测试平台。因为我们知道,RL不同于有导师学习,核心是基于试错(Trial-and-Error)的,没有一个分布式的训练平台,用足CPUGPU,是很难探索出有效的策略。并且,RL不可以像有导师学习那样,能通过训练过程中的几个指标(比如:ErrorRecall)来判断训练效果,而是需要一个测试平台来验证训练模型的真实对比效果。在Gaia上搭建训练平台的同时,我们的算法也基本敲定:实验下来,DeepMind刚刚放出来的UNREAL是个不错的起点,既有A3C又有Auxiliary Tasks,具有很强的定制性。花了两周时间把三个平台搭起来,UNREAL也做了个多进程的版本,开始了艰难的训练之旅。

训练平台

      比赛之前我们组GroupStudy的时候一起推过RL的一系列基础算法,觉得RL有很好的理论框架,比如:MDPBellman Equation, TD, POActor-Criticetc. 数学上很靠谱,我们只要搭个神经网络充当Approximator就可以愉快的玩耍了。一动手就发现各种困难:用增强学习Train from scratch,发现状态空间很大,Reward非常Sparse,不管怎么调Reward Function,最后总收敛在奇奇怪怪的行为上,如:原地转圈,边走边打枪,朝墙乱开枪。于是尝试采用单项技能训练,比如专门训练Navigation,或是专门训练瞄准开枪,很快发现这些技能在习得后很难迁移到一个网络中。最后还是决定用Imitation LearningTrain一趟,至少让Reward不要那么的稀疏。

      于是我们拿去年冠军的Agent作为导师,很快训练得到了一个看上还可以的模型。当然,输入和模型都换成了我们自己的,只是拿他们的策略输出作为GroundTruthTrain一个Policy Net,这很像Alphago第一步有导师学习。这个模型也就是我们5月底参加热身赛的模型,记得当时,连PostRules都没加。

Imitation Learning

Input: Static Attention

      6月份,我们开始用UNREAL来增强Imitation的结果。很快就遇到一堆问题,最严重的是,增强的结果不是越来越好,而是越来越差。静下心来分析了一遍算法,我们核心算法是A3C,正常的ActorCritic是一起训练,同步提升的,而我们目前的情况是策略网络(Actor)很强,价值网络(Critic)很弱,Critic总是帮倒忙,所以会把策略网络训练的越来越坏。针对这个问题,我们想了一系列特殊的训练方法,最终在6月底得到了超越去年冠军的模型,并且参加了淘汰赛,当时总分排在第一,成绩也是超过了去年冠军F1

增强学习:A3C

      7月份我们想探索一下能否在目前这个看上去瞄准精确,杀敌效率很高的模型上,加上小策略(Tactics),让它变得更加聪明。当时,我们定下的策略是:避弹和转身射击。因为这两招在Doom巷战中很实用,Track1的子弹是Rocket,杀伤性能高,但是速度慢,只要距离足够,就能躲;躲过之后,擦身而过,紧接着来个回马枪,想想应该蛮Fancy的。因为吃过之前多个技能分开训练难以迁移的亏,我们考虑过DeepMindEWC,但是分析下来,原策略网络和新Tactics网络解空间中的Feasible Configuration重叠太少,EWC很可能搞不定,就开始用各种方法尝试在尽量保留原网络参数的情况下,加入分支,引入组合Tactics。训练方法也是先自己Hack一个会躲子弹的Bot,然后做Imitation Learning,最后RL做一次Overall Polish。最终模型中,可以发现Agent有明显的Dodge行为,但是喜忧参半,Dodge行为也降低了原模型的瞄准精度,测试下来,从统计上看,对成绩提升并不大。

Advanced Policy

      回头反思我们参赛的两个目标,算是基本达成。整个备赛过程接近4个月,Axon的三位小伙伴无论是对DLRL的理解,还是各种调参手段,公司Gaia集群上的分布式Training环境,都有着纸上谈兵永远得不到的领悟。同时我们也认识到,AGI, RL还有很长的路要走,单Agent的问题就可以列出一箩筐,比如:Reward EngineeringSample时候的High VarianceDelayed Reward造成的Temporal Credit Assignment困难;Prediction很难训练;MultiTask Training过程中的Catastrophic Forgetting; 在有限计算量下,很难Exploremid-term/long-termTactics。更不要说在多Agent情况下:超大的状态空间,Action空间;Decentralized-Centralized的平衡;MultiAgent Credit Assignmentlong-term Planning。对于游戏AI而言,基于DRL,目前最好的算法加上最强的工程实力,也只能解决局部的问题,比如Racing类游戏中的SteeringFighting类游戏中的选招;RTS中的Micromanagement,局部的提升玩家的体验。当然,如果结合传统的Game AI方法,比如Rule Based,各种Planners,也许能提升得更多。Axon也会结合具体的游戏实例,继续探索。

感谢IEG-NEXT研发中心为创新探索提供的空间和资源;
感谢TEG数据平台部小伙伴们的耐心支持;

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引