- 深度強化學習算法與實踐:基于PyTorch的實現
- 張校捷編著
- 1356字
- 2022-05-06 17:08:42
3.4.1 PySC2 強化學習環境
《星際爭霸》是暴雪娛樂公司(Blizzard Entertainment)開發的一款歷史悠久的即時策略(Real-Time Strategy, RTS)游戲,這類游戲的特點是游戲有一張巨大的地圖,地圖中有數個資源點,玩家的視角只能局限于地圖的一部分,同時需要考慮在地圖的不同部分進行資源的搜索、采集,以及使用資源建造和升級建筑,然后使用建筑制造軍隊打敗對手。從前面的介紹可以看出,這類游戲是非常復雜的。實際上,對于環境的觀測,并得到當前環境的狀態,要求智能體對地圖的不同部分進行采樣,因為智能體每時每刻只能觀察到地圖的一小部分;同時,在智能體的每一步決策中,大約有108種可能的動作,而且對應的強化學習的獎勵非常稀疏,我們只能在游戲結束的時候才知道智能體的操作最終能夠獲得多少獎勵(當然《星際爭霸》游戲本身內置了游戲分數,可以作為獎勵的一部分加入到強化學習環境中緩解這個問題)。另外,智能體的決策過程非常漫長,每一次游戲包含了數千次決策和動作,而早期的決策往往對后期的結果有著深遠的影響。
為了研究類似于這種復雜游戲的強化學習算法,DeepMind開發了PySC2強化學習環境,來讓智能體能夠更方便地獲取當前游戲的狀態。具體的強化學習環境和強化學習算法之間的相互作用如圖3.9所示(圖片來源為本書參考文獻7)。根據圖3.9可以看出,從PySC2的強化學習環境出發,環境提供了當前可用的資源(resources)、可能的動作(available_actions),以及建筑隊列(build_queue)這三個狀態;同時還有當前屏幕的視角(當前智能體視角能獲取的一小部分地圖的信息)和小地圖視角(全局整體地圖狀態的縮略圖)這兩個狀態(圖像特征)。根據這些輸入的狀態,智能體做出具體的決策,并將動作傳遞給強化學習環境獲取對應的獎勵。

圖3.9 基于PySC2的強化學習算法決策過程示意圖
為了使用PySC2強化學習環境,首先需要安裝對應的Python庫,具體只需要執行命令pip install pysc2,即可安裝。如果讀者使用的是Linux操作系統,需要從暴雪公司(Blizzard)的游戲GitHub站點的s2client-proto項目下下載對應的游戲版本的客戶端,并將這些客戶端解壓到~/StarCraftII/目錄下。如果是Windows/MacOS操作系統,可以直接安裝暴雪公司的游戲客戶端,即可使用PySC2強化學習環境。由于這個強化學習環境非常復雜,下面僅舉一個簡單的例子說明如何使用這個強化學習環境。
代碼3.10展示了如何使用這個強化學習環境(這里只是截取了關鍵一部分,所有可運行的代碼請參考ex_3_10.py)。
代碼3.10 PySC2強化學習環境使用示例。

首先需要初始化強化學習的地圖,在每一個片段開始的時候,將會隨機從地圖中選取其中一幅地圖。然后需要定義的是強化學習的玩家,這里使用兩個玩家,第一個玩家是我們的智能體,采用隨機的種族(《星際爭霸》游戲中的概念,具體有神族、蟲族和人族三個種族),第二個玩家是《星際爭霸》的機器人,具體的種族是蟲族,難度為簡單,策略為進攻型策略(Rush)。接下來定義的是智能體的一些具體參數agent_interface_format,包括圖像特征的大小、動作空間的大小等,具體的定義請參考ex_3_10.py。然后就是重復執行的步數step_mul,以及每個片段執行的步數game_steps_per_episode。定義完強化學習環境之后,就能獲取具體的觀測狀態obs,以及對應的有效的動作空間obs.available_actions(因為在《星際爭霸》游戲中,有效的動作空間和當前的狀態有關,因此這兩個變量會相互關聯)。在代碼3.10中,隨機從有效的動作空間中進行采樣并且執行一步動作,最后獲得一定的獎勵reward。從整個代碼來看,雖然PySC2強化學習環境的配置比較復雜,但是整體的設計思路和前面介紹的幾個強化學習環境還是一致的。
- UI圖標創意設計
- Android開發精要
- Access 數據庫應用教程
- Servlet/JSP深入詳解
- Java Web應用開發技術與案例教程(第2版)
- QGIS:Becoming a GIS Power User
- C++面向對象程序設計習題解答與上機指導(第三版)
- Kotlin從基礎到實戰
- Access 2010數據庫應用技術(第2版)
- C語言從入門到精通
- Statistical Application Development with R and Python(Second Edition)
- Python Essentials
- Java Web應用開發項目教程
- Practical Predictive Analytics
- 青少年學Python(第2冊)