前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >英雄联盟游戏中的人工智能

英雄联盟游戏中的人工智能

作者头像
用户7623498
发布2020-08-04 11:27:50
1.8K0
发布2020-08-04 11:27:50
举报
文章被收录于专栏:决策智能与机器学习
本项目由三部分组成,旨在将英雄联盟的比赛建模为马尔可夫决策过程,然后应用强化学习来找到最佳决策,同时考虑到玩家的偏好并超越简单的“记分板”统计。

我已经在Kaggle上提供了每个部分,以便更好地理解数据的处理方式和模型的编码方式。本文包含了前两部分,以便对我最终决定如何建模环境的原因进行一些说明。

第1部分:

https://www.kaggle.com/osbornep/lol-ai-model-part-1-initial-eda-and-first-mdp

第2部分:

https://www.kaggle.com/osbornep/lol-ai-model-part-2-redesign-mdp-with-gold-diff

第3部分:

https://www.kaggle.com/osbornep/lol-ai-model-part-3-final-output

这是一项正在进行中的工作,其目的仅仅是为了研究如果在游戏中引入更复杂的机器学习方法,会获得什么样的效果。这些方法不限于简单的摘要统计。

动机和目标

“英雄联盟”是一个以团队为单位的游戏,其中两个团队(每个团队中有5个玩家)竞争目标和杀戮。获得优势的玩家能够比他们的对手更强(获得更好的物品并且更快地升级),并且随着他们的优势增加,赢得游戏的可能性也增加。因此,我们有一系列事件依赖于先前的事件,导致一个团队摧毁另一个团队并赢得游戏。

