1. 程式人生 > 其它 >Deepmind的星際爭霸2強化學習教程(1):建立環境與訓練模型

Deepmind的星際爭霸2強化學習教程(1):建立環境與訓練模型

去年,DeepMind開源將星際爭霸II的強化學習環境公之於眾,很多人都為之興奮。

https://deepmind.com/blog/deepmind-and-blizzard-release-starcraft-ii-ai-research-environment/

我是暴雪遊戲的忠實粉絲,尤其是星際爭霸2,所以我把強化學習環境看成是一個學習的好機會,而且也有很多樂趣。我這篇文章將利用星際爭霸2寫一份建立環境和訓練一些模型的入門教程。

前提

  • IntelliJ (或者PyCharm)
  • Python3
  • 星際爭霸2 (甚至啟動包也在工作)
  • GIT

本教程是基於Mac環境的。

在文章中,我們將執行訓練指令碼,以使用深度Q-Network來解決CollectMineralShards的迷你遊戲。

當我們執行訓練指令碼時,你可以在如下視訊中看到訓練結果。

https://m.youtube.com/watch?v=xpdQYnnxAko&ebc=ANyPxKpYz12v2bTrItOMkx_0vJfOp7RM9Eh2d2JedrlgTQSx2jKElQYgkorgvlAFdWmaXCEeFJ7oNG3qyrSfq1CA0_mcpBdf4Q

教程大綱

1)安裝pysc2

2)Star & Fork pysc2-examples

3)克隆pysc2-examples庫

4)下載迷你遊戲星際爭霸2地圖

5)安裝Tensorflow,基線庫

6)使用IntelliJ(或PyCharm)開啟專案

7)執行訓練指令碼

8)執行預先訓練的模型

現在開始。

1)安裝pysc2

首先,我們將安裝pysc2庫。你可以在終端上輸入命令。(因為我們使用的是python3,所以你必須輸入pip3)

pip3 install pysc2

然後pysc2安裝完畢。

2)Star & Fork pysc2-examples

接下來,開啟右邊的Github連結。https://github.com/chris-chris/pysc2-examples

這是最重要的一步!

3)克隆pysc2-examples庫

讓我們克隆這個專案。你可以使用下面這個簡單的命令克隆儲存庫。

git clone https://github.com/chris-chris/pysc2-examples

然後,你將在計算機上看到“pysc2-examples”目錄。

4)下載迷你遊戲星際爭霸2地圖

在執行訓練指令碼之前,我們必須下載迷你遊戲地圖。並將這些地圖儲存到StarCraft II/Maps目錄中。

下載迷你遊戲地圖:https://github.com/deepmind/pysc2/releases/download/v1.0/mini_games.zip

我是Mac使用者,下面是我的星際爭霸2地圖的位置

/Applications/StarCraft II/Maps/mini_games

如果你是一個Windows使用者,可以在StarCraft II/Maps/mini_games目錄中儲存地圖。

對於Linux使用者,在 ~/StarCraft II/Maps/mini_games目錄中儲存地圖。

5)安裝Tensorflow,基線庫

我們需要更多的庫!比如Google Tensorflow和OpenAI基線庫。你可以通過鍵入下面的命令來安裝這些庫。

pip3 install tensorflow
pip3 install baselines

我使用OpenAI的基線庫實現了增強模型。因為OpenAI的基線庫依賴於Tensorflow,所以我們需要安裝Tensorflow。

我認為OpenAI的基線是Deep Q-Network的最好的實現,這也是我使用它的原因!

我希望閱讀本文的大多數讀者已經安裝了Tensorflow庫:)

6)使用IntelliJ(或PyCharm)開啟專案

通過鍵入下面的命令,訓練將開始。

python3 train_mineral_shards.py

我強烈建議你在IDE(整合開發環境)中開發你的強化學習。這是因為我將使用除錯模式來解釋細節環境變數:)我現在在IntelliJ上執行這個專案。

執行IntelliJ或PyCharm,並且開啟我們克隆的專案資料夾。

然後設定Project Structure.

選擇[File > Project Structure]選單.

在Module SDK上選擇Python3 SDK。 如果你找不到SDK,請單擊[New...]按鈕並新增你的python3二進位制檔案。

7)執行訓練指令碼

然後,讓我們執行訓練指令碼。右鍵單擊train_mineral_shards.py,然後選擇[Run 'train_mineral_shards']選單。

然後在執行星際爭霸2的時候,你會看到控制檯上的日誌。

這是控制檯日誌的簡要說明。

  • steps:我們傳送給海軍陸戰隊(marines)的命令的數量。
  • episodes: 我們玩的遊戲的集數。
  • mean 100 episode reward:上100集的平均獎勵。
  • mean 100 episode min…:上100集的平均礦物。
  • % time spent exploring:探索(探索和開發)的百分比。

目前,我設定了執行2000萬步的訓練指令碼。(它花費了很多時間,所以如果你想在你的筆記本上執行,我建議你將訓練步驟設定為50萬步)。

8)執行預先訓練的模型

我編寫了程式,在所有訓練步驟之後將訓練過的模型儲存到mineral_shards.pkl檔案中。

act.save("mineral_shards.pkl")

如果你想使用這種預先訓練的模型,你可以執行enjoy指令碼。右鍵單擊 enjoy_mineral_shards.py,然後選擇[Run ‘enjoy_mineral_shards’]選單。

然後你就可以看到預先訓練的CollectMineralShards地圖。

結論

在本文中,我介紹了設定環境和對模型進行訓練的方式。

未來的教程

  • 瞭解Deep Q-Network演算法
  • 瞭解星際爭霸2的環境(觀察和行動)
  • 在星際爭霸2的迷你遊戲中,開發Deep Q-Network