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


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

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

演講嘉賓:王亮,騰訊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的應用錦集及背后技術

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

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

此文已由作者授權騰訊雲+社區發布,原文鏈接:https://cloud.tencent.com/developer/article/1189695?fromSource=waitui

搜索關注公眾號「雲加社區」,第一時間獲取技術干貨,關注后回復1024 送你一份技術課程大禮包!

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM