英雄同盟是一个须要默契团队合营的多人对战游戏。
在变化多端的战斗中,如何做出精确的决策非常主要。
最近,数据剖析师 Philip Osborne 提出了一种利用人工智能技能提升英雄同盟中团队决策水平的方法,并将其开源。
该方法不仅参考了大量真实游戏的统计结果,也将当前玩家的偏好打算在内。

英雄联盟若何批示团战?AI帮你做决定筹划_玩家_事宜 文字写作

该项目由三部分组成,旨在将 MOBA 游戏《英雄同盟》的对战建模为马尔科夫决策过程,然后运用强化学习找到最佳决策,该决策还考虑到玩家的偏好,并超越了大略的「计分板」统计。

作者在 Kaggle 中上传了模型的每个部分,以便大家更好地理解数据的处理过程与模型构造:

第一部分:https://www.kaggle.com/osbornep/lol-ai-model-part-1-initial-eda-and-first-mdp第二部分:https://www.kaggle.com/osbornep/lol-ai-model-part-2-redesign-mdp-with-gold-diff第三部分:https://www.kaggle.com/osbornep/lol-ai-model-part-3-final-output

目前这个项目还在进行当中,我们希望展示繁芜的机器学习方法可以在游戏中做什么。
该游戏的分数不但是大略的「计分板」统计结果,如下图所示:

动机和目标

英雄同盟是一款团队竞技电子游戏,每局游戏有两个团队(每队五人),为补兵与***展开竞争。
得到上风会使玩家变得比对手更强大(得到更好的装备,升级更快),一方上风不断增加的话,得胜的几率也会变大。
因此,后续的打法和游戏走向依赖于之前的打法和战况,末了一方将摧毁另一方的基地,从而赢得比赛。

