机器之心报道
参与:杜伟、张倩
人们可以从人工智能研究的持续发展中领悟到,曾经很多被认为不可预知的事件实际上是可预测的,并且准确率也相当高。比如,最近约克大学的研究者在其发表的论文《Time to Die: Death Prediction in Dota 2 using Deep Learning》中介绍了这样一种系统,它能够可靠地预测哪些 Dota 2 玩家角色将在 5 秒内死亡。
这种 AI 技术在未来或许可以为游戏解说和观众们带来便利:突然出现的击杀总会是游戏最精彩的部分,而对于玩家来说,他们或许还能找到更大胆的想法。
OpenAI Dota 2 竞技现场
- 论文:Time to Die: Death Prediction in Dota 2 using Deep Learning
- 论文链接:https://arxiv.org/pdf/1906.03939.pdf
Valve 公司发行的 Dota 2 是一款多人在线竞技游戏。游戏分为两方,每方拥有 5 名玩家,目的是占领敌方和防御己方基地,并试图破坏位于地图两端的建筑物。每个玩家都有一套独特的战斗技能,同时收集经验值和装备以解锁新的攻击和防御动作。
Dota 2 实际操作起来会更复杂。平均每场比赛包含 80,000 个单个帧,其中每个角色可以执行 170,000 个可能的动作。游戏中的玩家在每帧上平均完成 10,000 个动作,使游戏的总维度超过 20,000。游戏中的每个玩家都可以捡起或者购买上百件虚拟装备(item)。
研究者在论文中指出,角色的生命值并不总是与死亡与否挂钩,因为一些角色具有治愈能力,并且玩家还可以通过购买虚拟装备来治愈或者通过传送远离危险。考虑到这一点,研究者获取了 Valve 公司 12 月 5 日之前 5000 场职业(大型赛事)和 5000 场半职业(小型比赛和联赛)比赛的回放文件。他们的语料库在预处理和误差计算后共包含 7311 个文件,并通过在 4-tick 采样周期(对应 0.133 秒的游戏时间)内记录属性集数值,研究者从语料库中提取数据并转化为时间序列。
基于语料库中的数据,研究者为每个玩家角色提取了 287 个特征,其中一些特征是游戏对象属性值(如英雄生命值)。研究表明,时间、玩家当前状态(如力量值和敏捷值)、可激活装备、英雄技能、走位、与最近的存活敌人和己方防御塔的距离以及可见性历史是导致玩家死亡的一些最重要因素,其中英雄的相对力量值和特定时间内在地图上的位置居首位。
根据死亡预测的属性,研究者需要创建一个能够捕获相关数据的特征集。他们首先着眼于导致玩家死亡的两个最重要因素——相对力量值和特定时间内它们在地图上的当前方位。从最开始的少量特征开始构建,研究者最终得到了包含每位英雄 287 个特征的特征集。一些特征是游戏对象属性值,如英雄生命值;其他一些则是派生值,如与其他玩家的邻近值。下表给出了一些重要特征的详细描述。
研究者表示:「玩家采取行动时确实依赖以往行为。例如,如果一名敌人脱离视线,玩家依然清楚这名敌人还在这个区域。另一方面,如果一名敌人在几分钟前消失了,则从玩家的角度看,这名敌人可以在地图的任何位置。这就是我们添加可视性历史特征的原因。」
研究者将训练数据——2870 个输入和 5760 万个单个数据点,即 10 位玩家的 287 个特征相乘的结果——馈入到机器学习算法中,分别保留 10% 的数据用于验证和测试。他们在实验中发现,当预测比赛双方 10 位玩家中哪位玩家会在 5 秒内死亡时,该模型实现了 0.5447 的平均精度。此外,研究表明,该模型能够在指定的 5 秒窗口出现之前预测玩家死亡,说明它已经学会了与死亡相关的「固有属性」。
模型详解
研究者将具有权重分享的深度前馈神经网络作为模型。该神经网络的输入包含每位英雄的特征。在最大的特征集中,每位英雄具有 287 个特征,则 10 位英雄具有 2870 个输入。因此,该网络具有 10 个独立的持续输出,代表每位玩家在接下来 5 秒内死亡的概率。
网络架构
图 1 为该网络的架构概览,显示了输入如何进入共享的网络结构。
此处所有的权重都是共享的,本质上是创建一个子网络,该子网络为英雄特性学习一个新的、更密集的表征。连接层附带来自每个共享层的输出,为网络结构的最后一部分(一个全连接网络)创建一个输入张量。每个隐藏层的输出都使用 RELU 函数,但网络的最后一个激活函数用的是 Sigmoid 函数。
特征集
由于游戏复杂度高,研究者不确定网络是否可以利用所有的特征类别。为了深入了解,研究者创建了三个独立的特征集并利用三个独立的超参数搜索运行三个训练步骤:
- 最小的特征集(每个英雄 15 个特征)只包含当前生命值、总金币、位置、英雄和塔的邻近特征。选择这些特征是因为研究者认为它们包含更多信息。
- 中等特征集(每个英雄 109 个特征)包含除了英雄 ID 和能力特征之外的所有特征。
- 大型特征集包含全部的特征(每个英雄 287 个特征)。
训练网络
对于每一个特征集,研究者使用基于随机搜索的探索来确定最佳超参数,用于:层数、每层的神经元数、学习率和批大小,详细信息见表 II。
结果
表 III 显示了最佳模型在测试集上的性能。结果表明,该网络可以利用额外的特征。
表现最佳的模型达到了 0.5447 的平均精度,研究者利用这一模型进行进一步分析。
该模型的精度-召回率曲线如图 3 所示。该图显示了阈值和精度及召回率之间的权衡。
值得注意的是,尽管用来预测死亡的时间是 5 秒,但这一时间也可以增加。但为了减少计算混淆,这些预测将被视为不准确预测。预测时间为 0-5 秒以及延长到 20 秒时的概率输出如下图所示:
研究者坦言,他们的方法也有一些局限,如系统需要 200 多个游戏数据点(包括那些不可见的玩家)来辅助预测以及可能无法泛化到新的游戏版本。然而,研究者表示,他们设计的模型可能对紧盯比赛进程的解说员和玩家有用。
目前,该模型已经在 GitHub 上开源:https://github.com/adam-katona/dota2_death_prediction
「电子竞技游戏非常复杂,几秒钟之内的一个瞬移都有可能改变游戏的平衡,而且,多个事件可能在游戏场地的多个区域同时发生。这些事件可能发生地很快,解说员和观众很容易错过某个事件,而只看到事件的后续影响,」该团队写道。「在 Dota 2 中,某个角色被敌人杀掉是解说员和观众感兴趣的事件。」
参考链接:https://venturebeat.com/2019/06/13/this-dota-2-ai-predicts-player-death-within-a-5-second-window/