Nature 機器智慧綜述:AI如何自動生成遊戲
1. 讓遊戲每一次玩都不一樣
通過演算法,產生遊戲中的背景資訊,例如遊戲中的關卡,任務,環境等,在遊戲界被稱為“過程生成”。自從1980年首次提出後,該技術在遊戲界得到了廣泛地應用。從最簡單的俄羅斯方塊,到我的世界Minecraft這樣的開放遊戲,都能見到該技術的身影。
在著名的策略類遊戲“席德梅爾的文明”系列中,每一局遊戲的地圖,都會有所不同,正因如此,使得玩家願意多次玩該遊戲。為了保證每局地圖不一致,一種做法是在遊戲中預設很多地圖,另一種做法是通過演算法,每次開始時自動生成地圖。顯然後者能減少遊戲所需的計算機儲存空間。
圖1:遊戲《文明6》產生的隨機地圖
如何在產生上述地圖時,既保證每一局遊戲的開局都不同,又確保玩家不會由於開局的隨機因素,覺得遊戲難度發生顯著變化。一種可能的生產方式是元胞自動機,通過玩家給定的引數,演算法能夠從某一點出發,逐步依據遊戲設計者預設的規則,逐格擴充套件,產生新的地圖。
2.資料增強,機器學習中的過程生成
在機器學習中,要想提升模型的泛化能力,一種常用的技巧是資料增強(data argumentation),即在有監督學習正規化下,通過加入基於現有訓練資料集,經過特定轉換的模擬資料集,從而擴大訓練資料集包含的多樣性,進而提升訓練得出模型的泛化能力。
具體來看,在貓狗影像分類任務中,可以將原圖拉伸,翻轉,或者裁剪部分割槽域,再將新生成的資料和原資料一起進行訓練。如此訓練出的模型,能夠更好的提取貓和狗的本質特徵,從而使得模型在新資料集上表現更優,穩健型更強。
在強化學習正規化下,通過在訓練環境中引入隨機因素,例如訓練掃地機器人時,每次的環境都有所不同,也可以提升模型的泛化能力。而如果將掃地機器人執行的任務看成一次遊戲,那麼機器學習中的資料增強,就相當於遊戲設計中的“過程生成”。兩者都是通過隨機資料,讓玩家能夠透過現象看到本質。
3. 數學化的網路科學
在未來會有哪些突破?
在機器學習成為主流之前,AI領域常用的方法是從一系列可能的解中,通過搜尋找出(區域性)最優解。將該類方法,應用到遊戲生成中,下面是一個典型的案例[1],即自動生成超級馬里奧的關卡。
具體方法是將遊戲的地圖分為微觀(mirco),中觀(meso)和巨集觀(marco)模式,演算法的目標是根據不同的難度,設定需要得出的對應巨集觀模式,之後通過搜尋中觀模式的組合,組成巨集觀模式,再通過逐個搜尋不同的微觀模式組合,得到對應的中觀模式。
圖2:超級馬里奧中,不同的微觀模式,中觀及巨集觀模式示例圖
通過逐層的自下而上的搜尋,該演算法能夠根據最初的遊戲地圖,生成在統計上呈現出相同特徵,進而具有相近遊戲難度的全新關卡地圖。下圖是超級馬里奧原版的第一關,和由演算法生成的第一關。
圖3:真實和生成的遊戲地圖對比
未來,研究人員和具有科學頭腦的政策制定者或許可以利用這些進展,對尚未觀測到的複雜網路現象進行定量預測。
4 通過深度學習生成新遊戲:
對抗生成網路的例子
對抗生成網路(GAN)是近五年來,深度學習中進展最快的領域之一。如果將生成新的超級馬里奧的任務交給GAN,它會怎樣完成?18年的ACM論文給出了回答[2]。
圖4:深度卷積對抗生成網路結構示意圖
該文采用深度卷積對抗神經網路,使用已有遊戲地圖的一部分,作為訓練資料,通過生成器,產生新的遊戲地圖,再通過判別器,判斷生成的遊戲地圖,是不是和真實地圖類似。之後通過在最初的圖片中進行修改,據此迭代,不斷改進生成器。
圖5:從最左的圖,隨機變化,生成右圖的幾種可能地圖,並隨機選一個進行下一輪迭代
由此,使得生成的地圖中,先不會諸如出現無法跳過的溝等影響可玩性的特徵,再逐漸模仿不同難度的遊戲關卡中所會出現的障礙物,使得生成的遊戲地圖具有相近的難度。
相比傳統的方法,基於GAN的關卡生成,能夠在玩家遊戲的過程中,根據玩家的操作,動態地改變下一關遊戲的難度,這是傳統的基於搜尋的方法無法實現的。除此之外,還能按照特定的目標,設計關卡。
圖6:最大化和最小化跳躍的關卡
例如,如果想要玩家在遊戲中儘可能多的跳躍,通過修改GAN的約束條件,可以生成左圖的地圖,而若想要最小化跳躍,則可以生成類似右圖的關卡。
5 通過強化學習生成遊戲
另一類生成遊戲關卡的方式,是強化學習。如果要用強化學習生成超級馬里奧的地圖,演算法需要一個估值函式,計算不同遊戲圖片,距離理想的關卡有多遠。和GAN類似,強化學習正規化下,同樣是從隨機的關卡開始,不斷改進,通過迭代完善設計。不同的是,由於估值函式的存在,每一次的改變不是隨機的,而是有方向的。
圖7:強化學習生成遊戲的流程圖
上圖中[3],關鍵的一點是如何對遊戲的設計進行表徵,不同的表徵,決定了設計出的遊戲關卡會具有不同的特徵。上圖中的估值函式,除了判斷相比上一次,本次生成的遊戲關卡是不是更優,還會判斷生成的關卡是否是“可玩的”,如果是,則停止迭代。
圖8:推箱子游戲地圖的二維表徵
例如推箱子這個遊戲,玩家通過上下左右,操縱小人行動,推動箱子到指定的位置,則算通關,上圖是推箱子地圖的二維矩陣表示。每輪迭代,修改的就是左圖的矩陣。
設計遊戲關卡的智慧體(agent),需要在給定箱子和目標的距離時,讓小人走的步數儘可能多,從而提升遊戲的難度,這就是前文提到的獎勵函式。
而如何判斷每張地圖需要多少步才能走完,則需要智慧體通過搜尋完成。如果搜尋時,智慧體只能記住這一步所走格子和改變的那個格子狀態,那麼稱之為狹窄表徵;如果能記住執行方向上的每個格子以及自己改變了那些格子的狀態,稱之為Turtle式的表徵;而如果能記住當前格子周圍所有格子的狀態,稱為寬表徵。
圖9:相同初始條件下,不同表徵生成的遊戲關卡難度不同
上圖中,最左列是初始的隨機遊戲地圖;之後的三列,分別是不同表徵下,生成的遊戲關卡。如果將18部以內就能完成的關卡定義為簡單難度,那麼不同的表徵下,產生的簡單關卡的比例分別是86.7%,88.3%,以及67.5%,由此說明不同的表徵方式會設計出遊戲的難度。
在強化學習的框架下進行遊戲設計,該文指出了3條經驗,一是需要初始條件不同,二是需設定合適的估值函式,三是每次迭代變化的比例要小,以免演算法收斂到相近的解,使得生成的關卡大同小異。
6 提升走路機器人的可靠性,讓它玩遊戲通關
與通過機器學習,提升遊戲中關卡生成相對應的,是利用生成的關卡,來提升機器學習模型的魯棒性。下面的例子,來自Uber的AI實驗室[4],該研究的目標是訓練一個能夠雙足站立行走的機器人操控演算法。
圖10:雙足行走的機器人面對的不同型別的環境,例如深谷,斜坡,障礙物等。
傳統上,通過進化演算法,能夠訓練操控演算法適應不同的環境。但是通過生成一組包含大量斜坡的訓練環境,再生成一組包含大量深谷的環境,可以定向地訓練操控演算法在特定環境下,該如何行走,從而使得演算法能夠逐個攻克不同環境中面對的障礙。
圖11:訓練能夠持續下臺階,跳過行進路線中深谷的演算法示意圖
在訓練過程中,如果在某類障礙中遇到困難,訓練演算法,會生成類似的環境副本,讓智慧體先在該環境副本中學習如何越過障礙,之後,再在原環境中行走。
通過引入環境副本,在相同的計算量下,由於智慧體採取了更好的,在環境副本中學到的走路姿勢,能夠獲得更高的得分,並有更大的機率,在挑戰更高的路段上走完全程。由此提升了演算法的泛化能力。
圖12:機器手玩魔方的過程示意圖
另一個通過遊戲來提升AI泛化能力的例子,來自馬斯克的openAI實驗室,是訓練機器手玩魔方[5],通過強化學習和卷積神經網路,藉助玩魔方這樣一個封閉環境下的任務,研究者提升了對機械手的控制和手眼協調能力,提升了機械手在實際應用場景下的泛化能力。
在強化學習中,通過生成新的遊戲關卡,也可以提升訓練的遊戲AI的可泛化性[6],對比在單一難度,人類設計的關卡,以及由演算法設計的關卡上訓練的遊戲AI,結果顯示,基於演算法設計的關卡,需要更少的訓練時間,能取得更高的訓練精度。
7 過程生成面臨的六個挑戰與機遇
該綜述的最後一部分,討論遊戲規則生成相關研究目前面臨著那些挑戰。
首先是相比傳統的機器學習問題,訓練資料集偏小,例如超級馬里奧中,只有36個由人手工設計的關卡。
其次是相比生成遊戲中的某個組成部分,由演算法產生完整的遊戲還相對困難。目前較為成熟的生成完整遊戲的案例,是基於生成語言模型CPT-2,產生完整的文字式冒險遊戲。這是由於一個好的遊戲,本身就會相當複雜,並難以使用一個簡單的公式來衡量可玩性。
第三點是通過持續的生產新的遊戲關卡,讓智慧體實現終身學習。通過不斷改進已學到的策略,過程生成可以讓智慧體不斷適應越來越複雜的環境。
第四點是如何在強化學習正規化下,基於過程生成,產生標準的資料集和對應任務金標準。之前的強化學習任務,大多是人類設計的電子遊戲。未來,可以讓演算法設計出新的任務,這些任務會模擬動物及人類在真實環境下所遇到的問題,從而更加準確地能夠考察強化學習模型是否學到了人類認知能力的本質。
第五是如何讓遊戲中的關卡設計,能夠不止應用到模擬環境,還能應用到真實場景中。一個腦洞的例子是:通過演算法生成類似極品風車的遊戲環境,讓演算法在遊戲環境中,先做到儘可能安全的駕駛,之後在訓練真實無人駕駛的演算法時,借鑑模擬演算法所具有的特徵。
第六點則是,如何將過程生成的本質,即通過讓學習環境多樣化,提升智慧體的泛化能力,應用到諸如人類學習,神經科學等其他領域。例如未來的智慧課堂中,要想做到因材施教,就可以通過自動設計的遊戲化互動,提升學生的學習效率。
總結來看,對於應對複雜系統帶來的挑戰,模擬建模與試錯,一個是高屋建瓴的重構出全域性特徵,另一個是自下而上的生成相應的認知地圖。而遊戲領域的過程生成,則是打通了上述兩條路,通過模仿多主體之間已有的模式,產生更多樣化的環境,從而避免試錯過程變成了管中窺豹井底觀天。
不論對於強化學習,還是有監督學習,引入過程生成,都可以作為一種升級版的資料增強技巧,提升模型的泛化能力。另一方面,在使用機器學習,產生遊戲的過程中,所應用的技術,所展現的能力,不止能用於遊戲相關的問題,對眾多其他機器學習領域的任務都有借鑑意義。
參考資料:
[1] Steve Dahlskog and Julian Togelius. A multi-levellevel generator. In 2014 IEEE Conference on Computational Intelligence and Games, pages 1–8. IEEE,2014.
[2] Volz, V. et al. Evolving mario levels in the latent space of a deepconvolutional generative adversarial network. In Proc. Genetic andEvolutionary Computation Conf. 221–228 (ACM, 2018)
[3] Khalifa, A., Bontrager, P., Earle, S. & Togelius, J. PCGRL: procedural contentgeneration via reinforcement learning. Preprint at https://arxiv.org/abs/2001.09212
[4] Wang, R., Lehman, J., Clune, J. & Stanley, K. O. Paired open-ended trailblazer(poet): endlessly generating increasingly complex and diverse learningenvironments and their solutions. In Proc. Genetic and Evolutionary
[5] Akkaya, I. et al. Solving Rubik’s cube with a robot hand. Preprint https://arxiv.org/abs/1910.07113 (2019).
[6] Justesen, N. et al. Illuminating generalization in deep reinforcement learningthrough procedural level generation. In NeurIPS 2018 Workshop on DeepReinforcement Learning
綜述題目:
Increasing generality in machine learning through procedural content generation
綜述地址:
https://www.nature.com/articles/s42256-020-0208-z
編輯:曾祥軒
來源:集智俱樂部
原文:https://mp.weixin.qq.com/s/_vJ1ZiCUVlw83_kGvKrXDQ
相關文章
- 自動機器學習:最近進展研究綜述機器學習
- GAN生成影象綜述
- GAN生成影像綜述
- GPB | 王向峰綜述:機器學習技術驅動植物AI育種機器學習AI
- 對話機器人ChatBot綜述機器人
- 自動機器學習簡述(AutoML)機器學習TOML
- 李航「機器學習」最全綜述機器學習
- 【機器學習PAI實戰】—— 玩轉人工智慧之綜述機器學習AI人工智慧
- 自動做遊戲(2):自動生成人物行走圖遊戲
- 模擬經營類遊戲(Simulation Game)綜述遊戲GAM
- 自動做遊戲(1):自動生成人物側面圖遊戲
- AutoML研究綜述:讓AI學習設計AITOMLAI
- 用 ai 自動生成 unit testAI
- 全自動生成遊戲已成現實?暢想愷英網路構築的AI遊戲新時代遊戲AI
- AI打王者、星際爭霸……你還不懂背後技術?這有一份遊戲AI綜述AI遊戲
- C#體檢報告管理系統原始碼,支援體檢綜述和建議自動生成C#原始碼
- 萬字綜述之生成對抗網路(GAN)
- 人工智慧技術發展綜述人工智慧
- 2018年智慧機器人技術綜合實訓專題四自動駕駛機器人自動駕駛
- 收藏!機器學習演算法優缺點綜述機器學習演算法
- 生成式AI助力遊戲開發:騰訊推出3D虛擬場景自動生成解決方案AI遊戲開發3D
- 世界頂級AI大神綜述深度學習AI深度學習
- 作為故事敘述夥伴的生成性遊戲·上篇遊戲
- 3D城市自動生成方案升級,騰訊GiiNEX遊戲AI引擎正式亮相3D遊戲AI
- 教育機構如何智慧自動排課?
- 冠狀動脈導絲綜述:
- Spring綜述Spring
- AI打遊戲-伍(遊戲,啟動!)AI遊戲
- 阿里推薦與搜尋引擎-AI·OS綜述阿里AI
- 自動做遊戲(3):行走圖生成工具開放試用遊戲
- SAP 移動開發技術綜述移動開發
- Ai實現FPS遊戲自動瞄準 yolov5fps自瞄AI遊戲YOLO
- 如何自動生成文字摘要
- API安全綜述API
- Spring Bean 綜述SpringBean
- 試著寫一下MMORPG遊戲遊戲的自動掛機遊戲
- SAP智慧機器人流程自動化解決方案機器人
- 自動機器學習和AI初學者指南機器學習AI