王亮:遊戲AI探索之旅——從alphago到moba遊戲

騰訊雲加社群發表於2018-08-21

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~

本文由雲加社群技術沙龍 發表於雲+社群專欄

演講嘉賓:王亮,騰訊AI高階研究員。2013年加入騰訊,從事大資料預測以及遊戲AI研發工作。目前主要從事MOBA類遊戲AI相關的研發工作。

img

今天分享的課題是遊戲AI探索之旅。本次分享分為四部分,第一部分,什麼是遊戲AI,遊戲AI為什麼對現在的遊戲非常重要;第二部分,業界和工業界對於做遊戲AI主要的方法,以及現在業界一些主流的遊戲上的進展。第三部分,結合基於公司自有的MOBA遊戲,分享一下我們做的一些探索研究及現在的進展;第四部分,會簡單介紹一下基於深度學習方法來做遊戲AI,對於遊戲開發者來說需要提供哪些環境便於AI的開發。希望通過今天的分享能給大家之後工作或者接下來學習上帶來一些的啟發和思考。

什麼是遊戲AI,對於遊戲開發者而言是要增進使用者體驗,提升遊戲玩家的活躍度,方法主要是基於一些人工規則的方式。而對於學術界來說目標是最大化贏的概率,而現在主要是基於學習的方法。

幾乎每款遊戲都有自己的遊戲AI。棋類的(深藍、Alphago)、體育類的足球籃球、角色扮演類遊戲……越複雜的遊戲對AI的依賴程度越高。AI在遊戲中常用的方式:人機對戰:AI為遊戲提供一種玩法,玩家可以選擇與遊戲AI對戰去熟悉遊戲;平衡性測試:輔助遊戲設計開發,如:遊戲數值改變,AI可以用於驗證測試數值變化帶來的影響;對於射擊類的遊戲,AI可以用於探索地圖的探索等。

img

通用的遊戲AI的設計,包含三部分: 感知系統、決策系統、導航系統;遊戲AI的決策操作基於一定的時間粒度進行迴圈工作。

img

接下來介紹一下常用的遊戲AI方案,遊戲AI常用方法分為三類:1) 工業界常用的行為樹、有限狀態機及勢力圖,優點:實現邏輯清晰,不足:固定邏輯執行,容易被玩家識破,複雜邏輯難實現; 2) search方法,常用的方法:遺傳演算法、蒙特卡洛搜尋樹方法等; 3) 基於learning的方法: 監督學習演算法、強化學習演算法;

img

監督學習演算法:基於訓練資料,難點是抽象狀態環境以及執行操作Action,通常Action的定義直接影響模型的上限;對於複雜遊戲來講,對於狀態s很難定義最優的Action操作。

img

強化學習迴避SL中如何確定“正確”A的問題,轉而定義reward(例如贏一場比賽reward=10,擊殺對方英雄reward=1, 自身死亡reward=-5);強化學習通常用於序列操作決策問題,對於強化學習來說,特別是複雜遊戲,遇到的挑戰:1) exploration和exploitation的問題, 2) 對於遊戲玩法時間較長,如何解決reward delay問題。

img

談到遊戲AI探索研究,目前很多研究者在星際2上探索,目前星際上AI採用目前最強的StarCraft AI由hard-coded程式和learning程式共同實現,且hard-coded部分佔大部分;目前最強的StarCraft AI還不能戰勝業餘的中上水平。星際遊戲較為複雜,通用設計:將AI根據決策時間長短,分為:strategy,tactics, reactive control 進行分層優化。

img

Alphago掀起了遊戲AI的浪潮,它成功超越了人類,它的演算法主要由Supervised learning + Reinforcement learning +Monte Carlo tree search三部分組成,它的線下訓練需要大量的計算資源。目前DeepMind跟暴雪已經合作開發了一個開放平臺,模擬器是非常重要的,如果要做遊戲AI相關開發,模擬器是必要的環境,通過模擬器獲取資料以及提供一些操作指令能直接操作遊戲AI。

img

今年在遊戲界或者在遊戲AI行業裡最有影響力的就是Dota2了,在5個特定英雄等限制條件下AI能力能夠超過90%的玩家(截至2018.6.25)。採用的是強化學習的方法。線下訓練所使用的資源遠遠大於Alphago在圍棋上使用的資源:12W+CPU,256GPU。

