黄焖鸡

6943
文章
11128218
总阅读

DOTA2大老师这么牛逼!还不快来了解一下?

黄焖鸡 2018-04-11 16:44 10000+ 举报

最后编辑于6年前

DAC主赛事VG对战TNC的第三局,比赛进行到45分钟VG被破一路、经济落后近3W,在几乎所有人都认为91开、VG将输掉比赛的时候,大老师却坚信VG仍有五成胜率。最终VG成功翻盘,大老师一战成名!

赛后水友们议论纷纷:难道大老师预言了瑞文同志的入党?或者直接改写了掉圣剑的剧本?大老师究竟有什么奇技淫巧?

(问题:大老师到底从哪里借了一双慧眼,居然比打了10多年刀塔的知名玩家看得还准?)——最适合回答这个问题的人应该是大老师的作者,其次是机器学习大牛。但是真正的大牛都很忙,往往没时间做科普。

那么,就由我这个初级数据分析师给大家简单讲一讲吧。

实时预测DOTA2胜负有多难?

我发现很多朋友被“预测贼准、从不失误”的大老师吓到了,甚至因此加深了对人工智能的恐惧...

对此我只想说:兄弟,你误会了!

其实,这件事并没有这么难,大数据老师仍然只是在弱人工智能的大框架下解决了一个不太复杂的问题。本质上讲,实时预测DOTA2胜负和机器学习经典模式识别问题(比如垃圾邮件识别、图像识别等)是一样的(只是多了一个时间维度)。这类问题的数据源、特征和常用模型都不复杂:

1.数据:海量数据(每天百万级别的DOTA2游戏局数)

2.特征:特征丰富,容易提取和胜负相关的特征

3.模型:模型成熟,经典的逻辑回归或者随机森就能取得很好效果

而DOTA2玩家熟知的更难的问题是:

【已解决】中路SOLO赛,AI吊打人类最强选手(模型复杂)

【未解决】AI预测TI8冠军(数据样本少,有效特征提取难)

所以,大家不要慌。等AI在5V5正式比赛中吊打最强人类队伍,或者微软再次跳出来预测TI8赛况非常准确时,才是我们真正该恐惧的时候~

大老师具体是怎么做的

除非作者亲自讲解大老师的预测算法,否则我们无法确切知道底层实现细节。好在「DOTA2胜负预测」这个问题已经有不少人研究过,并公开发表了论文(你没看错,我们DOTA2就是这么屌)。下面我就以UCSD两名刀友的论文「DOTA2 Win Prediction」为例,给大家介绍一下大老师的具体做法。

和大老师主打的「实时预测DOTA2胜负」不同,这篇论文是在比赛开始前(BP结束,阵容确定)和比赛结束后对胜负进行预测。这两个用逻辑回归做的预测模型,都取得了非常出色的准确率:

比赛开始前,仅根据双方阵容预测胜负的准确率是73.0%。

比赛结束后,根据双方队伍的GPM\XPM\KPM之差预测胜负的准确率接近100%。(有水友就要问了,比赛都结束了,胜负已分还需要预测吗?下个段落说)

我们先详细介绍一下这两个模型:「看阵容,猜胜负」和「看赛后统计,猜胜负」。然后再过渡、引申到大老师的「看赛中实时数据,猜胜负」模型。

先说数据源

作者用V社提供的API收集了2015-11-20~2015-11-22的62000场游戏数据作为数据源,选取限定条件是:

游戏等级为“very high”,研究者认为这些局里面的选手都是会玩的,避免了由于选手实力导致的数据偏差。(是的,你要是不努力提高自己的DOTA2水平,大老师都懒得看你的游戏...)

5V5正常模式,并且中途没有人退出。

游戏时长大于10分钟。

对每局游戏,收集以下信息:获胜方、游戏时长、十名选手的赛后统计数据(GPM\XPM\Kills\Assists\Deaths)。正式分析之前,有必要了解一下数据源的基础统计特征:6W局游戏平均时长30分53秒(标准差6分42秒),天辉胜率为56.5%。

看阵容,猜胜负

阵容对DOTA2比赛的影响非常大,BP阶段弹幕讨论也会异常活跃。相信大家经常看到弹幕大神根据阵容来预测比赛胜负:

这个小鱼人拿的好蠢,被对面血克!(克制关系)

这个狗拿的不好,没有车!(协同关系)

又选剑圣!不知道剑圣已经不适合这个版本了吗?(英雄在当前版本的表现)

那么大老师是怎么做的呢?其实和弹幕大神也没差太多,这个模型关注每局游戏的四个特征:

