DeepMind開源強化學習遊戲框架,25款線上遊戲等你來挑戰

機器之心發表於2019-08-28
強化學習演算法沒有遊戲訓練?DeepMind 開源 OpenSpiel 平臺了。研究者可線上部署遊戲環境,快速開始實驗。

DeepMind開源強化學習遊戲框架,25款線上遊戲等你來挑戰

強化學習演算法廣為人知的一個應用場景便是遊戲了,通過智慧體在多玩家遊戲中的表現,研究者可以更好地調整演算法和引數細節,實現更好的演算法效能。近日,DeepMind 開源了一款多玩家遊戲平臺「Open-Spiel」,支援多種策略和遊戲環境,以及相關的分析工具。支援的遊戲數量達到了 25 款,絕大多數都和棋牌、博弈相關。

  • 專案地址:https://github.com/deepmind/open_spiel

什麼是 OpenSpiel

OpenSpiel 是一個綜合性的強化學習遊戲測試平臺,包括了多種遊戲環境和演算法,用於強化學習研究或搜尋策略的研究。

OpenSpiel 亮點

OpenSpiel 可以幫助研究者解決很多強化學習研究中需要設定實驗的問題,它支援:

  • 單人或多人博弈;

  • 完美資訊或不完美資訊博弈

  • 帶有隨機性的博弈;

  • 普通的多玩家「一步」或二人玩家的多步博弈;

  • 交替行動(如下棋)或同時行動的遊戲;

  • 零和博弈和非零和博弈(如需要合作的博弈等)。

OpenSpiel 平臺也支援多種程式語言:

  • C++11

  • Python 3

  • 以及一個支援 Swift 語言的縮減版

支援平臺

目前 OpenSpiel 已經在 Linux 系統上進行了測試(Debian 10 和 Ubuntu 19.04),但是沒有在 MacOS 或 Windows 上測試過。但是因為後兩個平臺都可以自由使用程式碼,因此作者認為不太可能出現大的問題。

支援遊戲

OpenSpiel 目前支援以下游戲,共 25 款,包括國際象棋、圍棋、雙陸棋、翻轉棋等遊戲:

DeepMind開源強化學習遊戲框架,25款線上遊戲等你來挑戰

DeepMind開源強化學習遊戲框架,25款線上遊戲等你來挑戰

OpenSpiel 怎麼用

首先,我們先要明確,在 OpenSpiel 中 Game 物件包含了對某個遊戲非常高層次的描述,例如遊戲的方式、參與人數、最大分數等。而 State 物件描述了更加具體的遊戲局,例如象棋中特定的棋子狀態、撲克中特定的手牌組合。通過這兩個物件,整個遊戲都是通過樹來表示的。

OpenSpiel 首先需要載入遊戲,配置遊戲進行方式,然後就可以直接執行了。如下所示為玩 trajectory 遊戲的 Python 程式碼:

import random
import pyspiel

game = pyspiel.load_game("kuhn_poker")
state = game.new_initial_state()

while not state.is_terminal():
  legal_actions = state.legal_actions()
  if state.is_chance_node():
    # Sample a chance event outcome.
    outcomes_with_probs = state.chance_outcomes()
    action_list, prob_list = zip(*outcomes_with_probs)
    action = np.random.choice(action_list, p=prob_list)
    state.apply_action(action)
  else:
    # The algorithm can pick an action based on an observation (fully observable
    # games) or an information state (information available for that player)
    # We arbitrarily select the first available action as an example.
    action = legal_actions[0]
    state.apply_action(action)

如上展示了 OpenSpiel 比較核心的 API,它的使用還是很簡潔的。

安裝方法

安裝整個平臺的方法比較簡單。首先執行 ./install.sh 一次,安裝系統包,並下載一些依賴。安裝 Python 的相關依賴,需要使用 Pyhton3 和 virtualenv。

virtualenc -p python3 venv
source venv/bin/activate
pip3 install -r requirements.txt

保證環境有效的情況下,編譯並執行

mkdir build
cd build
CXX=g++ cmake -DPython_TARGET_VERSION=3.6 -DCMAKE_CXX_COMPILER=${CXX} ../open_spiel
make -j$(nproc)
ctest -j$(nproc)

./open_spiel/scripts/build_and_run_tests.sh

將檔案加入系統路徑,以便系統全域性都能夠匯入相關包。

export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel>
export PYTHONPATH=$PYTHONPATH:/<path_to_open_spiel>/build/python

相關文章