田 鵬,藍雯飛,張 瀟
(中南民族大學 計算機科學學院,湖北 武漢 430074)
王者榮耀游戲是一款當前廣受歡迎的手機游戲之一,作為一款可玩性很強的競技類游戲,游戲的勝負成為了玩家和觀眾最關心的問題。由于游戲的復雜性、部分可觀察性和對局動態實時變化等特點,僅僅依靠人工來解說比賽已經不能滿足需求,還需要實時的勝率預測為其提供話題引導和需求。勝率預測能夠為解說提供有力依據,增強觀眾的參與感,還可以用于賽后復盤,提升競技實力。
人工智能(AI)解說員越來越多地出現在比賽直播中,AI會根據雙方所獲得的資源預測出整場比賽的勝率趨勢,如肯德基KI上校、DOTA PLUS勝率預測面板,已經在LOL和DOTA玩家中取得了良好的反饋。
實時戰略游戲(RTS)在過去十年中一直是人工智能研究領域的一個熱點,游戲AI是其中的重要研究方向。文獻[1]-[3]提出了一種多人在線戰術競技游戲(Multiplayer Online Battle Arena,MOBA)AI學習范式,讓其能夠自主地訓練和扮演大量英雄,并且構建能夠擊敗頂級電子競技玩家的超人AI代理。勝率預測也取得了大量研究成果,如文獻[4]、[5]使用神經網絡以及Naivebayes分類器,通過分析陣容來預測勝率,但準確率都不是很高,而且只能在賽前進行預測,具有比較大的缺陷。此外,通過分析比賽數據來進行勝率預測也是一種可行方法,如文獻[6]-[8]參考了玩家和角色的歷史表現,使用了更豐富的數據特征來進行預測,但運用的模型較少參考性不強。文獻[9]中增加實時輸入特征和高質量的訓練集,提出了一種兩階段時空網絡(TSSTN),不僅可以提供準確的實時勝方預測,而且可以將最終的預測結果歸因于不同特征。文獻[10]提出了用賽后數據和陣容兩種方法對整局游戲勝負作出預測,但不是實時勝率;文獻[11]將陣容和比賽時的特征相結合,運用邏輯回歸模型進行勝率預測,得到的準確率為71%,效果比較一般。
關于實時預測的現有研究仍然存在局限性,現有工作很大程度上忽視了可解釋性,預測的準確性很難令人滿意。為了解決上述問題,本文考慮同時使用陣容數據和對局數據來進行勝率預測。為了使陣容數據具有實時性,本文采用關系模型提取不同時間節點時英雄之間的克制協同關系,并采用序列LSTM模型來進行勝率預測。為了緩解黑盒模型的不可解釋性,本文決定對于實時數據解耦,分離特征值和重要性的影響。提出了時空網絡概念,在空間階段將最重要的三個特征分開進行單特征預測,并在時間階段為空間階段產生的結果向量添加時間權重向量,最終通過加權組合得到預測結果。最后,本文將兩個模型進行聯合,提出了一種高準確率且具有可解釋性的角色-實時聯合網絡。
本文利用收集的真實對戰數據集,使用角色-實時聯合網絡進行預測,并對預測結果進行解釋,具體預測流程如圖1所示。實驗結果表明,AI解說員可以在解說詞中給出較為準確的勝率預測與分析,大大增強游戲觀看者的體驗。同時,本方法對于其他類似的電子競技游戲具有相同的實用價值。

圖1 王者榮耀可解釋性勝率預測流程圖
在王者榮耀中,兩支由五名英雄組成的隊伍互相戰斗,直至推掉對方主水晶才算獲得勝利。通過與王者榮耀發行商進行合作,從2019年11月隨機選擇一天,提取游戲數據庫中當天所有對局的核心數據。核心數據是重構游戲和提取游戲特征的原始數據形式。為了減少數據冗余,每隔半分鐘提取一次特征,10 min得到20個數據幀,總共得到了496 342個數據幀。在每個數據幀中,包括了一些明顯對勝率預測有幫助的信息,如經濟、擊殺數和團隊的塔數等,如圖2所示。

圖2 王者榮耀數據集示例圖
根據獲得的數據集,可以直接提取出基本特征。這些基本特征的主要構成如表1所示,基本特征的具體形式如表2所示。

表1 基礎特征

表2 基礎特征每個字段含義
本文還提取與游戲時間相關的統計信息,描述特征在不同時間節點的表現,主要包括兩類:一類是戰斗數據在不同時間點的作用;另一類是角色在不同時間節點的作用。戰斗數據類型能夠反映出兩隊通過戰斗所獲得的所有資源差異,主要包括在不同時間節點下的經濟、擊殺和塔數上的差異。例如,需要統計整局游戲中兩隊經濟的最大值、最小值、均值以及當前節點與相鄰節點間經濟的差值等。
統計特征包括戰斗統計特征和角色統計特征,其中戰斗統計特征的具體形式如表3所示,角色統計特征的具體形式如表4所示。

