在大型竞技电子游戏中,越来越多的研究人员开始让AI学习人类高手的操作。一般来说,利用强化学习等训练方法,使用大量数据集训练模型,让AI在即时战斗中学会执行下一步的操作。
除了模仿人类行为外,一些研究员还让AI去学会预测哪里有敌方单位,和当前的死亡概率等。这不就是广大网友熟悉的“全图视野挂”吗?
这样一来,AI甚至能预测你的当前位置,同时预测你的死亡概率。想象一下,当你遇到对面能够预测你的下一步时,是不是有一种无力的感觉?投降了,打不过。
那让我们学习一下,AI到底怎么开挂。
《DefogGAN: Predicting Hidden Information in the StarCraft Fog of War with Generative Adversarial Nets》
第一篇论文,是韩国三星团队在星际争霸游戏中,提出了可以去除迷雾效果的模型。
论文地址:
https://arxiv.org/abs/2003.01927
项目地址:
https://github.com/TeamSAIDA/DefogGAN
论文中主要提出了DefogGAN,利用了生成对抗网络推断隐藏的信息单位。也就是说,给定可疑观察到的状态单位,可以生成除去迷雾图片。这样能够有效的创建一个有效的策略指导AI。从实验表明,DefogGAN能够预测敌方的建筑和战斗单位的位置,这相当于开了全局透视挂。
游戏中的迷雾指的是缺乏对周围没有友军的地区视野信息,包括之前已经探索过但目前尚未开发的所有地区。迷雾情况如下图所示,相当于在地图上有大量看不到的情况,这就很适合AI预测无视野单位的位置。
部分可观测马尔可夫决策过程(POMDP)最能描述战争迷雾问题。一般来说,POMDP描述的就是为拥有许多未观测变量提供了一个实用公式。对于游戏AI,解决部分观测问题就是就能够知道它进行下一步的动作。
利用跳转连接,对DefogGAN生成器进行编码器-解码器结构的残差学习训练。除了常用的GAN模型对抗损失函数外,作者还建立了一个迷雾状态和非迷雾状态下的损失函数。
论文贡献如下:
- 论文中提出了DefogGAN,它能够在迷雾状态下生成无视野单位信息
- 使用跳转连接进行残差学习,在不使用任何双层递归结构的情况下,引入包含了以前序列的信息
战争迷雾问题类似于修复和去噪问题。然而,有三个关键区别:
- 首先,即使在友军存在的情况下,敌方单位也可能被隐藏,迷雾问题必须在高达4096×4096的二维网格空间中预测每种类型的单位的位置和数量。
- 其次,除雾是一个回归问题,必须根据部分观测推断整个区域的单位数量。
- 最后,问题不仅仅是根据蒙版(雾化)图像生成图像。除雾必须表明可能存在感兴趣单元的网格。
论文中提出的模型结构如下。visible:每个战斗单位设计成一个独立的channel通道,共有50个不同的单位类别。其中34个是友方单位,16个是敌方战斗单位。exposed:暴露的单位从0~t开始累积,作为时间信息添加进来。
模型没有使用递归神经网络结构,因为一局的帧数过大,会造成长序列预测情况。因此把过去的信息叠加到当前时间上。同时由于encoder和decoder上,存在不对称的编解码结构,因此引入了残差结构来保持信息的可见性。
最后看一下整体模型的生成效果,其中第一列是观察到的信息,最后一列是所有单位的信息。可以看到DefogGAN在生成的敌方效果上会偏向于实际单位的视野位置。
《Time to Die: Death Prediction in Dota 2 usingDeep Learning》
第二篇论文,是约克大学利用AI预测N秒之后是否死亡。那假设在开始团战前它能够预测死亡概率,相当于已经遇见的你未来的结果,这时候AI相当于开了”上帝“的全知全能挂了。
具体的论文和代码如下:
论文地址:
https://arxiv.org/pdf/1906.03939.pdf
论文代码:
https://github.com/adam-katona/dota2_death_prediction
针对于DOTA2这种即时游戏,死亡的信息往往会更加重要。但是电子竞技游戏非常复杂,动作快速,游戏的平衡可以在几秒钟内改变,事件可以在多个领域同时发生。因此本文主要利用神经网络,预测玩家5s后的死亡概率。模型能够达到0.377 precision,0.725 recall。这能让AI提前捕捉到这些信息,执行有意义的下一步动作。
文章称这些死亡事件为微观预测事件(micro-predictions)。同时在数据集的构造上,收集了5000个专业选手 5000半专业选手的replay对局文件数据。
对于每一个英雄:构建了287个features:
(1)time:出于两个原因,游戏时间可能是一个有用的功能。一个是在特定时间发生的事件(生物生成),另一个是随着时间的推移,玩家通常会变得更强大,这导致玩家追求不同的目标。这种玩法变化通常被称为从早期游戏过渡 到游戏中期,然后是游戏后期 (2)statistics:关于英雄的统计数据(17 个特征):描述英雄过去所做的事情。例如击杀数、死亡数、最后一击、经验值等 (2)hero state:英雄状态,包括血量,技能等 (3)位置信息:英雄的位置,塔的位置等 (4)ablity:英雄的技能信息 (3)玩家装备:可激活物品(34种功能):玩家可以购买可以激活的物品以提供强大的效果。这些物品可以对遭遇的结果产生巨大的影响,例如,它们可以使玩家从危险中传送出去。每个物品都有一个二进制特征值,表示玩家是否拥有该物品,以及一个冷却时间特征,表示它可以再次激活之前的时间。为了保持较低的特征空间,根据专家意见选择了 17 个最强大的项目
整体的模型网络结构如下:
- 权重共享:权重共享可以在不牺牲大部分表示能力的情况下大大减少网络的权重数量 。在DOTA2中,对称性来自于所有英雄具有完全相同的特征,并且英雄位置顺序与游戏玩法无关。在本文讨论的预测问题中,主要是学习英雄槽不变性进行表示
- 网络结构:所有的权重都是共享的。经过权重共享层之后,其输出通过concat,然后再输出到dense层中
- 解决不平衡问题:大部分数据都是“no die”标签,只有1%是“die”标签。
(1)随机抛弃50%不死亡的片段 (2)死亡片段规则:有人死亡,其他人不应该在同一个时间点死亡;在一个batch中,只有一个player死亡
最后在整体预测效果上,该模型能够对10个英雄预测在对局中哪个时间点死亡进行预测。从图上可以看出,大部分的死亡节点都预测正确,这说明该模型获得了先知的能力。
最后,假如你有这种未来预知的能力,你会做什么好呢?是让自己躲避灾祸,还是坦然面对未来呢?
最后在整体预测效果上,该模型能够对10个英雄预测在对局中哪个时间点死亡进行预测。从图上可以看出,大部分的死亡节点都预测正确,这说明该模型获得了先知的能力。 最后,假如你有这种未来预知的能力,你会做什么好呢?是让自己躲避灾祸,还是坦然面对未来呢?
我是leo,我们下期再见~