為什么要研究游戲 AI 呢?
作者 | 葉鑫來(lái)源 | DatawhaleAI作為時(shí)下計(jì)算機(jī)算法的超級(jí)巨星,在例如CV、NLP、語(yǔ)音、機(jī)器人等諸多領(lǐng)域都有廣泛的應(yīng)用。而在游戲領(lǐng)域,AI的應(yīng)用往往被認(rèn)為只是把游戲角色擬人化,算法的第一印象也通常是強(qiáng)化學(xué)習(xí)。但實(shí)際當(dāng)中,AI在游戲中的應(yīng)用卻不止于此。本文就來(lái)介紹一下游戲領(lǐng)域的AI應(yīng)用與算法。
自 AI 的想法誕生以來(lái),游戲一直為 AI 的研究過(guò)程提供助力。游戲不僅提出有趣且復(fù)雜的問(wèn)題來(lái)供AI解決————例如去精通一個(gè)游戲;它們也為(人類(lèi),甚至機(jī)器)用戶(hù)能夠體驗(yàn)到的創(chuàng)意以及表達(dá)提供了一個(gè)畫(huà)布。因此可以說(shuō),游戲是罕見(jiàn)的,是科學(xué)(解決問(wèn)題)與藝術(shù)相碰撞并相互作用的領(lǐng)域,而這些因素也讓游戲?qū)τ贏I的研究來(lái)說(shuō)成為一個(gè)獨(dú)特并且優(yōu)秀的環(huán)境。然而不僅是AI在游戲中提升,游戲也在AI研究中得到了發(fā)展。——《Artificial Intelligence and Games》
01 從游戲環(huán)節(jié)看AI應(yīng)用
在游戲領(lǐng)域中,AI的應(yīng)用其實(shí)并不僅僅是人們印象中的玩家型戰(zhàn)斗AI。傳統(tǒng)意義上的游戲制作融入了AI的方法之后在各個(gè)環(huán)節(jié)都催生了相應(yīng)的應(yīng)用與算法。如果我們將一款游戲拆開(kāi)來(lái)看他的各個(gè)環(huán)節(jié),這些AI的應(yīng)用就變得直觀起來(lái)。
1.1 游戲畫(huà)面
在游戲制作的環(huán)節(jié)里,開(kāi)發(fā)者需要制作相應(yīng)角色的動(dòng)畫(huà)模型,來(lái)滿(mǎn)足使用者在游戲內(nèi)視覺(jué)上的需求,在傳統(tǒng)的游戲制作上,通常需要一名專(zhuān)門(mén)游戲原畫(huà)師來(lái)制作相應(yīng)的內(nèi)容,但是聚焦到游戲內(nèi)角色們的表情與動(dòng)作這些細(xì)節(jié)上時(shí),動(dòng)畫(huà)的設(shè)計(jì)通常變得吃力不討好起來(lái),應(yīng)用視覺(jué)AI可以將人們的動(dòng)作投影到角色身上,生成相應(yīng)的動(dòng)作表情;而在環(huán)境的設(shè)計(jì)中,AI也可以起到相似的效果,通過(guò)輸入現(xiàn)實(shí)的圖片來(lái)得到相應(yīng)的游戲畫(huà)面。在這個(gè)問(wèn)題上,CV中的機(jī)器學(xué)習(xí)方法例如姿態(tài)識(shí)別,表情識(shí)別,GAN等起到了關(guān)鍵性的作用。下面幾個(gè)例子帶你一窺AI是如何創(chuàng)造游戲畫(huà)面的。
1.2 玩家型AI
該類(lèi)型應(yīng)該是最被大眾所熟知的游戲AI類(lèi)型,2017年AlphaGo擊敗世界圍棋冠軍李世石,2019年OpenAI Five擊敗DOTA2世界冠軍OG證明了AI在游戲上的表現(xiàn)可以超越人類(lèi)。而此類(lèi)AI問(wèn)題本質(zhì)上可以看成是路徑規(guī)劃問(wèn)題,即根據(jù)當(dāng)前的游戲狀態(tài)生成相應(yīng)的動(dòng)作序列。典型的以強(qiáng)化學(xué)習(xí)、深度強(qiáng)化學(xué)習(xí)為代表的游戲AI目前在國(guó)內(nèi)的游戲工業(yè)界已被大量研究,在某些游戲類(lèi)型例如棋牌類(lèi)、回合制策略游戲中,蒙特卡洛搜索樹(shù)(行為樹(shù))、演化算法、A*等在線(xiàn)學(xué)習(xí)算法也具有一定優(yōu)勢(shì)。
1.3 游戲內(nèi)容
在這一方面的AI應(yīng)用常常不為人所知,通常被稱(chēng)為Procedural Content Generation(PCG)。在游戲內(nèi)容(地圖)的產(chǎn)出上,以魔獸爭(zhēng)霸3為例,一方面依賴(lài)于游戲本體制作時(shí)開(kāi)發(fā)者制作的地圖;另一方面依賴(lài)于社區(qū)玩家的自定義地圖,而社區(qū)玩家內(nèi)容又更是由玩家數(shù)量所決定,豐富且可行的游戲內(nèi)容是吸引玩家入坑的重要保障。利用AI去生成可行的游戲內(nèi)容是非常值得研究的方向。目前該方向的主流算法包括演化算法、GAN等。
1.4 游戲初始化平衡
目前在卡牌類(lèi)游戲中,為了初始化得到的卡牌或是環(huán)境相對(duì)平衡,在PVE游戲中體現(xiàn)為玩家可以戰(zhàn)勝Bot,PVP游戲例如爐石傳說(shuō)、自走棋,防止出現(xiàn)雙方卡牌差距過(guò)大導(dǎo)致輸?shù)?,可以利用AI來(lái)設(shè)計(jì)發(fā)牌的策略。該方向的主要算法為演化算法。
1.5 游戲測(cè)試
在游戲制作完成后,開(kāi)發(fā)者們需要測(cè)試游戲內(nèi)存在的bug,這毫無(wú)疑問(wèn)是重要的,如果一款游戲存在大量的bug,對(duì)該游戲的評(píng)價(jià)和收益都會(huì)造成巨大的影響。而測(cè)試游戲需要大量的時(shí)間,在這一方面,測(cè)試專(zhuān)用的agent可以被設(shè)計(jì)來(lái)面對(duì)這一挑戰(zhàn),目前這一塊的算法主要為蒙特卡洛搜索樹(shù)、強(qiáng)化學(xué)習(xí)、深度強(qiáng)化學(xué)習(xí)等。
1.6 用戶(hù)畫(huà)像
在游戲的運(yùn)營(yíng)過(guò)程中,玩家在游戲內(nèi)的行為會(huì)產(chǎn)生豐富且復(fù)雜的數(shù)據(jù),這些數(shù)據(jù)內(nèi)折射了玩家的行為,分析并合理利用這些數(shù)據(jù)可以提煉出有價(jià)值的信息,這些信息可以用作促進(jìn)游戲更新更多玩家喜歡的內(nèi)容,預(yù)測(cè)玩家的行為和喜好,檢測(cè)作弊外掛等。這一種游戲中的數(shù)據(jù)分析問(wèn)題被稱(chēng)為用戶(hù)畫(huà)像問(wèn)題,利用合理的機(jī)器學(xué)習(xí)算法可以極大提升玩家的游戲體驗(yàn)。
02 AI應(yīng)用在游戲中的詳細(xì)分類(lèi)
【硬核預(yù)警】下面將參考開(kāi)篇提到的的《Artificial Intelligence and Games》,對(duì)游戲領(lǐng)域的AI從應(yīng)用和方法兩方面做匯總介紹,在方法部分會(huì)涉及大量AI技術(shù)。
- 利用AI玩游戲
- 利用AI為玩家建模
- 利用AI生成游戲內(nèi)容
2.1 利用AI玩游戲
在游戲中建立bot。
依據(jù)數(shù)據(jù)和預(yù)算產(chǎn)生不同水平的agent,可以與玩家共同匹配或作為PVE的NPC等提高玩家體驗(yàn)水平,由此引申的功能可以有動(dòng)態(tài)難度調(diào)節(jié),游戲自動(dòng)平衡。
在投入運(yùn)行前,可以通過(guò)投入大量的有測(cè)試行為的agent進(jìn)入游戲,根據(jù)其行動(dòng)期間的log異常來(lái)得到一些bug,或是通過(guò)bot間的對(duì)戰(zhàn),依據(jù)一定的判定方法來(lái)得到版本數(shù)值平衡性分析。
在游戲投入運(yùn)行得到一定的玩家數(shù)據(jù)前,可以使用agent的行動(dòng)來(lái)得到仿真的玩家數(shù)據(jù),例如陣型識(shí)別,勝率預(yù)測(cè)等數(shù)據(jù)。
根據(jù)共同演化的方法,一系列基礎(chǔ)的agent可以通過(guò)參數(shù)演化或者agent間對(duì)抗性的方法來(lái)催生性能更好的agent。
尋路規(guī)劃可以被視為AI動(dòng)作序列輸出的一種特例。在某些游戲例如馬里奧中,尋路算法本身就構(gòu)成了AI player。
- Planning-based:最佳優(yōu)先搜索(例如 ),蒙特卡洛樹(shù)搜索,演化規(guī)劃
- 基于模型的強(qiáng)化學(xué)習(xí)
- 靜態(tài)類(lèi)方法:狀態(tài)機(jī),行為樹(shù),基于效用(啟發(fā)式)函數(shù)的AI方法
- planning-based:STRIPS(符號(hào)化表示規(guī)劃)
- 強(qiáng)化學(xué)習(xí):需要高度表格化表示。
- 深度強(qiáng)化學(xué)習(xí):基于游戲圖像,不需要標(biāo)記數(shù)據(jù),但需要有游戲?qū)崟r(shí)的獎(jiǎng)勵(lì)設(shè)置。
- 演化算法:通過(guò)演化算法來(lái)更新神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)重來(lái)達(dá)到最優(yōu)化。
- 模仿學(xué)習(xí):根據(jù)玩家的數(shù)據(jù)來(lái)學(xué)習(xí)游戲的策略,基于游戲圖像,需要玩家數(shù)據(jù)。
- 逆強(qiáng)化學(xué)習(xí):根據(jù)策略來(lái)學(xué)習(xí)游戲中的獎(jiǎng)勵(lì)分布。
2.2 利用AI生成游戲內(nèi)容
就是PCG(Procedural content generation),利用AI的方法去協(xié)助設(shè)計(jì)游戲系統(tǒng),前置要求是需要比較好的數(shù)據(jù)(包括數(shù)據(jù)的質(zhì)量,數(shù)據(jù)的代表方式,數(shù)據(jù)的數(shù)量)和有代表性的評(píng)估方法(包括美學(xué),可玩性,新奇性)。具體的應(yīng)用方法需要進(jìn)一步查閱資料。
使用領(lǐng)域規(guī)則根據(jù)隨機(jī)初始狀態(tài)生成大量不規(guī)則圖形,可用于熱量、雨水、液體流動(dòng)、壓力爆炸等環(huán)境系統(tǒng)建模,也可以生成洞窟等小型地圖,但無(wú)法保證可控性。
定義一系列文法規(guī)則來(lái)生成內(nèi)容。
相較于機(jī)器學(xué)習(xí)的方法,搜索方法可以大大減少所需求的數(shù)據(jù)量,關(guān)鍵問(wèn)題有例如需要確定較好的內(nèi)容表示形式,需要有一種較好的評(píng)估手段。有以下幾種分類(lèi):
- EA類(lèi)算法:遺傳算法,演化策略,演化編程
- EA like 算法:粒子群演算法,差分進(jìn)化算法
- content representation
- 評(píng)估方法
-
直接評(píng)估是通過(guò)某種函數(shù)去約束評(píng)估生成的內(nèi)容,包括Theory-driven和Data-driven,區(qū)別在于評(píng)估函數(shù)是基于理論還是經(jīng)驗(yàn)?zāi)P偷摹?
-
基于仿真是利用bot AI去進(jìn)行游戲來(lái)評(píng)估游戲的內(nèi)容。包括靜態(tài)評(píng)估和動(dòng)態(tài)評(píng)估,區(qū)別是評(píng)估函數(shù)是否會(huì)隨著時(shí)間改變。
-
互動(dòng)評(píng)估屬于實(shí)時(shí)評(píng)估,通過(guò)人類(lèi)玩家的體驗(yàn)進(jìn)行評(píng)價(jià)。包括隱式評(píng)估-通過(guò)玩家玩游戲產(chǎn)生的數(shù)據(jù)來(lái)分析內(nèi)容好壞,以及顯式評(píng)估- 玩家直接評(píng)分
PCG研究的一個(gè)新方向是在現(xiàn)有內(nèi)容上訓(xùn)練生成器,以便能夠產(chǎn)生更多相同類(lèi)型和風(fēng)格的內(nèi)容。這是受最近的深度神經(jīng)網(wǎng)絡(luò)研究結(jié)果的啟發(fā),其中生成式對(duì)抗網(wǎng)絡(luò)和變異自動(dòng)編碼器等網(wǎng)絡(luò)架構(gòu)在學(xué)習(xí)生成臥室、貓或人臉等圖像方面取得了很好的效果,同時(shí)也受到了早期研究結(jié)果的啟發(fā),其中較簡(jiǎn)單的學(xué)習(xí)機(jī)制如馬爾科夫鏈和較復(fù)雜的架構(gòu)如遞歸神經(jīng)網(wǎng)絡(luò)都在一些語(yǔ)料庫(kù)的訓(xùn)練后學(xué)習(xí)生成文本和音樂(lè)。
- 神經(jīng)網(wǎng)絡(luò),包括GAN,AutoEncoder和NeuroEvolution等等。
-
概率模型,包括決策樹(shù)等
大致的PCGML數(shù)據(jù)代表方式與訓(xùn)練方法總結(jié)如下:e.將游戲生成內(nèi)容與玩家體驗(yàn)結(jié)合(EDPCG,Expierience-driven PCG),它包括了三個(gè)核心方面: 情緒激發(fā)、情緒檢測(cè)和情緒表達(dá)。1.數(shù)據(jù)representation:
- Sqquences: 利用順序的向量來(lái)作為輸入(輸出)數(shù)據(jù)
- Grid: 使用2D的網(wǎng)格結(jié)構(gòu)來(lái)作為輸入(輸出)數(shù)據(jù)
- Graph:使用原始圖像作為輸入(輸出)數(shù)據(jù)
2.PCGML訓(xùn)練方法:
- Backpropagation: 利用反向傳播作為訓(xùn)練NN的方法來(lái)
- Evolution: 使用演化計(jì)算方法來(lái)訓(xùn)練NN或是直接生成結(jié)果
- Frequency Count:使用統(tǒng)計(jì)學(xué)與馬爾科夫鏈變種來(lái)計(jì)算概率
- Expectation Maximization: 利用EA算法來(lái)訓(xùn)練無(wú)監(jiān)督學(xué)習(xí)模型
- Matrix Factorization:矩陣因子化是一種數(shù)學(xué)方法來(lái)將輸入的矩陣分解到更低維度的方法
- 情緒激發(fā): 游戲?yàn)榧ぐl(fā)情感提供了出色的背景構(gòu)件,因?yàn)榇碳な亲兓?,?lái)自不同的來(lái)源,如圖像、聲音、故事等等。
- 情緒檢測(cè): 游戲用戶(hù)(玩家)通常更愿意提供更多的多模態(tài)性質(zhì)的輸入(通過(guò)傳感器),只要這將導(dǎo)致體驗(yàn)的增強(qiáng)。從某種意義上說(shuō),玩家是情感計(jì)算和多模態(tài)交互研究的最佳用戶(hù)。
- 情緒表達(dá): 用戶(hù)在游戲中自愿經(jīng)歷一系列的體驗(yàn):這些體驗(yàn)從非常積極的到非常消極的都有。同時(shí),游戲中的情感體驗(yàn)是受玩家影響的! 因此,玩家習(xí)慣于并在很大程度上對(duì)基于情感的表達(dá)持開(kāi)放態(tài)度!
2.3 利用AI為玩家建模
利用游戲產(chǎn)生的數(shù)據(jù)來(lái)為玩家建立體驗(yàn)或行為模型(包括其消費(fèi)預(yù)測(cè),游戲性行為預(yù)測(cè),體驗(yàn)感預(yù)測(cè))或是進(jìn)一步利用該數(shù)據(jù)來(lái)更新與描述游戲(例如平衡性分析,游戲流派,提供給Agent更多的訓(xùn)練數(shù)據(jù))
b.理解玩家在游戲中的行為。AI輔助分析游戲行為,例如發(fā)掘一些新的游戲玩法;可以根據(jù)異常數(shù)據(jù)來(lái)判定外掛等作弊系統(tǒng);形成可觀的游戲數(shù)據(jù)來(lái)支持新的游戲AI迭代;輔助設(shè)計(jì)更具有公平性的匹配系統(tǒng);預(yù)測(cè)玩家的行為;對(duì)玩家社交群體分類(lèi);分析玩家的性格。
-
Experience: 玩家在游戲過(guò)程中的感受,包括:一系列(合成的)感受、認(rèn)知、行為狀態(tài),或是其他的用戶(hù)狀態(tài),情緒和認(rèn)知等
-
Behavior:玩家在游戲過(guò)程中的行為。
-
model-based(理論驅(qū)動(dòng)):從一些列玩家心理學(xué)、認(rèn)知學(xué)的研究中得到一些玩家對(duì)應(yīng)游戲的模型,來(lái)自上而下的設(shè)計(jì)游戲
-
model-free(數(shù)據(jù)驅(qū)動(dòng)):不利用之前的學(xué)科研究來(lái)對(duì)玩家進(jìn)行自下而上的建模,其中包括可視化,例如熱力圖來(lái)衡量玩家的活動(dòng)頻率。
玩家建模包括尋找一個(gè)函數(shù),將玩家的一組可測(cè)量的屬性映射到特定的玩家狀態(tài)。按照監(jiān)督學(xué)習(xí)的方法,這是通過(guò)機(jī)器學(xué)習(xí)或自動(dòng)調(diào)整模型的參數(shù)來(lái)實(shí)現(xiàn)的,以適應(yīng)包含一組輸入樣本的數(shù)據(jù)集,每個(gè)樣本與目標(biāo)輸出配對(duì)。輸入樣本對(duì)應(yīng)于可測(cè)量的屬性(或特征)列表,而目標(biāo)輸出對(duì)應(yīng)于我們有興趣學(xué)習(xí)預(yù)測(cè)的每個(gè)輸入樣本的玩家狀態(tài)的注釋。如前所述,注釋可以從行為特征,如關(guān)卡或玩家原型的完成時(shí)間,到玩家經(jīng)驗(yàn)的估計(jì),如玩家的挫折感等。
很多時(shí)候,我們面臨的數(shù)據(jù)集是沒(méi)有關(guān)于玩家行為或經(jīng)驗(yàn)狀態(tài)的目標(biāo)輸出。在這種情況下,玩家的建模必須依靠無(wú)監(jiān)督學(xué)習(xí)。無(wú)監(jiān)督學(xué)習(xí)的重點(diǎn)是通過(guò)發(fā)現(xiàn)輸入的關(guān)聯(lián),在沒(méi)有獲得目標(biāo)輸出的情況下,將模型與觀察結(jié)果相匹配。輸入通常被視為一組隨機(jī)變量,通過(guò)觀察輸入向量之間的關(guān)聯(lián)來(lái)建立模型。應(yīng)用于玩家建模的無(wú)監(jiān)督學(xué)習(xí)包括聚類(lèi)和關(guān)聯(lián)挖掘等任務(wù)。