別推塔了快回城,AI預測你的英雄5秒後就要死了
【新智元導讀】死亡也是可以預測的嗎?如果可以預見未來,那麼最遠能預測多久以後呢?約克大學的研究人員最新研究結果表明,通過AI模型提取遊戲角色特徵,如當前狀態、裝備、英雄技能、位置等因素,可在5秒內預測該角色的死亡時間,準確率最高為0.725。
如果能夠預知死亡,哪怕只有5秒,你會做什麼呢?
近日,約克大學的研究者用AI預測死亡。不過不是人類的死亡,而是Dota 2中英雄的陣亡概率。
論文標題:Time to Die: Death Prediction in Dota 2 using Deep Learning
論文地址:
https://arxiv.org/pdf/1906.03939.pdf
Dota 2由Valve公司發行,是一款5v5在線競技遊戲。每個玩家操控一個英雄,分為敵對雙方進行廝殺。終極目標是在對方沒有推到己方塔之前,推到對方的塔。在推塔過程中,不可避免的會發生擊殺對方英雄、或者被對方英雄擊殺的情況。
擊殺是一個被鼓勵的行為,也是觀眾最願意看的環節。它體現了一名Dota選手的操控力、判斷力以及反應敏捷度。通常不會出現追到天涯海角、不弄死對方不罷休的情況。玩家會根據敵我雙方的血量、己方輸出和對方承受力、回血速度等進行預判,爭取秒殺。
這對人類來說已經是非常複雜了,而對於AI複雜度又提升了好幾個等級。Dota 2平均每場比賽包含80000幀,每個英雄能執行170000個可能的動作;遊玩家在每幀上平均會完成10000個動作;玩家可以撿起、購買上百種裝備。
成功完成一次擊殺,不僅僅要考慮己方輸出值和對方的血量。因為攻擊輸出是在一定的範圍內波動的,而針對不同的甲、回血速度、裝備的道具等,輸出會打上不同程度的這口。
比如一個英雄的回血速度是每秒1點,他剛好裝備了一件加速回血的裝備,可以將回血速度提升10%,那麼就有可能出現本來剛剛好能夠秒殺,但是由於回血速度快了,導致技能放在對方英雄身上的同時,它回上了一點血,順利逃脫。
最終,AI面對的是一個超過20000唯獨的複雜狀況。
而AI解決這種複雜問題的方式也很簡單粗暴,就是獲取儘可能多的數據。研究人員想辦法獲取了Valve公司12月5日之前5000場職業比賽,以及5000場半職業比賽的replay。
他們的語料庫在預處理和誤差計算後共包含7311個文件,並通過在4-tick採樣周期(對應0.133秒的遊戲時間)內記錄屬性集數值,然後又從語料庫中提取數據並轉化為時間序列。
基於語料庫中的數據,研究者為每個英雄提取了287個特徵,比如血量、輸出值等。研究人員最終得出結論:時間、玩家當前狀態(如血量和護甲)、可激活裝備、英雄技能、走位、與最近的敵人和己方防禦塔的距離、以及可見性歷史是導致玩家死亡的重要因素。其中英雄的相對力量值和特定時間內在地圖上的位置居,是能否被秒殺的最關鍵因素。
那麼接下來,就是創建一個能夠捕獲相關數據的特徵集。研究者首先從相對力量值和在特定時間內在地圖上的位置開始,慢慢構建並完善特徵集,最終為每個英雄都集齊了287個特徵的特徵集。
下表給出了一些重要特徵的詳細描述。
可見性,指的是遊戲雙方均需知道對方的英雄在視野內,或者是否在攻擊範圍內,否則只能是浪費輸出和mana。一旦脫離視野,對方英雄就可能出現在地圖的任何位置,所以需要給英雄這個特徵。
10位玩家的287個特徵產生了2870個輸入和5760萬個單個數據點,將其相乘後餵給機器學習演算法,分別保留10%的數據用於驗證和測試,然後開始預測英雄的陣亡概覽。
實驗表明,預測的時候越短,成功率越高,0-5秒內的平均預測精確度達到了0.5447,預測的未來約往後,精度越低。參看下圖:
模型詳解
研究者使用具有權重共享的深度前饋神經網路作為模型,輸入包含每位英雄的特徵。在最大的特徵集中,每位英雄具有287個特徵,因此10位英雄共有2870個輸入;同時具有10個獨立的持續輸出,對應表每個英雄在未來5秒內死亡的概率。
網路架構
本質上是創建一個子網路,為英雄特性學習一個新的、更密集的表徵。連接層附帶來自每個共享層的輸出,為網路結構的最後一部分(一個全連接網路)創建一個輸入張量。每個隱藏層的輸出都使用RELU函數,網路的最後一個激活函數是Sigmoid。
特徵集
由於遊戲複雜度高,研究者不確定該網路是否可以利用所有的特徵類別。為了深入了解,研究者創建了三個獨立的特徵集,並利用三個獨立的超參數搜索運行三個訓練步驟:
- 最小的特徵集(每個英雄15個特徵)只包含當前HP、錢、位置、英雄和塔的距離特徵
- 中等特徵集(每個英雄109個特徵)包含除了英雄ID和能力特徵之外的所有特徵
- 大型特徵集包含全部的特徵,全部287個特徵
訓練網路
對於每一個特徵集,研究者使用基於隨機搜索的探索來確定最佳超參數,用於:層數、每層的神經元數、學習率和批大小,詳細信息見表 II。
結果
表現最佳的模型達到了0.5447的平均精度,精度-召回率曲線如下圖所示,該圖顯示了閾值和精度及召回率之間的權衡:
但是聰明的新智元讀者肯定會問了,5秒時間一眨眼就過去了,這麼短的時間內能做個什麼?夠我扼住命運的喉嚨讓他反轉嗎?
預測英雄死亡可能對增加遊戲的趣味性或者競技性沒什麼用,對Dota玩家貌似也沒有什麼實質的作用。但是對於遊戲解說就非常關鍵了!5秒的提前量已經可以基本不漏掉任何精彩擊殺鏡頭了。
模型已經在GitHub上開源:
https://github.com/adam-katona/dota2_death_prediction
※GitHub趨勢榜第一:超級命令行工具Semantic,比較解析源代碼
※2019計算機體系結構最高獎Eckert-Mauchly獎公布,Mark D.Hill獲獎
TAG:新智元 |