表3 戰斗統計特征的形式

表4 英雄統計特征的形式
為了建立準確且可解釋的預測模型,需要同時考慮角色信息和實時信息。將角色模型和實時模型結合起來預測勝率,其中角色模型主要由雙線性模型捕獲角色的時序特性,通過序列LSTM模型來進行賽時勝率預測;實時模型主要由LSTM搭建的可解釋性時空網絡模型來進行可解釋的賽時勝率預測。為了捕獲時間序列特征,搭建了序列建模網絡LSTM來進行任務預測,選擇連續的l個節點數據作為輸入,游戲時間t的輸入數據為X=[xt-l+1,…,xt]T。 對于游戲開始4 min前的輸入,同樣輸入四個數據,如t=2時,X=[x0,x1,x2,x2]T。最后,將兩個模型的預測輸出進行融合,提高預測的準確性。圖3展示了提出的聯合模型的流程圖。

圖3 模型整體框架圖
為了解角色在比賽中的作用,對角色的時序屬性進行提取。角色數據類型能夠反映在不同時間階段角色以及角色組合的影響力差異。王者榮耀中的角色都有不同的定位,不同定位的角色在不同游戲階段的作用不同,全面了解不同階段內游戲角色之間的協同和對立關系是十分重要的。提取角色時序屬性首先提高了勝率預測的準確性;其次,可以幫助玩家發現比賽中每個角色的影響力,提高了對預測結果的可解釋性。為了更好地模擬角色的協同和對立關系,提出了一個潛在變量模型,將游戲角色建模為學習的低維空間中的向量。嵌入方法通過學習低維向量來捕獲實體的豐富屬性。
給定英雄的編號N,英雄集合表示為H={H1,H2,…,HN}。將每場比賽中紅藍兩隊的英雄表示為對于英雄Hi,其特征向量表示為hi∈RV,則H∈RN×V表示英雄的特征矩陣。
選擇使用雙線性模型來模擬協同和對立關系。首先對兩名英雄之間的關系進行提取。引入協同評分函數計算Hi和Hj的協同得分。

其中CH∈RV×V是Hi和Hj的協同矩陣。引入了對抗評分函數來計算Hi和Hj的對抗得分。

其中RH∈RV×V是Hi和Hj的對抗矩陣。圖4展示了角色關系嵌入并進行賽時預測的流程。

圖4 角色模型框架圖
模型的框架如圖5所示,在空間階段,所有特征被分為三個不同的特征組(金幣、擊殺和塔數),并投影到3個獨立的表示空間上,也是資深專業評論員關注的3個最重要的特征。構建3個LSTM序列網絡模型,僅將單個特征組和游戲時間t作為輸入并作出各自的獲勝預測,通過將游戲時間添加為模型輸入特征的一部分,模型的準確性得到了提高,整個預測模型的準確性也得到了提高。模型的輸出為Si∈[0,1.0],表示基于單個特征組值差的勝負可能性預測。同一特征的重要性在整個游戲中并不是一成不變的,為了更好地模擬這種“時間”特征,在第二階段(時間階段)中,為3個空間模型分配了3個時變權重,并通過空間模型輸出的加權組合來進行最終的勝率預測。給定作戰空間中作戰模型提供的時間點t的得分向量c(x,t)(其中x代表特征組),在時間階段通過重要性權重wt和得分向量c(x,t)的線性組合獲得Ct:

圖5 實時模型框架圖

根據對MOBA游戲的深入調查發現,角色數據和戰斗數據在整個游戲中也并非始終重要和同等重要。為了更好地模擬戰斗和角色相對時間的重要性變化,在聯合模型的第二階段,為每個模型分配了時間變量和可學習權重。經過空間階段,會得到得分向量FP=[Ct,Rt],然后將重要權重向量分配給得分向量以獲得最終預測分數Pt。