img

接下來介紹我們在MOBA遊戲上的AI研究與探索。王者榮耀是一款即時戰略遊戲,與Dota,LoL是同型別遊戲。MOBA遊戲特點:注重英雄的操作,英雄設計較為複雜。介紹AI技術方案之前,首先我們來看下做MOBA類遊戲難點在哪:

img

強化學習在圍棋上成功的應用,為什麼Moba類遊戲AI還沒有戰勝人類的職業選手?以王者榮耀這款遊戲來分析,從狀態訓練空間來看,王者的操作基本是在102000,圍棋只有10170。操作序列空間也存在巨大差別,導致計算會非常非常大。

img

我們再看一下王者榮耀跟圍棋存在什麼樣的差異:從AI的個數上來說,圍棋只有一個AI,只需關注黑白子。對於王者來而言卻是有多種對戰情況的,5V5,3V3,是多個AI的操作。其次就是確定性的問題,下圍棋落子即定,不存在下完還可能下不成功的問題。而對於戰略性遊戲卻是非確定的操作,即使發出了技能也有可能被人打斷,所以是非確定性的操作。對於狀態可觀測性,圍棋可以看到整體的情況,而王者地圖對於玩家而言是部分可見,只能看到友方的視野,這樣就會涉及到博弈問題:如何去預測敵方的位置。

img

接下來我們再看下目標學習問題。目標學習是非常重要的,首先需要解決每個英雄要去哪裡的問題,對每個英雄或者對每類英雄要去的位置和出場是不一樣的。其次就是選目標的問題:遊戲中有七十多個英雄,每一局英雄可能不一致,如何解決英雄不一致的問題?因為AI學的是使用者的操作,每個英雄技能設計不一樣,有的是方向型的技能,有的是指向型技能,有的是位置型技能。

img

第三個難點是知識表達的問題。如果對於一個複雜英雄如:露娜,李白,玩家沒有熟悉一百場練習很難熟練操作這複雜英雄。露娜無限連怎麼打,關羽的無限推,李白四字真言,諸葛亮大招躲避。另外每個英雄有一些技能狀態變化的設計,例如說花木蘭,它的技能會隨著三技能的變更,前兩個技能效果也會變。這些如何表示?對於人來說是遊戲常識,難點在於對於AI如何進行表達。

img

對於遇到的主要問題我們的解決方案:第一是引入框架進行分層,任務分層場景切分。對於知識表達,引入了多模態的特徵表達方式:卷積特徵+向量特徵+ 時序特徵;模型採用多深度學習模型結合

img

接下來介紹下王者AI的主要技術解決方案。框架設計主要包含兩大組成部分:遊戲分析和策略模組。遊戲分析模組主要包含:英雄搭配問題,裝備策略的分析等。策略執行模組用以解決:接下來去做什麼,到達對應地點後如何進行對戰的問題。

大局觀設計,大局觀是解決下一時刻位置問題。具體來說對於英雄它下一次的熱點在哪裡?下一次的戰鬥位置在哪兒?或者它下一次蹲草叢在哪個位置。微操的設計,微操解決的是場景發生戰鬥的問題。我們特徵採用多模態方式組織:位置相關資訊通過imagelike特徵組織,屬性資訊通過向量特徵表徵,採用深度學習的Multi-task模型。

img

整體來說隨著強化學習,深度學習方向進展,以前主要是基於規則,現在主要是基於學習方式來研究AI。如果採取基於學習的方式研究AI對於開發者而言需要提供相關的環境便於開發者進行迭代除錯。總而言之,MOBA類遊戲AI研發遇到很多困難與挑戰,但也充滿了機會。這是今天的分享,謝謝大家。

問答

AI如何賦能物流?

相關閱讀

葉聰:朋友圈背後的計算機視覺技術與應用

冀永楠:OCR的應用錦集及背後技術

吳琛:智慧工地——履約考勤系統的應用實踐

雲學院 · 課程推薦 | 騰訊頂級技術專家,與你分享小程式開發經驗

此文已由作者授權騰訊雲+社群釋出,原文連結:cloud.tencent.com/developer/a…

搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社群

相關文章