
英雄聯(lián)盟如何指揮團戰(zhàn)?AI幫你做決策
英雄聯(lián)盟是一個需要默契團隊配合的多人對戰(zhàn)游戲。在瞬息萬變的戰(zhàn)斗中,如何做出正確的決策非常重要。最近,數(shù)據(jù)分析師 Philip Osborne 提出了一種利用人工智能技術提升英雄聯(lián)盟中團隊決策水平的方法,并將其開源。該方法不僅參考了大量真實游戲的統(tǒng)計結果,也將當前玩家的偏好計算在內(nèi)。
該項目由三部分組成,旨在將 MOBA 游戲《英雄聯(lián)盟》的對戰(zhàn)建模為馬爾科夫決策過程,然后應用強化學習找到最佳決策,該決策還考慮到玩家的偏好,并超越了簡單的「計分板」統(tǒng)計。
作者在 Kaggle 中上傳了模型的每個部分,以便大家更好地理解數(shù)據(jù)的處理過程與模型結構:
目前這個項目還在進行當中,我們希望展示復雜的機器學習方法可以在游戲中做什么。該游戲的分數(shù)不只是簡單的「計分板」統(tǒng)計結果,如下圖所示:
動機和目標
英雄聯(lián)盟是一款團隊競技電子游戲,每局游戲有兩個團隊(每隊五人),為補兵與殺人展開競爭。獲得優(yōu)勢會使玩家變得比對手更強大(獲得更好的裝備,升級更快),一方優(yōu)勢不斷增加的話,獲勝的幾率也會變大。因此,后續(xù)的打法和游戲走向依賴于之前的打法和戰(zhàn)況,最后一方將摧毀另一方的基地,從而贏得比賽。
像這種根據(jù)前情建模的情況并不新鮮;多年來,研究人員一直在考慮如何將這種方法應用于籃球等運動中(https://arxiv.org/pdf/1507.01816.pdf),在這些運動中,傳球、運球、犯規(guī)等一系列動作會導致一方得分或失分。此類研究旨在提供比簡單的得分統(tǒng)計(籃球中運動員得分或游戲里玩家獲取人頭)更加詳細的情況,并考慮建模為時間上連續(xù)的一系列事件時,團隊應該如何操作。
以這種方式建模對英雄聯(lián)盟這類游戲來說更為重要,因為在該類游戲中,玩家補兵和殺人后可以獲得裝備并升級。例如,一個玩家拿到首殺就可以獲取額外金幣購買更強的裝備。而有了這些裝備之后,該玩家變得更加強大進而獲取更多人頭,如此循環(huán),直到帶領其隊伍獲取最后的勝利。這種領先優(yōu)勢被稱為「滾雪球」,因為該玩家會不斷積累優(yōu)勢,不過很多時候,該玩家在游戲中所在的隊伍并不一定是優(yōu)勢方,野怪和團隊合作更為重要。
該項目的目標很簡單:我們是否可以根據(jù)游戲前情計算下一步最好的打法,然后根據(jù)真實比賽數(shù)據(jù)增加最終的勝率。
然而,一場游戲中影響玩家決策的因素有很多,沒那么容易預測。不論收集多少數(shù)據(jù),玩家獲得的信息量始終多于任何一臺計算機(至少目前如此?。?。例如,在一場游戲中,玩家可能超水平發(fā)揮或發(fā)揮失常,或者偏好某種打法(通常根據(jù)他們選擇的英雄來界定)。有些玩家自然而然地會變得更加好斗,喜歡殺戮,有些玩家則比較被動一直補兵發(fā)育。因此,我們進一步開發(fā)模型,允許玩家根據(jù)其偏好調(diào)整建議的打法。
讓模型「人工智能化」
在第一部分中,我們進行了一些介紹性的統(tǒng)計分析。例如,假設隊伍在比賽中補到第一個和第二個兵,我們能夠計算出獲勝的概率,如下圖所示。
有兩個組成部分,使我們的項目超越簡單的統(tǒng)計的人工智能:
我們定義馬爾可夫決策過程及收集玩家喜好的方式會決定模型學習和輸出的內(nèi)容。
根據(jù)匹配統(tǒng)計信息對馬爾科夫決策過程進行預處理和創(chuàng)建
AI 模型 II:引入打錢效率
我從第一個模型的結果中意識到,我們沒有考慮到負面和正面事件對未來都可能產(chǎn)生累積的影響。換句話說,無論在當時時間點之前還是之后,當前的 MDP(馬爾科夫決策過程)概率都有可能發(fā)生。在游戲中,這是不正確的。一旦落后,殺人、拿塔、補兵都會變得更難,我們需要考慮到這一點。所以,我們引入隊伍間的打錢效率來重新定義狀態(tài)。當前目標是建立一個定義狀態(tài)的 MDP,這個狀態(tài)可能是事件發(fā)生順序,或者隊伍是否落后或領先。我們將金幣差值分為以下幾類:
我們也需要考慮沒有任何事件發(fā)生的情況,并把其歸為『無』事件中,以保證每分鐘都有事件發(fā)生。這個『無』事件表示一個隊伍決定拖延游戲,以將那些在早期游戲中更善于獲得金幣的隊伍區(qū)分出來,而不需要殺死(或通過小兵殺死)他們。然而,這樣做也會大大增加數(shù)據(jù)量。因為我們?yōu)槠ヅ淇捎闷ヅ漤椧呀?jīng)添加了 7 個類別,但如果我們能訪問更常規(guī)的匹配項,那數(shù)據(jù)量就已足夠了。如前所述,我們可以通過以下步驟來概述:
預處理
1. 輸入殺人數(shù)、塔數(shù)、野怪和金幣差值的數(shù)據(jù)。
2. 將『地址』轉為 ID 特性。
3. 移除所有舊版本的游戲。
4. 從金幣差值開始,按照事件的時間、匹配 ID 和與以前一致的團隊進行合計。
5. 追加(助攻的)人頭數(shù)、怪數(shù)和塔數(shù)到此末尾,為每個事件創(chuàng)建行并按發(fā)生的時間對事件進行排序(平均人頭數(shù))。
6. 添加「事件序號」特性,顯示每次匹配中的事件順序。
7. 為行上的每個事件創(chuàng)建一個統(tǒng)一的「事件」特性,包括人頭、塔、怪或者『無』事件。
8. 每次匹配時將其轉化為行,現(xiàn)在是用列來表示每個事件。
9. 只考慮紅隊的視角,以便合并列,視藍隊增益為負紅隊增益。同時增加紅隊的游戲長度和結果。
10. 將所有空白值 (即在前面步驟中結束的游戲) 替換為匹配的游戲結果,以便所有行中的最后一個事件是匹配結果。
11. 轉換為 MDP,其中 P(X_t | X_t-1)用于每個事件數(shù)和由金幣差值定義的狀態(tài)之間的所有事件類型。
馬爾科夫決策過程輸出
使用簡易英語的模型 V6 偽代碼
我們最終版本的模型簡單總結如下:
1. 引入?yún)?shù)
2. 初始化啟動狀態(tài)、啟動事件、啟動操作
3. 根據(jù) MDP 中定義的首次提供或基于其發(fā)生可能性的隨機選擇操作
4. 當行動贏或輸時,結束
5. 跟蹤事件中所采取的行動和最終結果(贏/輸)
6. 根據(jù)最終結果所用的更新規(guī)則來更新操作
7. 重復 x 次上述步驟
引入獎勵偏好
首先,我們調(diào)整模型代碼,把獎勵歸入回報計算中。然后,當我們運行模型時,引入了對某些行為的偏置,現(xiàn)而不是簡單地使獎勵等于零。
在第一個例子中,我們顯示了如果對一個動作進行積極的評價,會發(fā)生什么;在第二個例子中,顯示對一個動作進行消極的評價,會發(fā)生什么。
如果我們積極評價動作『+KILLS』的輸出
如果我們消極評價動作『+KILLS』的輸出
更真實的玩家偏好
現(xiàn)在我們可以嘗試近似模擬玩家的真實偏好。在這個案例中,我們隨機化一些獎勵以允許遵守以下兩條規(guī)則:
因此,我們對人頭和補兵的獎勵都是最小值-0.05,而其它行動的獎勵都在-0.05 和 0.05 之間隨機生成。
隨機化玩家獎勵后的輸出。
隨機化玩家所有動作的獎勵后所獲得的輸出。
最終輸出,顯示給定當前金幣差值狀態(tài)和分鐘的每個動作的值
總結及玩家對獎勵的反饋
我過分簡化了某些特征(如「kills」實際上并不代表人頭的數(shù)量),數(shù)據(jù)也不太可能表示正常的匹配。然而,我希望本文能夠清晰地展現(xiàn)一個有趣的概念,鼓勵更多人討論這一領域今后的走向。
首先,我將列出在實現(xiàn)之前需要作出的重要改進:
1. 使用更多能夠代表整個玩家群體(而不只是競爭性比賽)的數(shù)據(jù)計算 MDP。
2. 提高模型效率,將其計算時間控制在更合理的范圍。蒙特卡洛以耗時著稱,因此我們將探索更高效的算法。
3. 采用更高級的參數(shù)優(yōu)化以進一步改進結果。
4. 捕捉、映射原型玩家對更真實的獎勵信號的反饋。
我們引入了針對影響模型輸出而給予的獎勵,但該如何獲得獎勵?我們可以考慮幾種方法,但是根據(jù)我之前的研究,我認為最好的方法就是考慮一種既涉及到行動的個體質量又考慮到轉變質量的獎勵。
這變得越來越復雜,我不會在此文中展開,但簡而言之,我們想為玩家匹配決策,其中下一個最佳決策取決于最新情況。比如,如果一隊玩家將對方全部殲滅,他們可能會去拿大龍。我們的模型已經(jīng)將一個序列中事件發(fā)生的概率考慮在內(nèi),因此,我們也應該用同樣的方式思考玩家的決策。這一想法來自一篇論文《DJ-MC: A Reinforcement-Learning Agent for Music Playlist Recommendation》,該論文闡釋了如何更加詳細地將反饋映射出來。
反饋的收集方式?jīng)Q定了我們的模型能有多成功。依我之見,我們這么做的最終目標是為玩家的下一步?jīng)Q策提供最佳實時建議。如此一來,玩家就能從根據(jù)比賽數(shù)據(jù)算出的幾條最佳決策(根據(jù)獲勝情況排序)中做出選擇??梢栽诙鄠€游戲中跟蹤該玩家的選擇,以進一步了解和理解該玩家的偏好。這也意味著,我們不僅可以追蹤決策的結果,還能預測該玩家的意圖(例如,該玩家試圖拆塔結果卻被殺了),甚至還能為更高級的分析提供信息。
當然,這樣的想法可能造成團隊成員意見不符,也可能讓游戲變得沒那么令人興奮。但我認為這樣的想法可能對低水平或者常規(guī)水平的玩家有益,因為這種水平的游戲玩家難以清楚的溝通游戲決策。這也可能幫助識別「毒瘤」玩家,因為團隊指望通過投票系統(tǒng)來統(tǒng)一意見,然后就能看出「毒瘤」玩家是不是一直不遵循團隊計劃,忽略隊友。
實時游戲環(huán)境中的模型推薦投票系統(tǒng)示例
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結構數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結構數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內(nèi)涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結構數(shù)據(jù)特征價值的專業(yè)核心 表結構數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結構化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結構數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結構數(shù)據(jù)(以 “行 - 列” 存儲的結構化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結構數(shù)據(jù)價值的核心操盤手 表格結構數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10