使用机器学习预测电子竞技游戏《守望先锋》的胜负
摘要:?機(jī)器學(xué)習(xí)可以預(yù)測游戲的輸贏?來看看Bowen Yang博士是如何構(gòu)建這一模型的。
《守望先鋒》中的英雄
來自加州大學(xué)河濱分校的物理學(xué)博士學(xué)位的Bowen Yang正在致力于構(gòu)建一個(gè)模型——對游戲中的人物特征進(jìn)行有意義的學(xué)習(xí),來預(yù)測電子競技游戲中的獲勝團(tuán)隊(duì)。這個(gè)方法廣泛適用于任何具有結(jié)構(gòu)化數(shù)據(jù)的業(yè)務(wù)。
現(xiàn)在,電子競技游戲是一個(gè)有著巨大潛力且不斷上升的市場。去年,在英雄聯(lián)盟的世界冠軍賽中,僅僅一場半決賽就吸引了1.06億觀眾,甚至超過了2018年的超級碗(美國職業(yè)橄欖球大聯(lián)盟年度冠軍賽)。為玩家提供個(gè)性化游戲分析的公司Visor,就希望能夠有一個(gè)可以實(shí)時(shí)預(yù)測團(tuán)隊(duì)勝率的模型。
預(yù)測比賽
預(yù)測模型有很多種用途。比如,它可以向玩家提供有效反饋,幫助他們提高技能;對于玩家,它可以成為一個(gè)很好的參與工具,來吸引那些不熟悉游戲規(guī)則的潛在玩家;另外,如果一個(gè)模型在預(yù)測方面能夠超越人類,那么它在電子競技下注方面就會(huì)有著前所未有的潛力。
DOTA2國際邀請賽現(xiàn)場
《守望先鋒》簡介
我們今天建模的對象是《守望先鋒》——一款基于團(tuán)隊(duì)的多人在線射擊游戲。每個(gè)隊(duì)伍有六名玩家,每位玩家從英雄列表(26名英雄)中選擇一個(gè)英雄(游戲角色,如超級馬里奧),與另一隊(duì)進(jìn)行戰(zhàn)斗,每場游戲都有特定的游戲地圖(游戲開始之前就已設(shè)定)。
游戲中有很多因素會(huì)影響游戲的預(yù)測結(jié)果,其中大部分是分類特征。舉個(gè)例子,英雄的選擇對于游戲的前期有著很大的作用。因此,我們面臨的挑戰(zhàn)是:如何處理這些分類特征。如果我只使用一種熱編碼,那么特征空間可以很輕松地增長到數(shù)百個(gè)維度。不幸的是,收集足夠多的游戲數(shù)據(jù)來滿足這個(gè)高緯度特征空間,這幾乎是不可能的。
縱軸和橫軸分別為預(yù)測準(zhǔn)確度與游戲進(jìn)度,使用熱編碼和特征選擇的邏輯回歸對預(yù)測進(jìn)行建模。在游戲接近尾聲時(shí),預(yù)測較為準(zhǔn)確;但在游戲開始時(shí),預(yù)測幾乎是一個(gè)隨機(jī)值(具有0.5的準(zhǔn)確性)。
本文將重點(diǎn)介紹如何使用嵌入對這些游戲角色進(jìn)行建模,以及如何提升預(yù)測的準(zhǔn)確度。
有關(guān)更多細(xì)節(jié)和實(shí)現(xiàn),請參閱我的Github鏈接。
多個(gè)英雄可以組成一個(gè)隊(duì)伍(“復(fù)仇者”)
從《魔獸世界》等角色扮演游戲到Dota 2、LoL和Overwatch等戰(zhàn)斗類游戲,團(tuán)隊(duì)是現(xiàn)代多人在線視頻游戲的核心概念,而英雄則是隊(duì)伍的基礎(chǔ)。
《守望先鋒》中的英雄可以分為三類:進(jìn)攻(DPS)、防御(坦克)和輔助,每個(gè)英雄都有自己的強(qiáng)項(xiàng)和弱點(diǎn)。一個(gè)團(tuán)隊(duì)?wèi)?yīng)該保持英雄成員的平衡(所以沒有特定的陣容)、配合(團(tuán)隊(duì)配合非常重要),根據(jù)當(dāng)前的作戰(zhàn)地圖和英雄的技能水平形成團(tuán)隊(duì)策略。這和籃球比較比較相似,需要后衛(wèi)、中鋒和前鋒合作。因此,團(tuán)隊(duì)的組合需要有一定的模式,甚至某個(gè)英雄可以在一個(gè)團(tuán)隊(duì)中共同出現(xiàn)。
典型的均衡團(tuán)隊(duì)需要有2名防御(坦克)、2名進(jìn)攻(DPS)和2名輔助。
多個(gè)單詞可以組成一個(gè)句子
我們可以從英雄和單詞的類比中得出某些結(jié)論。一個(gè)單詞本身有自己的含義,如果形成一個(gè)句子或一篇文章,那么,它的意義更大。同樣地,英雄本身也有自己的“含義”和特征,比如一些英雄攻擊力強(qiáng)、一些英雄則擅長防守,如果二者組成一個(gè)團(tuán)隊(duì),那么,他們的角色會(huì)變得更加復(fù)雜。
以前,單詞是用一個(gè)熱編碼建模的,這種編碼很大程度上受到高緯災(zāi)難的影響,因?yàn)樵~匯量太大,以至于特征空間的維度可能很容易就超過數(shù)十萬。一個(gè)熱編碼簡單地假設(shè)單詞之間彼此獨(dú)立,即它們的表示(representations)是相互正交的,它并不捕獲單詞在句子中的含義。另一方面,單詞也可以表示為分布式表示。這樣,單詞的語義可以通過更低維的矢量(嵌入)來捕獲。
當(dāng)用語詞的分布式表示的算法是著名的word2vec模型。
超越word2vec
為了利用嵌入的優(yōu)勢,我們應(yīng)該考慮以下幾個(gè)事項(xiàng):
1.相似性:相似性代表了輸入之間的“重疊”。例如,“國王”和“女王”代表統(tǒng)治者。輸入的重疊越多,它們的嵌入就越密(更小的維度)。換句話說,必須有不同輸入到相同輸出的映射。如果輸入是相互正交的,那么嵌入就沒有任何意義了。
2.訓(xùn)練任務(wù):嵌入是從訓(xùn)練任務(wù)中(預(yù))學(xué)習(xí)的。訓(xùn)練任務(wù)應(yīng)該與我們自己的任務(wù)相關(guān),因此嵌入的信息是可轉(zhuǎn)移的。例如,word2vec在Google新聞上進(jìn)行訓(xùn)練,然后用于機(jī)器翻譯。它們是相關(guān)的,因?yàn)樗鼈兊脑~語具有相同的語義含義。
3.大量的數(shù)據(jù):為了找到輸入數(shù)據(jù)之間的相似性或關(guān)系,我們需要大量數(shù)據(jù)來探索高維度空間。因?yàn)橛写罅康目捎糜跓o監(jiān)督學(xué)習(xí)的數(shù)據(jù),分布式表示可以減少維度背后的“黑魔法”。例如,word2vec模型在數(shù)十億字上進(jìn)行訓(xùn)練。在一定程度上,嵌入僅僅是獨(dú)熱編碼輸入和下行任務(wù)之間的附加線性層的權(quán)重。為了訓(xùn)練包括嵌入層的整個(gè)管道,我們?nèi)匀恍枰罅繑?shù)據(jù)來填充高維度輸入空間。Continuous bag of?heroes模型
考慮完以上幾個(gè)問題,我們現(xiàn)在開始設(shè)計(jì)Hero2vec模型。
1.相似性:如前所述,《守望先鋒》中的英雄屬于某些類別。這種相似性表明它們可以通過分布式表示來描述,而不是一個(gè)熱正交編碼。
2.訓(xùn)練任務(wù):通過對中心詞和上下文詞的共現(xiàn)進(jìn)行建模,word2vec試圖來捕捉單詞的一般語義含義。同樣,高協(xié)作性的英雄很可能會(huì)在一個(gè)團(tuán)隊(duì)中同時(shí)出現(xiàn),即聯(lián)合概率P(h0,h1,... h5)很高(h代表英雄)。但是,對這個(gè)聯(lián)合概率進(jìn)行建模并沒有非常簡單?;蛘?#xff0c;我們可以嘗試使用最大化條件概率P(h0 | h1,h2,... h5)來建模。由于游戲的預(yù)測只是P(結(jié)果| h0,h1,... h5,其他因素),因此這兩個(gè)任務(wù)是高度相關(guān)。
給定一個(gè)團(tuán)隊(duì)中的五個(gè)英雄,我們就可以預(yù)測出生存到最后的的英雄。例如,如果一支球隊(duì)已經(jīng)有2名后衛(wèi),2名中鋒和1名前鋒,那么最后一名球員很有可能成為球隊(duì)的前鋒。
3.數(shù)據(jù):Visor提供了超過30,000多種團(tuán)隊(duì)組合用于預(yù)訓(xùn)練嵌入。與數(shù)十億的單詞相比,30,000個(gè)組合可能看起來很小,同樣,輸入維度也比詞匯表中的單詞(例如260,000+)要小的多(26英雄)。考慮到訓(xùn)練數(shù)據(jù)的需求隨維度呈指數(shù)增長,實(shí)際上,30,000個(gè)組合足夠進(jìn)行訓(xùn)練。
4.模型:概率P(h0 | h1,h2,... h5)與word2vec中連續(xù)詞袋(CBOW)模型中的P(中心詞語|上下文詞語)完全相同。不同于單詞的是,(h1,h2,... h5)之間相互置換,并不會(huì)影響概率,因此(h1,h2,... h5)的嵌入總和實(shí)際上就是輸入總和。在這里,除了P(h0 | h1,h2,... h5)外,我們還可以對P(h1 | h0,h2,... h5)等進(jìn)行建模,使數(shù)據(jù)集可以有效的擴(kuò)展6次。
Hero2vec的模型架構(gòu),包括嵌入層、全連接神經(jīng)網(wǎng)絡(luò)和softmax層。由于softmax層只有26個(gè)目標(biāo),所以不需要負(fù)采樣。
英雄的可視化處理
可以將英雄的嵌入(10個(gè)維度)投影到二維平面上(使用PCA),實(shí)現(xiàn)可視化,如下圖所示。
英雄的嵌入(投影到二維平面上)
顯然,嵌入成功地捕捉了英雄背后的游戲設(shè)計(jì)。英雄根據(jù)自己的角色或類別進(jìn)行聚類。更有意思的是,嵌入還可以捕捉英雄超越其類別內(nèi)其它英雄的更微妙的特征。例如,盡管Roadhog英雄是防御(坦克),玩家仍然把它看作進(jìn)攻(DPS);雖然Symmetra是輔助,但它并不能治愈隊(duì)友,所以她更接近進(jìn)攻(DPS)和防御(坦克)等。玩家并不像游戲設(shè)計(jì)師所認(rèn)為的那樣,將它們視為兩類。對于熟悉《守望先鋒》的玩家來說,進(jìn)攻型DPS和防御性DPS之間的界限非常模糊,也就是說,玩家并沒有根據(jù)游戲設(shè)計(jì)的本意,將它們歸為兩類。
因此,與硬編碼類別的英雄(或產(chǎn)品)相比,在捕捉英雄的特征或?qū)傩詴r(shí),嵌入可以更加流暢和準(zhǔn)確的對其進(jìn)行捕捉,即玩家和游戲設(shè)計(jì)者都能從嵌入中提取更多有用的信息。玩家可以用這個(gè)模型來更好地理解或欣賞該游戲,而游戲設(shè)計(jì)師也可以利用該模型對游戲設(shè)計(jì)進(jìn)行驗(yàn)證和改進(jìn)。
Map2vec
我們已經(jīng)討論過了如何在游戲中模擬英雄。在介紹英雄嵌入是如何幫助我們預(yù)測游戲勝負(fù)之前,我想簡單地談?wù)勅绾翁幚砹硪粋€(gè)分類特征——地圖。
《守望先鋒》的每場游戲都是在特定的游戲地圖上進(jìn)行的,而團(tuán)隊(duì)的組合取決于地圖的布局,即P(團(tuán)隊(duì)|地圖)。通過貝葉斯規(guī)則重寫,P(團(tuán)隊(duì)|地圖)?P(地圖|團(tuán)隊(duì))P(團(tuán)隊(duì))。因此,我們可以用P(地圖|團(tuán)隊(duì))來嵌入地圖,如下所示。
map2vec的模型結(jié)構(gòu)。包括英雄的嵌入層、全連接神經(jīng)網(wǎng)絡(luò)和softmax層。softmax層的權(quán)重是地圖的嵌入。
與上面的Hero2vec模型不同的是:映射的嵌入是從最后一個(gè)線性層繪制的,word2vec模型的輸入嵌入和輸出嵌入都可以用來代表單詞。
同樣的,地圖的嵌入也可以進(jìn)行可視化。
地圖的可視化
通過嵌入,我們可以很好地理解地圖背后的游戲設(shè)計(jì)。對于那些熟悉《守望先鋒》的玩家來說,能夠看到單個(gè)地圖的進(jìn)攻區(qū)域和防御區(qū)域之間的差異,這比查看地圖之間的差異要更有意思。
相同的體系結(jié)構(gòu)可以對任何共同出現(xiàn)的事務(wù)進(jìn)行建模。例如,輸入為一堆電影,目標(biāo)為喜歡這些電影的特定客戶。訓(xùn)練這個(gè)管道,就可以為我們提供電影和客戶的嵌入。
使用英雄嵌入來預(yù)測游戲的勝負(fù)
使用英雄嵌入,可以提高游戲預(yù)測的準(zhǔn)確度,如下圖所示:
縱軸和橫軸分別為預(yù)測準(zhǔn)確度與游戲進(jìn)度。用Hero2vec嵌入,該邏輯回歸模型可以提高游戲前期的預(yù)測準(zhǔn)確度。
如上圖所示,二者都使用邏輯回歸,當(dāng)輸入為英雄嵌入時(shí),預(yù)測的準(zhǔn)確度要比輸入為一個(gè)熱編碼時(shí)高。更值得一提的是,英雄嵌入的確可以提升游戲前期或中期的預(yù)測準(zhǔn)確度。
團(tuán)隊(duì)中英雄的組合能夠?yàn)槟P吞峁┖芏嘈畔?#xff0c;這其中的一個(gè)原因就是,在游戲開始時(shí),數(shù)字特征幾乎不會(huì)有任何變化,因此,在游戲前期,數(shù)字特征基本上沒有什么用處。隨著游戲進(jìn)入中期,數(shù)字特征種會(huì)積累更多的信息,這樣一來,團(tuán)隊(duì)中英雄的組合形式就不再那么重要了。當(dāng)游戲打到后期時(shí),兩個(gè)預(yù)測結(jié)果重疊,因?yàn)閿?shù)值特征中的值足夠多,足以來預(yù)測游戲結(jié)果。
?
游戲結(jié)果與兩個(gè)重要的數(shù)字特征。在游戲前期時(shí)(左下角),特征差異不大,結(jié)果幾乎是重疊的。隨著游戲繼續(xù)進(jìn)展(朝右上角),方差逐漸變大,預(yù)測結(jié)果也可以很容易的分開。
總結(jié)
本文討論了如何用低維分布表示來表示高維分類特征,并遵循NLP和word2vec算法的邏輯。
通過對《守望先鋒》中的英雄進(jìn)行預(yù)訓(xùn)練,我構(gòu)建了一個(gè)可以預(yù)測游戲勝負(fù)的可靠模型。并且,該模型在游戲前期的預(yù)測準(zhǔn)確率更高,更為詳細(xì)的模型和代碼請查看我的Git庫。
文章原標(biāo)題《Predicting e-sports winners with Machine Learning》
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的使用机器学习预测电子竞技游戏《守望先锋》的胜负的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 「深圳云栖大会」大数据时代以及人工智能推
- 下一篇: 用户需求源源不断,阿里云网络创新不止