像这种根据前情建模的情形并不新鲜;多年来,研究职员一贯在考虑如何将这种方法运用于篮球等运动中(https://arxiv.org/pdf/1507.01816.pdf),在这些运动中,传球、运球、犯规等一系列动作会导致一方得分或失落分。
此类研究旨在供应比大略的得分统计(篮球中运动员得分或游戏里玩家获取人头)更加详细的情形,并考虑建模为韶光上连续的一系列事宜时,团队该当如何操作。

以这种办法建模对英雄同盟这类游戏来说更为主要,由于在该类游戏中,玩家补兵和***后可以得到装备并升级。
例如,一个玩家拿到首杀就可以获取额外金币购买更强的装备。
而有了这些装备之后,该玩家变得更加强大进而获取更多人头,如此循环,直到带领其军队获取末了的胜利。
这种领先上风被称为「滚雪球」,由于该玩家会不断积累上风,不过很多时候,该玩家在游戏中所在的军队并不一定是上风方,野怪和团队互助更为主要。

该项目的目标很大略:我们是否可以根据游戏前情打算下一步最好的打法,然后根据真实比赛数据增加终极的胜率。

然而,一场游戏中影响玩家决策的成分有很多,没那么随意马虎预测。
不论网络多少数据,玩家得到的信息量始终多于任何一台打算机(至少目前如此!
)。
例如,在一场游戏中,玩家可能超水平发挥或发挥失落常,或者偏好某种打法(常日根据他们选择的英雄来界定)。
有些玩家自然而然地会变得更加好斗,喜好屠戮,有些玩家则比较被动一贯补兵发育。
因此,我们进一步开拓模型,许可玩家根据其偏好调度建议的打法。

让模型「人工智能化」

在第一部分中,我们进行了一些先容性的统计剖析。
例如,假设军队在比赛中补到第一个和第二个兵,我们能够打算出得胜的概率,如下图所示。

有两个组成部分,使我们的项目超越大略的统计的人工智能:

首先,在未预先设想游戏观点时,模型会学习哪些行动是最好的。
第二,它试图理解玩家对影响模型输出的决策的偏好。

我们定义马尔可夫决策过程及网络玩家喜好的办法会决定模型学习和输出的内容。

根据匹配统计信息对马尔科夫决策过程进行预处理和创建

AI 模型 II:引入打钱效率

我从第一个模型的结果中意识到,我们没有考虑到负面和正面事宜对未来都可能产生累积的影响。
换句话说,无论在当时韶光点之前还是之后,当前的 MDP(马尔科夫决策过程)概率都有可能发生。
在游戏中,这是禁绝确的。
一旦掉队,***、拿塔、补兵都会变得更难,我们须要考虑到这一点。
以是,我们引入军队间的打钱效率来重新定义状态。
当前目标是建立一个定义状态的 MDP,这个状态可能是事宜发生顺序,或者军队是否掉队或领先。
我们将金币差值分为以下几类:

相等:0–999 金币差值(均匀每个队员 0-200)略掉队/领先:1,000–2,499(均匀每个队员 200–500)掉队/领先:2,500–4,999(均匀每个队员 500–1,000)远远掉队/遥遥领先:5,000(均匀每个队员 1,000+)

我们也须要考虑没有任何事宜发生的情形,并把其归为『无』事宜中,以担保每分钟都有事宜发生。
这个『无』事宜表示一个军队决定拖延游戏,以将那些在早期游戏中更长于得到金币的军队区分出来,而不须要杀去世(或通过小兵杀去世)他们。
然而,这样做也会大大增加数据量。
由于我们为匹配可用匹配项已经添加了 7 个种别,但如果我们能访问更常规的匹配项,那数据量就已足够了。
如前所述,我们可以通过以下步骤来概述:

预处理

1. 输入***数、塔数、野怪和金币差值的数据。

2. 将『地址』转为 ID 特性。

3. 移除所有旧版本的游戏。

4. 从金币差值开始,按照事宜的韶光、匹配 ID 和与以前同等的团队进行合计。

5. 追加(助攻的)人头数、怪数和塔数到此末端,为每个事宜创建行并按发生的韶光对事宜进行排序(均匀人头数)。

6. 添加「事宜序号」特性,显示每次匹配中的事宜顺序。

7. 为行上的每个事宜创建一个统一的「事宜」特性,包括人头、塔、怪或者『无』事宜。

8. 每次匹配时将其转化为行,现在是用列来表示每个事宜。

9. 只考虑红队的视角,以便合并列,视蓝队增益为负红队增益。
同时增加红队的游戏长度和结果。

10. 将所有空缺值 (即在前面步骤中结束的游戏) 更换为匹配的游戏结果,以便所有行中的末了一个事宜是匹配结果。

11. 转换为 MDP,个中 P(X_t | X_t-1)用于每个事宜数和由金币差值定义的状态之间的所有事宜类型。

马尔科夫决策过程输出

利用大略单纯英语的模型 V6 伪代码

我们终极版本的模型大略总结如下:

1. 引入参数

2. 初始化启动状态、启动事宜、启动操作

3. 根据 MDP 中定义的首次供应或基于其发生可能性的随机选择操作

4. 当行动赢或输时,结束

5. 跟踪事宜中所采纳的行动和终极结果(赢/输)

6. 根据终极结果所用的更新规则来更新操作

7. 重复 x 次上述步骤

引入褒奖偏好

首先,我们调度模型代码,把褒奖归入回报打算中。
然后,当我们运行模型时,引入了对某些行为的偏置,现而不是大略地使褒奖即是零。

在第一个例子中,我们显示了如果对一个动作进行积极的评价,会发生什么;在第二个例子中,显示对一个动作进行悲观的评价,会发生什么。

如果我们积极评价动作『+KILLS』的输出

如果我们悲观评价动作『+KILLS』的输出

更真实的玩家偏好

现在我们可以考试测验近似仿照玩家的真实偏好。
在这个案例中,我们随机化一些褒奖以许可遵守以下两条规则:

玩家不想错过任何补兵玩家优先补兵而不是***

因此,我们对人头和补兵的褒奖都是最小值-0.05,而其它行动的褒奖都在-0.05 和 0.05 之间随机天生。

随机化玩家褒奖后的输出。

随机化玩家所有动作的褒奖后所得到的输出。

终极输出,显示给定当前金币差值状态和分钟的每个动作的值

总结及玩家对褒奖的反馈

我过分简化了某些特色(如「kills」实际上并不代表人头的数量),数据也不太可能表示正常的匹配。
然而,我希望本文能够清晰地展现一个有趣的观点,鼓励更多人谈论这一领域今后的走向。

首先,我将列出在实现之前须要作出的主要改进:

1. 利用更多能够代表全体玩家群体(而不但是竞争性比赛)的数据打算 MDP。

2. 提高模型效率,将其打算韶光掌握在更合理的范围。
蒙特卡洛以耗时著称,因此我们将探索更高效的算法。

3. 采取更高等的参数优化以进一步改进结果。

4. 捕捉、映射原型玩家对更真实的褒奖旗子暗记的反馈。

我们引入了针对影响模型输出而给予的褒奖,但该如何得到褒奖?我们可以考虑几种方法,但是根据我之前的研究,我认为最好的方法便是考虑一种既涉及到行动的个体质量又考虑到转变质量的褒奖。

这变得越来越繁芜,我不会在此文中展开,但简而言之,我们想为玩家匹配决策,个中下一个最佳决策取决于最新情形。
比如,如果一队玩家将对方全部歼灭,他们可能会去拿大龙。
我们的模型已经将一个序列中事宜发生的概率考虑在内,因此,我们也该当用同样的办法思考玩家的决策。
这一想法来自一篇论文《DJ-MC: A Reinforcement-Learning Agent for Music Playlist Recommendation》,该论文阐释了如何更加详细地将反馈映射出来。

反馈的网络办法决定了我们的模型能有多成功。
依我之见,我们这么做的终极目标是为玩家的下一步决策供应最佳实时建议。
如此一来,玩家就能从根据比赛数据算出的几条最佳决策(根据得胜情形排序)中做出选择。
可以在多个游戏中跟踪该玩家的选择,以进一步理解和理解该玩家的偏好。
这也意味着,我们不仅可以追踪决策的结果,还能预测该玩家的意图(例如,该玩家试图拆塔结果却被杀了),乃至还能为更高等的剖析供应信息。

当然,这样的想法可能造成团队成员见地不符,也可能让游戏变得没那么令人愉快。
但我认为这样的想法可能对低水平或者常规水平的玩家有益,由于这种水平的游戏玩家难以清楚的沟通游戏决策。
这也可能帮助识别「毒瘤」玩家,由于团队指望通过投票系统来统一见地,然后就能看出「毒瘤」玩家是不是一贯不遵照团队操持,忽略队友。

实时游戏环境中的模型推举投票系统示例