天天看點

使用GCP開發帶有強化學習功能的Roguelike遊戲

強化學習(RL)的許多應用都是專門針對将人工從訓練循環中脫離而設計的。例如,OpenAI Gym [1]提供了一個訓練RL模型以充當Atari遊戲中的玩家的架構,許多問紮根都描述了将RL用于機器人技術。但是,一個通常讨論不足的領域是應用RL方法來改善人們的主觀體驗。

為了示範這種類型應用,我開發了一個簡單的遊戲,叫做“Trials of the Forbidden Ice Palace” [2]。該遊戲使用強化學習,通過為使用者量身定制遊戲難度來改善使用者體驗。

遊戲如何運作

該遊戲是傳統的Roguelike遊戲:具有RPG元素和大量程式生成的基于回合的地牢探索類遊戲。玩家的目标是逐層逃離冰宮,與怪物戰鬥并沿途收集有用的物品。傳統上會随機生成出現在每層樓上的敵人和物品,但該遊戲允許RL模型根據收集到的資料生成這些實體。

衆所周知,強化學習算法需要大量資料,是以在建立遊戲時要遵循以下限制條件,以減少RL模型的複雜性:

1)遊戲共有10層,之後玩家獲得了勝利

2)每層可以産生的敵人和物品的數量是固定的

強化學習和環境

強化學習的核心概念是自動代理(Agent)通過觀察和采取行動(Action)與環境(Env)互相作用,如圖1所示。通過與環境的互動,代理可以獲得獎勵(積極的或消極的),代理利用這些獎勵來學習和影響未來的決策。

使用GCP開發帶有強化學習功能的Roguelike遊戲

對于這個應用程式,代理是RL算法,它根據它選擇生成的實體來調整遊戲的難度,遊戲是RL算法可以觀察和控制的環境。

狀态 State

狀态是指代理對環境所做的任何觀察,可以用來決定采取哪些行動。雖然有大量的不同的資料代理可能觀察(玩家血量,玩家所需的回合數,等),遊戲的第一個版本的變量隻考慮地闆已達到和玩家的水準的玩家的性格。

行動 Actions

由于遊戲的程式生成特性,代理将決定随機生成怪物/道具,而不是每次都有一個确定性的決定。由于遊戲中存在大量的随機性元素,代理并不會以典型的RL方式進行探索,而是控制不同敵人/道具在遊戲中生成的權重機率。

當代理選擇行動時,基于迄今為止學習到的最佳模式,它将通過學習到的Q矩陣權重随機抽樣來決定在遊戲中産生哪個敵人/道具;反之,如果代理選擇探索,代理就會從遊戲中所有實體中産生機率相等的敵人/物品。

獎勵 Reward

強化學習算法的獎勵模型對于開發學習的模型應顯示的預期行為至關重要,因為機器學習都會采用走捷徑的方法來實作其目标。由于預期的目标是使玩家獲得最大的享受,是以做出了以下假設,以根據RL算法的獎勵來量化樂趣:

-玩家在遊戲中進一步前進,而不是過早死亡會對玩家産生更多樂趣

-在沒有挑戰的情況下玩家每次獲勝的遊戲都會很無聊

考慮到這些目标,當玩家進入表I所示的新樓層時,以及如表II所述的遊戲完成時,RL模型都會獲得獎勵。

表一:玩家晉升獎勵模型

使用GCP開發帶有強化學習功能的Roguelike遊戲

表二:完成遊戲的獎勵模式

使用GCP開發帶有強化學習功能的Roguelike遊戲

考慮到上面的程序和完成分數機制,RL算法将通過允許玩家前進到第8層而最大化獎勵,在這一點上玩家将最終遭遇死亡。為了最小化意外行為的可能性,RL算法也會因為玩家過早死亡而受到懲罰。

更新模型

RL算法采用了Q-Learning,該算法經過改進以适應Agent執行的随機行為。在傳統的Q-Learning[3]中,一個代理在每個狀态之間采取1個行動,而在此基礎上,代理的行動将根據在地闆上生成的所有敵人/物品的機率分布進行更新,如下式所示。

使用GCP開發帶有強化學習功能的Roguelike遊戲

其中Q'(s_t,a_t)是Q矩陣的更新值,Q(s_t,a_t)是狀态s的Q矩陣,并且在時間步長t上有一對動作,α是學習率,r_t是提供的獎勵 從過渡到狀态t + 1時,γ是折現因子,上劃線分量是基于時間步t + 1的平均回報對未來價值的估計。

通過GCP實作全局化RL訓練

全局AI模型使用所有玩家收集的遊戲資料進行訓練,當玩家還沒有玩過遊戲時,全局AI模型作為基礎RL模型。新玩家在第一次開始遊戲時将獲得全局化RL模型的本地副本,這将在他們玩遊戲時根據自己的遊戲風格進行調整,而他們的遊戲資料将用于進一步增強全局AI模型,供未來的新玩家使用。

使用GCP開發帶有強化學習功能的Roguelike遊戲

圖2所示的架構概述了如何收集資料以及如何更新和分發全局模型。使用GCP是因為他們的免費使用産品最适合收集和存儲遊戲資料的模型訓練[4]。在這方面,遊戲會例行地調用GCP的雲函數來存儲Firebase資料庫中的資料。

結論

本文介紹的工作描述了如何使用強化學習來增強玩家玩遊戲的體驗,而不是更常見的用于自動化人類動作的RL應用程式。我們使用免費GCP架構的元件收集所有玩家的遊戲會話資料,進而建立全局RL模型。雖然玩家開始遊戲時使用的是全局RL模式,但他們的個人體驗會創造一個定制的局部RL模式,以更好地适應自己的遊戲風格。

參考

[1] OpenAI Gym, https://gym.openai.com

[2] RoguelikeRL — Trials of the Forbidden Ice Palace, https://drmkgray.itch.io/roguelikerl-tfip

[3] Kaelbling L. P., Littman M. L., & Moore A. W. (1996). Reinforcement Learning: A Survey. Journal of Artificial Intelligence Research, 4, 237–285. https://arxiv.org/pdf/cs/9605103.pdf

[4] GCP Free Tier, https://cloud.google.com/free

作者:Matt Gray

原文位址:https://towardsdatascience.com/developing-a-roguelike-game-with-reinforcement-learning-using-gcp-46a9b2f5ca3

deephub翻譯組