火狐 网站开发,有什么做外贸的网站,网站开发与建设,全是广告的网站摘要#xff1a; 机器学习可以预测游戏的输赢#xff1f;来看看Bowen Yang博士是如何构建这一模型的。《守望先锋》中的英雄来自加州大学河滨分校的物理学博士学位的Bowen Yang正在致力于构建一个模型——对游戏中的人物特征进行有意义的学习#xff0c;来预测电子竞技游戏中…摘要 机器学习可以预测游戏的输赢来看看Bowen Yang博士是如何构建这一模型的。
《守望先锋》中的英雄来自加州大学河滨分校的物理学博士学位的Bowen Yang正在致力于构建一个模型——对游戏中的人物特征进行有意义的学习来预测电子竞技游戏中的获胜团队。这个方法广泛适用于任何具有结构化数据的业务。现在电子竞技游戏是一个有着巨大潜力且不断上升的市场。去年在英雄联盟的世界冠军赛中仅仅一场半决赛就吸引了1.06亿观众甚至超过了2018年的超级碗美国职业橄榄球大联盟年度冠军赛。为玩家提供个性化游戏分析的公司Visor就希望能够有一个可以实时预测团队胜率的模型。预测比赛预测模型有很多种用途。比如它可以向玩家提供有效反馈帮助他们提高技能对于玩家它可以成为一个很好的参与工具来吸引那些不熟悉游戏规则的潜在玩家另外如果一个模型在预测方面能够超越人类那么它在电子竞技下注方面就会有着前所未有的潜力。DOTA2国际邀请赛现场《守望先锋》简介我们今天建模的对象是《守望先锋》——一款基于团队的多人在线射击游戏。每个队伍有六名玩家每位玩家从英雄列表26名英雄中选择一个英雄游戏角色如超级马里奥与另一队进行战斗每场游戏都有特定的游戏地图游戏开始之前就已设定。游戏中有很多因素会影响游戏的预测结果其中大部分是分类特征。举个例子英雄的选择对于游戏的前期有着很大的作用。因此我们面临的挑战是如何处理这些分类特征。如果我只使用一种热编码那么特征空间可以很轻松地增长到数百个维度。不幸的是收集足够多的游戏数据来满足这个高纬度特征空间这几乎是不可能的。纵轴和横轴分别为预测准确度与游戏进度使用热编码和特征选择的逻辑回归对预测进行建模。在游戏接近尾声时预测较为准确但在游戏开始时预测几乎是一个随机值具有0.5的准确性。本文将重点介绍如何使用嵌入对这些游戏角色进行建模以及如何提升预测的准确度。有关更多细节和实现请参阅我的Github链接。多个英雄可以组成一个队伍“复仇者”从《魔兽世界》等角色扮演游戏到Dota 2、LoL和Overwatch等战斗类游戏团队是现代多人在线视频游戏的核心概念而英雄则是队伍的基础。《守望先锋》中的英雄可以分为三类进攻DPS、防御坦克和辅助每个英雄都有自己的强项和弱点。一个团队应该保持英雄成员的平衡所以没有特定的阵容、配合团队配合非常重要根据当前的作战地图和英雄的技能水平形成团队策略。这和篮球比较比较相似需要后卫、中锋和前锋合作。因此团队的组合需要有一定的模式甚至某个英雄可以在一个团队中共同出现。典型的均衡团队需要有2名防御坦克、2名进攻DPS和2名辅助。多个单词可以组成一个句子我们可以从英雄和单词的类比中得出某些结论。一个单词本身有自己的含义如果形成一个句子或一篇文章那么它的意义更大。同样地英雄本身也有自己的“含义”和特征比如一些英雄攻击力强、一些英雄则擅长防守如果二者组成一个团队那么他们的角色会变得更加复杂。以前单词是用一个热编码建模的这种编码很大程度上受到高纬灾难的影响因为词汇量太大以至于特征空间的维度可能很容易就超过数十万。一个热编码简单地假设单词之间彼此独立即它们的表示representations是相互正交的它并不捕获单词在句子中的含义。另一方面单词也可以表示为分布式表示。这样单词的语义可以通过更低维的矢量嵌入来捕获。当用语词的分布式表示的算法是著名的word2vec模型。超越word2vec为了利用嵌入的优势我们应该考虑以下几个事项1.相似性相似性代表了输入之间的“重叠”。例如“国王”和“女王”代表统治者。输入的重叠越多它们的嵌入就越密更小的维度。换句话说必须有不同输入到相同输出的映射。如果输入是相互正交的那么嵌入就没有任何意义了。2.训练任务嵌入是从训练任务中预学习的。训练任务应该与我们自己的任务相关因此嵌入的信息是可转移的。例如word2vec在Google新闻上进行训练然后用于机器翻译。它们是相关的因为它们的词语具有相同的语义含义。3.大量的数据为了找到输入数据之间的相似性或关系我们需要大量数据来探索高维度空间。因为有大量的可用于无监督学习的数据分布式表示可以减少维度背后的“黑魔法”。例如word2vec模型在数十亿字上进行训练。在一定程度上嵌入仅仅是独热编码输入和下行任务之间的附加线性层的权重。为了训练包括嵌入层的整个管道我们仍然需要大量数据来填充高维度输入空间。Continuous bag of heroes模型考虑完以上几个问题我们现在开始设计Hero2vec模型。1.相似性如前所述《守望先锋》中的英雄属于某些类别。这种相似性表明它们可以通过分布式表示来描述而不是一个热正交编码。2.训练任务通过对中心词和上下文词的共现进行建模word2vec试图来捕捉单词的一般语义含义。同样高协作性的英雄很可能会在一个团队中同时出现即联合概率Ph0h1... h5很高h代表英雄。但是对这个联合概率进行建模并没有非常简单。或者我们可以尝试使用最大化条件概率Ph0 | h1h2... h5来建模。由于游戏的预测只是P结果| h0h1... h5其他因素因此这两个任务是高度相关。给定一个团队中的五个英雄我们就可以预测出生存到最后的的英雄。例如如果一支球队已经有2名后卫2名中锋和1名前锋那么最后一名球员很有可能成为球队的前锋。3.数据Visor提供了超过30,000多种团队组合用于预训练嵌入。与数十亿的单词相比30,000个组合可能看起来很小同样输入维度也比词汇表中的单词例如260,000要小的多26英雄。考虑到训练数据的需求随维度呈指数增长实际上30,000个组合足够进行训练。4.模型概率Ph0 | h1h2... h5与word2vec中连续词袋CBOW模型中的P中心词语上下文词语完全相同。不同于单词的是h1h2... h5之间相互置换并不会影响概率因此h1h2... h5的嵌入总和实际上就是输入总和。在这里除了Ph0 | h1h2... h5外我们还可以对Ph1 | h0h2... h5等进行建模使数据集可以有效的扩展6次。Hero2vec的模型架构包括嵌入层、全连接神经网络和softmax层。由于softmax层只有26个目标所以不需要负采样。英雄的可视化处理可以将英雄的嵌入10个维度投影到二维平面上使用PCA实现可视化如下图所示。英雄的嵌入投影到二维平面上显然嵌入成功地捕捉了英雄背后的游戏设计。英雄根据自己的角色或类别进行聚类。更有意思的是嵌入还可以捕捉英雄超越其类别内其它英雄的更微妙的特征。例如尽管Roadhog英雄是防御坦克玩家仍然把它看作进攻DPS虽然Symmetra是辅助但它并不能治愈队友所以她更接近进攻DPS和防御坦克等。玩家并不像游戏设计师所认为的那样将它们视为两类。对于熟悉《守望先锋》的玩家来说进攻型DPS和防御性DPS之间的界限非常模糊也就是说玩家并没有根据游戏设计的本意将它们归为两类。因此与硬编码类别的英雄或产品相比在捕捉英雄的特征或属性时嵌入可以更加流畅和准确的对其进行捕捉即玩家和游戏设计者都能从嵌入中提取更多有用的信息。玩家可以用这个模型来更好地理解或欣赏该游戏而游戏设计师也可以利用该模型对游戏设计进行验证和改进。Map2vec我们已经讨论过了如何在游戏中模拟英雄。在介绍英雄嵌入是如何帮助我们预测游戏胜负之前我想简单地谈谈如何处理另一个分类特征——地图。《守望先锋》的每场游戏都是在特定的游戏地图上进行的而团队的组合取决于地图的布局即P团队|地图。通过贝叶斯规则重写P团队|地图〜P地图|团队P团队。因此我们可以用P地图|团队来嵌入地图如下所示。map2vec的模型结构。包括英雄的嵌入层、全连接神经网络和softmax层。softmax层的权重是地图的嵌入。与上面的Hero2vec模型不同的是映射的嵌入是从最后一个线性层绘制的word2vec模型的输入嵌入和输出嵌入都可以用来代表单词。同样的地图的嵌入也可以进行可视化。地图的可视化通过嵌入我们可以很好地理解地图背后的游戏设计。对于那些熟悉《守望先锋》的玩家来说能够看到单个地图的进攻区域和防御区域之间的差异这比查看地图之间的差异要更有意思。相同的体系结构可以对任何共同出现的事务进行建模。例如输入为一堆电影目标为喜欢这些电影的特定客户。训练这个管道就可以为我们提供电影和客户的嵌入。使用英雄嵌入来预测游戏的胜负使用英雄嵌入可以提高游戏预测的准确度如下图所示纵轴和横轴分别为预测准确度与游戏进度。用Hero2vec嵌入该逻辑回归模型可以提高游戏前期的预测准确度。如上图所示二者都使用逻辑回归当输入为英雄嵌入时预测的准确度要比输入为一个热编码时高。更值得一提的是英雄嵌入的确可以提升游戏前期或中期的预测准确度。团队中英雄的组合能够为模型提供很多信息这其中的一个原因就是在游戏开始时数字特征几乎不会有任何变化因此在游戏前期数字特征基本上没有什么用处。随着游戏进入中期数字特征种会积累更多的信息这样一来团队中英雄的组合形式就不再那么重要了。当游戏打到后期时两个预测结果重叠因为数值特征中的值足够多足以来预测游戏结果。 游戏结果与两个重要的数字特征。在游戏前期时左下角特征差异不大结果几乎是重叠的。随着游戏继续进展朝右上角方差逐渐变大预测结果也可以很容易的分开。总结本文讨论了如何用低维分布表示来表示高维分类特征并遵循NLP和word2vec算法的逻辑。通过对《守望先锋》中的英雄进行预训练我构建了一个可以预测游戏胜负的可靠模型。并且该模型在游戏前期的预测准确率更高更为详细的模型和代码请查看我的Git库。文章原标题《Predicting e-sports winners with Machine Learning》原文链接本文为云栖社区原创内容未经允许不得转载。