可解釋性是聯合模型的重要優勢,主要集中于實時模型中。在實時模型的第二階段會產生特征貢獻向量,能夠更直觀地解釋特征對勝率的影響。作出重大貢獻的特征不一定是最重要的特征,例如,在大多數時間點,雙方的經濟都是非常重要的特征,但如果雙方的經濟差異接近于0,則經濟對勝率貢獻不大。這也意味著,如果第一階段的預測輸出足夠高,那么重要性相對較低的特征仍然可以作出不可忽略的貢獻。更重要的是,對每個貢獻向量求和會得到實時模型的最終得分。如實時模型中三個特征組在10 min時的預測得分為[0.82,0.76,0.75],它們的重要性權重為[0.56,0.3,0.14],則三個特征組的貢獻為[0.46,0.23,0.11]。通過貢獻值排序,對局層的得分為0.8,功能組1(gold)是對局層中最為重要的特征。同時角色模型的最終得分為0.7。此時,對局層和英雄層的重要性權重為[0.85:0.15],因此最終勝率為0.785。評論員可結合信息作出比賽評論和精準預測。此信息也可用于在游戲結束后恢復游戲,并通過信息確定游戲的階段性目標。
本實驗基于Windows平臺通過Python語言實現,采用Windows 11 21H2的操作系統,硬件配置為Intel?CoreTMi5-8300H CPU@2.30 GHz,顯卡為NVIDIA GeForce GTX 1050 Ti,內存為16 GB,硬盤為512 GB。實驗選擇了496 342個數據幀中的10%作為測試集,10%作為驗證集,剩下的80%作為訓練集。對于聯合模型的參數設置,使用帶有兩個循環層的雙向LSTM,dropout的概率是0.2,隱藏狀態的大小為128。在LSTM之后,使用一個256維全連通層和一個tanh函數來計算類分數P(y|X)。
(1)邏輯回歸(LR):邏輯回歸將所有特征作為其輸入。
(2)SVM:SVM將所有特征作為其輸入。輸入與LSTM格式相同,參數C=0.01,參數Gamma=10 000。
(3)LSTM:使用雙向LSTM和兩個循環層,輟學概率為0.1,隱藏狀態的大小為32。在LSTM之后,使用64維完全連接層和tanh函數來計算預測結果。
為了驗證提取的角色關系對模型性能提升的有效性,使用了LR與GBDT來進行實驗。結果如表5所示。

表5 角色關系提取算法在不同模型上的效果(%)
當使用由算法提取出的角色關系作為特征輸入時,不僅能夠依靠角色進行賽時勝率預測,而且在不同算法的效果都有提升,其中LR的效果最好,最高達到了77.7%。在圖6中,通過每2 min進行一次預測,比較了所有提出的方法的準確性。從這些實驗中可以得出三個觀察結果。
(1)實時信息大大提高了基線的預測準確性,當輸入超過6 min的實時信息時,所有四個實時模型都能獲得更好的準確性。
(2)中后期實時特征比角色特征提供的信息更多。隨著模型間差距的縮小,表明隊伍的實時表現決定了獲勝的一方。
(3)在使用少于10 min的實時特征時,聯合模型的性能優于LR。在比賽初期階段,更重要的是對性能趨勢進行建模,而不是對當前值進行建模。聯合模型明確地建模了4個時間序列數據,編碼了每個團隊的表現趨勢,因此它在這個時期的表現優于LR。
所有模型在5個等距時間節點的平均預測精度如表6所示。聯合模型在早期階段顯示出優勢,而其他模型在節點0處的精度稍低。原因是節點0時的戰斗數據相同,陣容是唯一決定勝率的因素,而聯合模型可以結合戰斗數據和陣容預測比賽,并對角色關系進行優化。由于聯合模型在不同階段增加了英雄對獲勝率的貢獻,因此結果略高于其他模型。另外,如圖6所示,節點10后準確率下降的原因有兩個:

表6 5個預測模型在5個等距時間點的準確度(%)

圖6 模型在不同時間節點的準確率圖
(1)游戲進入后期,雙方設備達到最大值,游戲結果越來越受到玩家意外失誤等隨機因素的影響。
(2)由于大部分游戲還未進入后期階段便結束了,游戲后期的數據遠少于游戲中期階段的數據,導致預測精度顯著下降。
此外,本文將所有的特征分成最主要的4個特征,通過實驗得到了所有特征在每個時間節點的特征重要性,如圖7所示,在游戲前期,與角色相關的特征是最為重要的特征;隨著游戲的進行,與經濟相關的特征變得越來越重要;當游戲進行到中期,與經濟相關的特征和與擊殺相關的特征變得重要;到了游戲后期,與塔數相關的特征成為了最關鍵的特征。

圖7 特征重要性圖
本文利用收集到的王者榮耀游戲的真實對戰數據,提出了一種角色-實時聯合預測模型,以提供高準確率的可解釋性預測。該模型結構的核心思想是在賽時勝率預測中引入角色交互,以提高準確率;同時分離戰斗數據和英雄數據價值差異的影響以及每個特征的相對重要性,以解耦不同特征的貢獻,從而得到更全面的解釋。結果表明,隨著游戲時間的變長,角色的預測能力會下降,通過對實時時間序列進行建模來提高預測準確率。模型在預測精度和可解釋性方面比其他的模型效果更佳,模型的可解釋結果可用于各種類似的場景,以促進相關行業的發展。