雷鋒網(wǎng) AI 科技評(píng)論按:本文作者朝陽,原文載于集智專欄,雷鋒網(wǎng) AI 科技評(píng)論獲其授權(quán)發(fā)布。
機(jī)器學(xué)習(xí)不只是書本和文檔中的枯燥理論,事實(shí)上,機(jī)器學(xué)習(xí)方法已經(jīng)可以應(yīng)用在我們?nèi)粘I畹暮芏鄨鼍爸校踔潦俏覀冊(cè)谕嬗螒虻臅r(shí)候,機(jī)器學(xué)習(xí)也能幫我們一起哈啤。
比如在玩Dota2的時(shí)候,大家除了經(jīng)常抱怨服務(wù)器問題,另外一個(gè)頻繁出現(xiàn)的問題就是:「臥槽這么多英雄我該玩什么才好,隨機(jī)吧又怕隨出個(gè)不會(huì)玩的,選個(gè)大哥吧又怕背鍋。。。快快快開始掉錢了,選什么選什么。。。算了還是隨機(jī)吧~~~臥槽米波!!!」

玩米波需要超高的手速和手感,因此不是所有玩家都能玩米波
選英雄絕對(duì)是一個(gè)難題,對(duì)于職業(yè)選手而言更是如此,賽前BP時(shí)如果出現(xiàn)問題將會(huì)直接導(dǎo)致比賽失去懸念,那么冥冥之中有沒有什么東西能在我們選英雄的時(shí)候幫我們提高勝率呢?當(dāng)然有,機(jī)器學(xué)習(xí)就可以幫我們選出一手好英雄。

好的BP對(duì)于職業(yè)比賽而言非常重要
Reddit上面的網(wǎng)友Andrei Apostoae剛剛發(fā)布了一個(gè)很有意思的機(jī)器學(xué)習(xí)項(xiàng)目(網(wǎng)站地址見文末),叫做Dota2 Predictor。這個(gè)項(xiàng)目就是使用機(jī)器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)以及邏輯回歸方法,通過分析50萬場Dota2比賽來幫助大家選擇比賽中的最后一個(gè)英雄,以及針對(duì)對(duì)戰(zhàn)雙方的英雄陣容來預(yù)測比賽勝率。這個(gè)使用Python編寫的程序同時(shí)提供了GUI界面,其界面如下:

如上圖所示,在輸入完9個(gè)已選英雄然后再輸入平均天梯分之后,就可以讓程序?yàn)槟阃扑]一些最能帶隊(duì)伍走向勝利的英雄來供你選擇。
根據(jù)作者的說法,該算法的最終預(yù)測可靠性可以達(dá)到0.63的ROC AUC評(píng)分——確實(shí)不是很高,但已經(jīng)非常不錯(cuò)了,要知道影響一場比賽的可不僅僅是陣容,選手的狀態(tài)、發(fā)揮以及一些偶然因素會(huì)更加關(guān)鍵。而如果僅憑陣容就能占得一絲先機(jī),對(duì)于隊(duì)伍而言已經(jīng)是再好不過了。
該程序使用Python 2.7編寫,程序內(nèi)同時(shí)提供了比賽數(shù)據(jù)下載和模型訓(xùn)練的接口,以便大家自行使用最新版本的比賽結(jié)果來進(jìn)行預(yù)測。程序默認(rèn)提供了50萬場比賽的訓(xùn)練結(jié)果模型,而且為了提升精準(zhǔn)度,算法考慮到了用戶的天梯分(MMR)對(duì)于比賽結(jié)果的影響。當(dāng)然,通過這個(gè)程序我們也可以輕松得到當(dāng)前版本下各個(gè)英雄的平均勝率比較。
這個(gè)工具一個(gè)最大的作用就是可以通過陣容來預(yù)測每一方的勝率,我們這里不妨使用之前的比賽來測試一下。我們選取了TI7預(yù)選賽中LGD對(duì)陣VG的一場比賽,其對(duì)戰(zhàn)陣容是這樣的:

我們將所有英雄輸入預(yù)測程序,然后點(diǎn)擊預(yù)測按鈕,程序給出了如下的反饋:

(職業(yè)選手的天梯分一般都會(huì)高于6000,有些選手因?yàn)樯瞄L打天梯所以分?jǐn)?shù)會(huì)特別高,但不具有普遍參考性)
根據(jù)程序的預(yù)測,夜魘方(Dire)有56.12%的概率獲勝——這個(gè)勝率并不是非常高,意味著雙方的陣容基本勢均力敵,夜魘方只是略占優(yōu)勢。
那么真實(shí)的比賽結(jié)果呢?其實(shí)是LGD的天輝方獲得了最后的勝利,程序預(yù)測失敗了——但是,讓我們不妨來看一下比賽的進(jìn)程:

從經(jīng)濟(jì)曲線中我們看出,夜魘方其實(shí)在中期具有很大優(yōu)勢,直到55分鐘才突然崩盤,這可能源于一次失誤,但是我們已經(jīng)可以知道,陣容上的部分優(yōu)勢已經(jīng)幫助夜魘方在中期建立了較大優(yōu)勢,只是后期的發(fā)揮影響了比賽結(jié)果。程序的預(yù)測雖然是錯(cuò)誤的,但并不是毫無意義的,夜魘方的英雄搭配仍然值得推薦!!
我們?cè)賮頁Q一場比賽看看,我們選取了一場TI7預(yù)選賽南美賽區(qū)的比賽(有點(diǎn)菜雞互啄的味道)。我們直接上程序的預(yù)測結(jié)果:

我的天夜魘勝率這么高,那這天輝方還打個(gè)毛——事實(shí)上比賽結(jié)果也確實(shí)是這樣,天輝被從頭虐到尾,輸?shù)恼也坏奖薄?br/>
但是這個(gè)程序還有另外一個(gè)用途,就是可以幫助我們找出導(dǎo)致隊(duì)伍勝率這么低的罪魁禍?zhǔn)住簿褪钦胰吮冲仭T谏厦娴谋荣愔校绻覀儼焉惩鯎Q掉,比如說換做大屁股試試看。

我們可以看到把沙王換掉之后的結(jié)果發(fā)生了巨大的變化,天輝方變成了有優(yōu)勢的一方,這說明程序認(rèn)為沙王這一手選的非常失敗,而真實(shí)比賽的結(jié)果呢?讓我們來看一看:

事實(shí)確實(shí)如此,沙王KDA僅有1,死亡次數(shù)達(dá)到10次實(shí)在是慘不忍睹。
當(dāng)然,程序也僅僅是程序,并不具備未卜先知的能力,所作出的預(yù)測也僅僅具有參考意義。經(jīng)過多次嘗試之后,我們會(huì)發(fā)現(xiàn)程序的某計(jì)算過程很容易陷入局部最優(yōu),比如僅僅因?yàn)橹嫠梗▃eus)的總體勝率很高,程序就會(huì)頻繁向玩家推薦使用宙斯這個(gè)英雄;又因?yàn)槟承┯⑿郏ū热缧【`)的登場概率很低,程序就會(huì)對(duì)這些英雄的勝率做出錯(cuò)誤的估計(jì)。
另外一點(diǎn),由于訓(xùn)練過程所分析的數(shù)據(jù)維度有限,某些陣容分析也會(huì)與大家的直覺相悖。比如說該程序在某一方已經(jīng)擁有四個(gè)Carry的時(shí)候仍然會(huì)向玩家推薦幽鬼這個(gè)英雄。對(duì)于這一問題,作者解釋說因?yàn)槌绦虿⑽捶治鲫嚾莸奈淮味鴥H僅是分析過往比賽中英雄之間的相互影響狀況,所以導(dǎo)致最終推薦結(jié)果可能仍然無法貼近現(xiàn)實(shí)的比賽結(jié)果。也就是說,這個(gè)項(xiàng)目中用到的算法仍然有著很大的進(jìn)步空間,愿意研究的同學(xué)可以前往 https://github.com/andreiapostoae/dota2-predictor 下載源碼并進(jìn)行調(diào)試。
PS. 我站之前也做過類似的實(shí)驗(yàn)項(xiàng)目,不過當(dāng)時(shí)的研究重點(diǎn)是集中于某個(gè)英雄本身而不是比賽總體的陣容搭配,有興趣的讀者可以前往 https://jizhi.im/blog/post/dota2dom 一探究竟。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。