Nature 机器智能综述:AI如何自动生成游戏
近年來,很多AI技術(shù)的突破都離不開游戲的影響,不論是古老的圍棋還是即時(shí)戰(zhàn)略類的星際爭霸都體現(xiàn)著這樣的交融。同時(shí),游戲和AI的跨界合作,還在通過算法,生成新的游戲規(guī)則上有所展現(xiàn),從而讓機(jī)器學(xué)習(xí)的算法,具有更強(qiáng)的泛化能力。8月3日的 Nature Machine Intelligence 推出的綜述論文,先介紹了游戲行業(yè)中的“過程生成”(Procedural content generation)這一概念,從現(xiàn)有應(yīng)用,和機(jī)器學(xué)習(xí)的關(guān)系,以及面臨的問題,全面闡述了這一新的跨學(xué)科研究方向。
1. 讓游戲每一次玩都不一樣
通過算法,產(chǎn)生游戲中的背景信息,例如游戲中的關(guān)卡,任務(wù),環(huán)境等,在游戲界被稱為“過程生成”。自從1980年首次提出后,該技術(shù)在游戲界得到了廣泛地應(yīng)用。從最簡單的俄羅斯方塊,到我的世界Minecraft這樣的開放游戲,都能見到該技術(shù)的身影。
在著名的策略類游戲“席德梅爾的文明”系列中,每一局游戲的地圖,都會(huì)有所不同,正因如此,使得玩家愿意多次玩該游戲。為了保證每局地圖不一致,一種做法是在游戲中預(yù)設(shè)很多地圖,另一種做法是通過算法,每次開始時(shí)自動(dòng)生成地圖。顯然后者能減少游戲所需的計(jì)算機(jī)存儲(chǔ)空間。
?
如何在產(chǎn)生上述地圖時(shí),既保證每一局游戲的開局都不同,又確保玩家不會(huì)由于開局的隨機(jī)因素,覺得游戲難度發(fā)生顯著變化。一種可能的生產(chǎn)方式是元胞自動(dòng)機(jī),通過玩家給定的參數(shù),算法能夠從某一點(diǎn)出發(fā),逐步依據(jù)游戲設(shè)計(jì)者預(yù)設(shè)的規(guī)則,逐格擴(kuò)展,產(chǎn)生新的地圖。
2.數(shù)據(jù)增強(qiáng),機(jī)器學(xué)習(xí)中的過程生成
在機(jī)器學(xué)習(xí)中,要想提升模型的泛化能力,一種常用的技巧是數(shù)據(jù)增強(qiáng)(data argumentation),即在有監(jiān)督學(xué)習(xí)范式下,通過加入基于現(xiàn)有訓(xùn)練數(shù)據(jù)集,經(jīng)過特定轉(zhuǎn)換的模擬數(shù)據(jù)集,從而擴(kuò)大訓(xùn)練數(shù)據(jù)集包含的多樣性,進(jìn)而提升訓(xùn)練得出模型的泛化能力。
具體來看,在貓狗圖像分類任務(wù)中,可以將原圖拉伸,翻轉(zhuǎn),或者裁剪部分區(qū)域,再將新生成的數(shù)據(jù)和原數(shù)據(jù)一起進(jìn)行訓(xùn)練。如此訓(xùn)練出的模型,能夠更好的提取貓和狗的本質(zhì)特征,從而使得模型在新數(shù)據(jù)集上表現(xiàn)更優(yōu),穩(wěn)健型更強(qiáng)。
在強(qiáng)化學(xué)習(xí)范式下,通過在訓(xùn)練環(huán)境中引入隨機(jī)因素,例如訓(xùn)練掃地機(jī)器人時(shí),每次的環(huán)境都有所不同,也可以提升模型的泛化能力。而如果將掃地機(jī)器人執(zhí)行的任務(wù)看成一次游戲,那么機(jī)器學(xué)習(xí)中的數(shù)據(jù)增強(qiáng),就相當(dāng)于游戲設(shè)計(jì)中的“過程生成”。兩者都是通過隨機(jī)數(shù)據(jù),讓玩家能夠透過現(xiàn)象看到本質(zhì)。
3. 數(shù)學(xué)化的網(wǎng)絡(luò)科學(xué)
在未來會(huì)有哪些突破?
在機(jī)器學(xué)習(xí)成為主流之前,AI領(lǐng)域常用的方法是從一系列可能的解中,通過搜索找出(局部)最優(yōu)解。將該類方法,應(yīng)用到游戲生成中,下面是一個(gè)典型的案例[1],即自動(dòng)生成超級馬里奧的關(guān)卡。
具體方法是將游戲的地圖分為微觀(mirco),中觀(meso)和宏觀(marco)模式,算法的目標(biāo)是根據(jù)不同的難度,設(shè)定需要得出的對應(yīng)宏觀模式,之后通過搜索中觀模式的組合,組成宏觀模式,再通過逐個(gè)搜索不同的微觀模式組合,得到對應(yīng)的中觀模式。
?
通過逐層的自下而上的搜索,該算法能夠根據(jù)最初的游戲地圖,生成在統(tǒng)計(jì)上呈現(xiàn)出相同特征,進(jìn)而具有相近游戲難度的全新關(guān)卡地圖。下圖是超級馬里奧原版的第一關(guān),和由算法生成的第一關(guān)。
?
未來,研究人員和具有科學(xué)頭腦的政策制定者或許可以利用這些進(jìn)展,對尚未觀測到的復(fù)雜網(wǎng)絡(luò)現(xiàn)象進(jìn)行定量預(yù)測。
4 通過深度學(xué)習(xí)生成新游戲:
對抗生成網(wǎng)絡(luò)的例子
對抗生成網(wǎng)絡(luò)(GAN)是近五年來,深度學(xué)習(xí)中進(jìn)展最快的領(lǐng)域之一。如果將生成新的超級馬里奧的任務(wù)交給GAN,它會(huì)怎樣完成?18年的ACM論文給出了回答[2]。
?
該文采用深度卷積對抗神經(jīng)網(wǎng)絡(luò),使用已有游戲地圖的一部分,作為訓(xùn)練數(shù)據(jù),通過生成器,產(chǎn)生新的游戲地圖,再通過判別器,判斷生成的游戲地圖,是不是和真實(shí)地圖類似。之后通過在最初的圖片中進(jìn)行修改,據(jù)此迭代,不斷改進(jìn)生成器。
?
由此,使得生成的地圖中,先不會(huì)諸如出現(xiàn)QQ號(hào)碼拍賣平臺(tái)無法跳過的溝等影響可玩性的特征,再逐漸模仿不同難度的游戲關(guān)卡中所會(huì)出現(xiàn)的障礙物,使得生成的游戲地圖具有相近的難度。
相比傳統(tǒng)的方法,基于GAN的關(guān)卡生成,能夠在玩家游戲的過程中,根據(jù)玩家的操作,動(dòng)態(tài)地改變下一關(guān)游戲的難度,這是傳統(tǒng)的基于搜索的方法無法實(shí)現(xiàn)的。除此之外,還能按照特定的目標(biāo),設(shè)計(jì)關(guān)卡。
例如,如果想要玩家在游戲中盡可能多的跳躍,通過修改GAN的約束條件,可以生成左圖的地圖,而若想要最小化跳躍,則可以生成類似右圖的關(guān)卡。
5 通過強(qiáng)化學(xué)習(xí)生成游戲
另一類生成游戲關(guān)卡的方式,是強(qiáng)化學(xué)習(xí)。如果要用強(qiáng)化學(xué)習(xí)生成超級馬里奧的地圖,算法需要一個(gè)估值函數(shù),計(jì)算不同游戲圖片,距離理想的關(guān)卡有多遠(yuǎn)。和GAN類似,強(qiáng)化學(xué)習(xí)范式下,同樣是從隨機(jī)的關(guān)卡開始,不斷改進(jìn),通過迭代完善設(shè)計(jì)。不同的是,由于估值函數(shù)的存在,每一次的改變不是隨機(jī)的,而是有方向的。
?
上圖中[3],關(guān)鍵的一點(diǎn)是如何對游戲的設(shè)計(jì)進(jìn)行表征,不同的表征,決定了設(shè)計(jì)出的游戲關(guān)卡會(huì)具有不同的特征。上圖中的估值函數(shù),除了判斷相比上一次,本次生成的游戲關(guān)卡是不是更優(yōu),還會(huì)判斷生成的關(guān)卡是否是“可玩的”,如果是,則停止迭代。
?
例如推箱子這個(gè)游戲,玩家通過上下左右,操縱小人行動(dòng),推動(dòng)箱子到指定的位置,則算通關(guān),上圖是推箱子地圖的二維矩陣表示。每輪迭代,修改的就是左圖的矩陣。
設(shè)計(jì)游戲關(guān)卡的智能體(agent),需要在給定箱子和目標(biāo)的距離時(shí),讓小人走的步數(shù)盡可能多,從而提升游戲的難度,這就是前文提到的獎(jiǎng)勵(lì)函數(shù)。
而如何判斷每張地圖需要多少步才能走完,則需要智能體通過搜索完成。如果搜索時(shí),智能體只能記住這一步所走格子和改變的那個(gè)格子狀態(tài),那么稱之為狹窄表征;如果能記住運(yùn)行方向上的每個(gè)格子以及自己改變了那些格子的狀態(tài),稱之為Turtle式的表征;而如果能記住當(dāng)前格子周圍所有格子的狀態(tài),稱為寬表征。
?
上圖中,最左列是初始的隨機(jī)游戲地圖;之后的三列,分別是不同表征下,生成的游戲關(guān)卡。如果將18部以內(nèi)就能完成的關(guān)卡定義為簡單難度,那么不同的表征下,產(chǎn)生的簡單關(guān)卡的比例分別是86.7%,88.3%,以及67.5%,由此說明不同的表征方式會(huì)設(shè)計(jì)出游戲的難度。
在強(qiáng)化學(xué)習(xí)的框架下進(jìn)行游戲設(shè)計(jì),該文指出了3條經(jīng)驗(yàn),一是需要初始條件不同,二是需設(shè)定合適的估值函數(shù),三是每次迭代變化的比例要小,以免算法收斂到相近的解,使得生成的關(guān)卡大同小異。
6 提升走路機(jī)器人的可靠性,讓它玩游戲通關(guān)
與通過機(jī)器學(xué)習(xí),提升游戲中關(guān)卡生成相對應(yīng)的,是利用生成的關(guān)卡,來提升機(jī)器學(xué)習(xí)模型的魯棒性。下面的例子,來自Uber的AI實(shí)驗(yàn)室[4],該研究的目標(biāo)是訓(xùn)練一個(gè)能夠雙足站立行走的機(jī)器人操控算法。
?
傳統(tǒng)上,通過進(jìn)化算法,能夠訓(xùn)練操控算法適應(yīng)不同的環(huán)境。但是通過生成一組包含大量斜坡的訓(xùn)練環(huán)境,再生成一組包含大量深谷的環(huán)境,可以定向地訓(xùn)練操控算法在特定環(huán)境下,該如何行走,從而使得算法能夠逐個(gè)攻克不同環(huán)境中面對的障礙。
?
在訓(xùn)練過程中,如果在某類障礙中遇到困難,訓(xùn)練算法,會(huì)生成類似的環(huán)境副本,讓智能體先在該環(huán)境副本中學(xué)習(xí)如何越過障礙,之后,再在原環(huán)境中行走。
通過引入環(huán)境副本,在相同的計(jì)算量下,由于智能體采取了更好的,在環(huán)境副本中學(xué)到的走路姿勢,能夠獲得更高的得分,并有更大的幾率,在挑戰(zhàn)更高的路段上走完全程。由此提升了算法的泛化能力。
?
另一個(gè)通過游戲來提升AI泛化能力的例子,來自馬斯克的openAI實(shí)驗(yàn)室,是訓(xùn)練機(jī)器手玩魔方[5],通過強(qiáng)化學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò),借助玩魔方這樣一個(gè)封閉環(huán)境下的任務(wù),研究者提升了對機(jī)械手的控制和手眼協(xié)調(diào)能力,提升了機(jī)械手在實(shí)際應(yīng)用場景下的泛化能力。
在強(qiáng)化學(xué)習(xí)中,通過生成新的游戲關(guān)卡,也可以提升訓(xùn)練的游戲AI的可泛化性[6],對比在單一難度,人類設(shè)計(jì)的關(guān)卡,以及由算法設(shè)計(jì)的關(guān)卡上訓(xùn)練的游戲AI,結(jié)果顯示,基于算法設(shè)計(jì)的關(guān)卡,需要更少的訓(xùn)練時(shí)間,能取得更高的訓(xùn)練精度。
7 過程生成面臨的六個(gè)挑戰(zhàn)與機(jī)遇
該綜述的最后一部分,討論游戲規(guī)則生成相關(guān)研究目前面臨著那些挑戰(zhàn)。
首先是相比傳統(tǒng)的機(jī)器學(xué)習(xí)問題,訓(xùn)練數(shù)據(jù)集偏小,例如超級馬里奧中,只有36個(gè)由人手工設(shè)計(jì)的關(guān)卡。
其次是相比生成游戲中的某個(gè)組成部分,由算法產(chǎn)生完整的游戲還相對困難。目前較為成熟的生成完整游戲的案例,是基于生成語言模型CPT-2,產(chǎn)生完整的文本式冒險(xiǎn)游戲。這是由于一個(gè)好的游戲,本身就會(huì)相當(dāng)復(fù)雜,并難以使用一個(gè)簡單的公式來衡量可玩性。
第三點(diǎn)是通過持續(xù)的生產(chǎn)新的游戲關(guān)卡,讓智能體實(shí)現(xiàn)終身學(xué)習(xí)。通過不斷改進(jìn)已學(xué)到的策略,過程生成可以讓智能體不斷適應(yīng)越來越復(fù)雜的環(huán)境。
第四點(diǎn)是如何在強(qiáng)化學(xué)習(xí)范式下,基于過程生成,產(chǎn)生標(biāo)準(zhǔn)的數(shù)據(jù)集和對應(yīng)任務(wù)金標(biāo)準(zhǔn)。之前的強(qiáng)化學(xué)習(xí)任務(wù),大多是人類設(shè)計(jì)的電子游戲。未來,可以讓算法設(shè)計(jì)出新的任務(wù),這些任務(wù)會(huì)模擬動(dòng)物及人類在真實(shí)環(huán)境下所遇到的問題,從而更加準(zhǔn)確地能夠考察強(qiáng)化學(xué)習(xí)模型是否學(xué)到了人類認(rèn)知能力的本質(zhì)。
第五是如何讓游戲中的關(guān)卡設(shè)計(jì),能夠不止應(yīng)用到模擬環(huán)境,還能應(yīng)用到真實(shí)場景中。一個(gè)腦洞的例子是:通過算法生成類似極品風(fēng)車的游戲環(huán)境,讓算法在游戲環(huán)境中,先做到盡可能安全的駕駛,之后在訓(xùn)練真實(shí)無人駕駛的算法時(shí),借鑒模擬算法所具有的特征。
第六點(diǎn)則是,如何將過程生成的本質(zhì),即通過讓學(xué)習(xí)環(huán)境多樣化,提升智能體的泛化能力,應(yīng)用到諸如人類學(xué)習(xí),神經(jīng)科學(xué)等其他領(lǐng)域。例如未來的智能課堂中,要想做到因材施教,就可以通過自動(dòng)設(shè)計(jì)的游戲化交互,提升學(xué)生的學(xué)習(xí)效率。
總結(jié)來看,對于應(yīng)對復(fù)雜系統(tǒng)帶來的挑戰(zhàn),仿真建模與試錯(cuò),一個(gè)是高屋建瓴的重構(gòu)出全局特征,另一個(gè)是自下而上的生成相應(yīng)的認(rèn)知地圖。而游戲領(lǐng)域的過程生成,則是打通了上述兩條路,通過模仿多主體之間已有的模式,產(chǎn)生更多樣化的環(huán)境,從而避免試錯(cuò)過程變成了管中窺豹井底觀天。
不論對于強(qiáng)化學(xué)習(xí),還是有監(jiān)督學(xué)習(xí),引入過程生成,都可以作為一種升級版的數(shù)據(jù)增強(qiáng)技巧,提升模型的泛化能力。另一方面,在使用機(jī)器學(xué)習(xí),產(chǎn)生游戲的過程中,所應(yīng)用的技術(shù),所展現(xiàn)的能力,不止能用于游戲相關(guān)的問題,對眾多其他機(jī)器學(xué)習(xí)領(lǐng)域的任務(wù)都有借鑒意義。
總結(jié)
以上是生活随笔為你收集整理的Nature 机器智能综述:AI如何自动生成游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五个简单的原则,带你写出整洁代码
- 下一篇: 用数学方法分析哪类游戏中的AI难度最大