像这样的序列在统计上建模并不是什么新鲜事; 多年来,研究人员已经考虑过如何在体育运动中应用这一点,例如篮球(https://arxiv.org/pdf/1507.01816.pdf)。其中传球,运球和犯规等一系列动作会导致球队获得或失去分数。

提到这一研究的目的是提供更详细的洞察力,超越一个简单的盒子分数(分别是篮球或视频游戏中的玩家获得的分数或杀戮),并将团队的表现建模一系列在时间上连续的事件。

在诸如英雄联盟等游戏中,以这种方式对事件进行建模更为重要,因为实现目标和杀戮会导致项目和级别优势。例如,获得游戏的First Blood的玩家会给他们带来金币,可用于购买更强大的物品。有了这个奖励,他们就可以变得足够强大,进行更多的杀戮,直到他们能够带领团队取得胜利。这样的领先优势通常被称为“滚雪球”,因为球员累积获得优势,但通常比赛不是单方面的,道具和团队合作更重要。

这个项目的目标很简单: 我们是否可以通过之前在游戏中发生的事件,来计算下一个最佳事件,以便根据实际的比赛统计数据来增加最终获胜的可能性?

事实上,要准确的量化、衡量玩家在游戏中做出的决策是非常困难。无论收集多少数据,计算机都难以捕捉玩家的全部信息(至少目前为止是)。例如,玩家可能在游戏中超常发挥或发挥不好,或者可能只是以他们偏好的方式玩游戏(通常由他们玩的角色类型定义)。

有些玩家自然会更具攻击性并且会不断去收割“人头”,而其他玩家则会相对保守并尝试进行“推塔”。因此,我们进一步开发模型,以变玩家根据自己的表现调整玩法。

如何让模型具备“人工智能”?

在第一部分中,我们进行了一些介绍性的统计分析。例如,如果团队在比赛中达成了事件1和事件2,我们就可以计算其获胜的概率,如下图所示。

以下两个方面,使我们的模型不仅仅是简单的数值统计,而是真正的AI:

  • 首先,模型在没有预先定义的前提下,学习哪些操作是最优的
  • 其次,尝试学习玩家的决策的偏好对模型输出的影响。

我们如何定义马尔可夫决策过程并收集玩家的偏好,将决定我们的模型学习和输出什么。

预处理和马尔可夫决策

AI Model II:引入金币差异(Gold Difference)

通过初步的尝试,我们意识到,模型没有考虑负向和正向事件对后来状态的可能性的影响。换句话说,无论您在该时间点是领先还是落后,当前马卡洛夫决策过程(MDP)概率都可能发生。在游戏中,这根本不是真的; 如果你落后,那么杀人数,装备和建筑等就更难获得,我们需要考虑到这一点。

因此,我们引入团队之间的金币差异作为重新定义各状态的方式。在利用MDP过程定义状态时,不仅考虑各种关键事件(杀人、获得装备等),还考虑团队在金币数量上是否领先。我们将金币的差异分类如下:

  • 相等:0-999黄金差异(平均每位玩家0-200)
  • 略微落后/领先:1000-2,499金差(平均每位玩家200-500)
  • 落后/领先:2,500-4,999黄金差异(平均每位玩家500-1,000)
  • 非常落后/领先:5,000金差(每位玩家平均1,000+)

当没有感兴趣的事件发生时,我们将其定义为“NONE”事件,确保每分钟至少存在一个事件。

这个'NONE'事件代表了战队是否决定尝试拖延比赛,并帮助区分那些在早期比赛中更好地获得金币领先而没有kill或推搭的团队。然而,这样做也大大扩展了我们的数据,因为现在已经添加了7个类别以适应可用的匹配,但是如果可以访问更多的正常匹配,那么数据量就足够了。和以前一样,我们可以通过以下方式概述每个步骤:

预处理
  • 导入“杀人数”,物品(含守护塔),怪物和黄金差异的数据。
  • 将“地点”转换为ID特征。
  • 用old dragon清除所有游戏。
  • 从金币差异数据开始,按照事件发生的时间(分钟为单位),匹配id和以前做出事件的团队
  • 将“杀人数”,野怪和建筑数据附加(堆叠)到此末尾,为每个事件创建一行,并按事件发生时间排序(对杀人数进行平均)。
  • 添加“Event Number”功能,显示每次比赛中的事件顺序。
  • 为行上的每个事件创建一个合并的“事件”功能,其中包含“杀人数”,野怪和建筑或“NONE”。
  • 每次匹配将其转换为一行,现在各列表示每个事件。
  • 只考虑红队的观点,以便合并列。这样,当蓝队获得增益时,对应红队遭受损失。此外,还为红队加上游戏长度和结果。
  • 将所有空白值(即在前面的步骤中结束的游戏)替换为比赛的游戏结果,以便所有行中的最后一个事件是比赛结果。
  • 转换为MDP过程,这样在每个事件编号和由金币差异定义的状态之间的所有事件类型中都有P(X_t | X_t-1)。

马尔可夫决策过程输出

模型v6版本的伪代码

我们的最终版本模型可以简单地归纳如下:

  1. 定义参数
  2. 初始化开始状态,开始事件和开始操作
  3. 选择最先发生的动,或者根据MDP过程中的可能性随机选择行动
  4. 当比赛赢或输时,结束一次迭代
  5. 跟踪在该次迭代中采取的行动和最终结果(赢/输)
  6. 使用升级的规则更新基于最终结果的操作值
  7. 重复第X次迭代

通过奖励引入偏好

首先,我们调整模型代码,以便在Return计算中包含奖励。然后,当我们运行模型时,会对某些操作引入偏差,而不是简单地让奖励等于零。

在第1部分的例子中,我们展示了对行动进行正向加权的结果,然后在第2部分中,则对行动进行负向加权。

如果我们为行动提供强烈的积极奖励,则输出:'+ KILLS'

如果我们为行动提供强大的负面奖励,则输出:'+ KILLS'

更真实的玩家偏好

因此,让我们尝试近似模拟玩家的实际偏好。在这种情况下,我随机化了一些奖励以遵循这两条规则:

  • 玩家不想放弃任何目标
  • 玩家优先获区目标(物品或建筑)而不是杀戮

因此,我们对杀人数和丢失物体的奖励都是-0.05的最小值,而其他行动则在-0.05和0.05之间随机化。

随机玩家奖励的输出

为所有操作输出随机玩家奖励

最终输出显示给定我们当前的黄金差异状态和分钟的每个动作的值

总 结

我已经大大简化了一些功能(例如“杀死”并不代表实际的杀伤数量),而且数据可能无法代表正常匹配。但是,我希望这清楚地展示了一个有趣的概念,并鼓励讨论如何进一步发展这一概念。

首先,我们将列出在实施之前需要进行的主要改进:

  • 使用代表整个玩家群体的更多数据来计算MDP,而不仅仅是竞争性匹配数据。
  • 提高模型的效率,使其能够在更合理的时间内进行计算。蒙特卡洛以耗时而闻名,因此会探索更具时间效率的算法。
  • 应用更高级的参数优化以进一步改善结果。
  • 采用原型播放器反馈捕获和映射,以获得更真实的奖励信号。

我们已经引入了影响模型输出的奖励,但是如何获取呢?根据之前的研究,我们认为最好的方法是考虑一个同时反映行为的个人效果和团队效果的奖励。

这变得越来越复杂,但简而言之,我们希望匹配一个玩家的决策,其中最佳的下一个决定取决于刚刚发生的事情。

例如,如果队员杀死了敌方团队的所有人,那么他们可能会推动获得Baron。我们的模型已经考虑了序列中发生事件的概率,因此我们也应该以相同的方式考虑玩家的决策。

这个想法来自以下研究,该研究解释了如何更详细地映射反馈:

https://www.researchgate.net/publication/259624959_DJ-MC_A_Reinforcement-Learning_Agent_for_Music_Playlist_Recommendation)

如何收集这些反馈,将决定我们的模型会取得多大成功。最终的目标是为玩家提供下一个最佳决策的实时建议。然后,在给定匹配统计数据的情况下,玩家将能够从排名最前的几个决策(按成功顺序排列)中进行选择。可以通过多个游戏跟踪此玩家的选择,以进一步学习和了解玩家的偏好。这也意味着我们不仅可以跟踪决策的结果,而且还可以知道该玩家试图实现的目标(例如,试图占据塔而是被杀死),并且会为更高级的分析开辟信息。

这样的事情可以使玩家在较低或正常技能水平下受益匪浅,因为玩家之间的决策难以清晰地沟通。它还可以帮助识别那些因其行为而“有毒”的球员,因为球队会通过投票系统同意比赛,然后可以看出有毒球员是否一直忽视他们的队友,而不是按照约定计划。

实际游戏设置中的模型推荐投票系统的示例

原文链接:

https://towardsdatascience.com/ai-in-video-games-improving-decision-making-in-league-of-legends-using-real-match-statistics-and-29ebc149b0d0

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决策智能与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本项目由三部分组成,旨在将英雄联盟的比赛建模为马尔可夫决策过程,然后应用强化学习来找到最佳决策,同时考虑到玩家的偏好并超越简单的“记分板”统计。
  • 动机和目标
    • 这个项目的目标很简单: 我们是否可以通过之前在游戏中发生的事件,来计算下一个最佳事件,以便根据实际的比赛统计数据来增加最终获胜的可能性?
    • 如何让模型具备“人工智能”?
    • 预处理和马尔可夫决策
    • AI Model II:引入金币差异(Gold Difference)
      • 预处理
        • 模型v6版本的伪代码
        • 通过奖励引入偏好
        • 更真实的玩家偏好
        • 总 结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档