offset,衡量天辉相对于夜魇的优势,也就是无脑预测天辉获胜也可以拥有56%的准确率(高于掷硬币的50%)

matchup,pick英雄的二进制特征(上场为1,不上场为0,形成一个一维向量),衡量天辉夜魇各自阵容中每一个英雄的影响

synergy,衡量英雄协作关系

countering,衡量英雄克制关系

重点讲两个特征:synergy和countering。前者反映了英雄两两之间的协同作用,后者反映了双方阵容的英雄克制关系。

先看英雄搭配。如下图所以,虽然大部分英雄组合的胜率接近50%,但仍然存在大量的异常值:

好组合:[兽王,狼人]、[露娜,狼人]、[兽王,露娜]的组合胜率超过90%。

烂组合:[光法,小精灵]、[光法,小鹿]、[小鹿,小精灵]的组合胜率低于10%。

正是因为不同英雄组合的胜率存在比较明显的差异,才可以使用synergy特征来预测胜负。(这些是2015年底的数据了,了解当时DOTA2版本的朋友可以在留言中解读一下这些异常值。)

英雄克制关系与协同关系的数据分布类似:大部分英雄间克制胜率是50%,但也存在许多强烈的克制关系,比如[狼人->小精灵]、[军团->米波]、[拉席克->毒狗]的克制胜率超过78%。

好了,对大多数水友来讲,不需要再说更多的技术细节了。只需要知道这个方法的逻辑是:大数据老师,把几万场DOTA2游戏的阵容看了一遍,学习每一场游戏的特征,训练逻辑回归模型,根据双方阵容预测比赛胜负。模型的准确度是73%。

不需要怀疑,这个准确度肯定可以吊打玩了10年DOTA的你。毕竟大数据老师是见的多了,哪一场比赛它没看过?哪一种阵容组合它没分析过?相比之下,任何人类选手输入的游戏信息量都不值一提,图样图森破,上台拿衣服。

但幸运的是,人类选手仍然可以创造新的阵容组合,上升空间并没有被智子锁死~

看赛后统计,猜胜负

这个模型的思想和「看阵容,猜胜负」相似,只是选取的特征不同:

赛后双方队伍GPM之差(不用总经济,是为了排除比赛时间长短不同的影响)

赛后双方队伍XPM之差

赛后双方队伍KPM(每分钟人头)之差

这些指标大家都非常熟悉了,为什么选这些指标?道理也是显而易见的:这些指标和胜负的相关性特别高。以GPM为例,比赛结束时经济领先的一方,绝大多数都取得了胜利。6W场比赛中,一共只有500场比赛(不到1%)结束时,经济高的一方输掉了比赛。所以,哪怕仅用GPM这一个指标来预测胜负,也已经非常准确了。

同时使用GPM+XPM+KPM三个特征预测时,准确度基本达到100%,不需要更多了。

现在我们回答问题:比赛结束后,胜负已分,为什么还要进行预测?因为方法是通用的!完全可以把这个方法照搬到VG打TNC的第三局的任意时间点!看两个时间点:

37分钟,VG经验落后2W7(整场比赛最大经验差),人头比15:25(整场比赛最大人头差),经济落后2w4。

此时大老师给出了VG整场比赛的最低预测胜率24%左右。

2. 45分钟,VG经济落后2w8(整场比赛最大经济差),人头比变成19:25(VG现在能杀人了),经验落后1W8(经验差在迅速缩小),大老师把VG的胜率提升到接近50%。

这下就清楚了!我们大多数玩家把影响游戏胜负的关键点限制在经济差、破路等因素上(玩不了啦,91开啦),而大老师则是综合考虑了更多的关键指标:GPM\XPM\KPM(甚至可能加上了每分钟回复量、双方护甲值\攻击力\魔抗等等许多我们想得到或者想不到的特征)。

我们看比赛时很难获得这些数据

当然,PLUS会员提供的大数据老师,在处理时间维度的时候也可能采用了更加牛逼的模型(而不是简单的把比赛按每分钟抽样用来训练)。但大老师的具体实现细节,我们就不得而知了。

不过写到这里,相信科普的目的已经达到,大家对大老师的手段应该有了比较清晰的认识。

总结一下,就是在两队水平差不多(比如LGD与VP??)或是在平时天梯上的时候,大老师给出的大数据是非常值得信赖的。大老师这么牛逼,没有包月的小伙伴是不是可以去包年了!

黄焖鸡 编辑于6年前

声明:该文观点仅代表用户本人,酷乐米仅提供信息存储空间服务,文中素材如有侵权请联系删除。


0 人点赞

记得评论+点赞哦

留言评价