DeepMind 一次性開源 3 個新框架!深度強化學習應用落地即將迎來春天?
- 2019 年 10 月 6 日
- 筆記
深度強化學習(Deep Reinforcement Learning,DRL)一直是近年來人工智慧的一些重大突破的核心。然而,儘管 DRL 有了很大的進步,但由於缺乏工具和庫,DRL 方法在主流解決方案中仍然難以應用。因此,DRL 仍然主要是以研究形式存在,並沒有在現實世界看到許多採用機器學習的應用方案;而解決這個問題就需要更好的工具和框架。
就在最近,DeepMind 發布了一系列新的開源技術,包括三種 DRL 框架:OpenSpiel、SpriteWorld 和 Bsuite,這些技術將有助於簡化 DRL 方法的應用。
DRL 框架概述
作為一種新的深度學習技術,DRL 的採用面臨著簡單實現演算法以外的挑戰。例如:用以簡化 DRL 技術應用的訓練數據集、環境、監控優化工具以及精心設計的實驗等。
考慮到 DRL 的機制不同於大多數傳統的機器學習方法,尤其對於 DRL 的情況,這種差異更甚。DRL 智慧體試圖在給定的環境中通過反覆試驗來實現對任務的掌握。在這種情況下,環境和實驗的穩健性在 DRL 智慧體開發的知識中起著重要的作用。
為了實現 DRL 的重大突破,將其更好的應用於重大人工智慧挑戰中,DeepMind 構建了許多專有工具和框架,以大規模簡化 DRL 智慧體的訓練、實驗和管理。並且開放了三種 DRL 框架,包括:OpenSpiel、SpriteWorld 和 bsuite,以便其他研究人員可以使用它們來推進 DRL 方法的現狀。
下面是三種框架的介紹,並附有對應的開源地址。
OpenSpiel
與其他數據集不同,電競筆電質上基於試驗和獎勵機制,可以用來訓練 DRL 智慧體。然而,正如我們所看到的,遊戲環境遠不是簡單的組裝。

OpenSpiel 是一系列環境和演算法的集合,用於研究一般強化學習和遊戲中的搜索/規劃。OpenSpiel 的目的是在許多不同的遊戲類型中促進通用多智慧體的強化學習,其方式與通用遊戲類似,但它重點是強調學習而不是競爭形式。當前版本的 OpenSpiel 包含 20 多種不同類型的遊戲的實現,例如:完全資訊、同步移動、不完全資訊、網格世界遊戲、博弈遊戲和一些普通形式/矩陣遊戲。
OpenSpiel 的核心實現是基於 C++和 Python 綁定,便於在不同的深度學習框架中採用。該框架包含了一系列遊戲組合,允許 DRL 智慧體掌握合作和競爭行為。類似地,OpenSpiel 包含了多種 DRL 演算法組合,例如:搜索、優化和單一智慧體等。OpenSpiel 還包括分析學習動態和其他常見評估指標的工具。
OpenSpiel 支援遊戲類型
- 單人和多人遊戲
- 完全可觀測(通過觀測)和不完全資訊博弈(通過資訊狀態和觀測)
- 隨機性(儘管部分支援隱式隨機性,但主要為不確定事件)
- n人普通形式的「一桿」遊戲和(2人)矩陣遊戲
- 序貫和同時動作遊戲
- 零和、一般和和合作(相同收益)博弈
OpenSpiel 支援語言類型
- C++ 11
- Python 3
- swift 中提供的部分語言
遊戲和實用程式功能(例如:計算)是用 C++編寫的。這些也可以使用 pybind11 python(2.7 和 3)綁定。方法名稱位於 C++中的 CamelCase 和 Python 中的 SnaKeKY 情況(例如,在 C++中的 Apple 動作將是 Python 中的 Stest.Apple)。有關名稱之間的完整映射,請參見 open_spiel/python/pybind11/pyspel.cc 中的 pybind11 定義。
OpenSpiel 已經在 linux 上進行了測試(debian 10 和 ubuntu 19.04),但它還未在 MacOS 或 Windows 上進行測試,由於程式碼使用了 MacOS 和 Windows 上也提供的免費工具,因此 DeepMind 預計在這些平台下編譯和運行不會出現任何(重大)問題。
GitHub 地址:
https://github.com/deepmind/open_spiel
pybind11 地址:
https://pybind11.readthedocs.io/en/stable/
SpriteWorld
幾個月前,DeepMind 發表了一篇論文,介紹了一種基於無監督式目標搜索和好奇心驅動的強化學習模型(Curious Object-Based seaRch Agent,COBRA),它通過使用強化學習來識別給定環境中的對象(相關論文可參考:https://arxiv.org/abs/1905.09275)。
該模型使用了一系列二維遊戲進行訓練,在這些遊戲中數字可以自由移動。用來訓練 COBRA 模型的環境就是最近 deepmind 開源 DRL 三大框架之一,SpriteWorld。

SpriteWorld 是一個基於 python 的強化學習環境,它由一個可以自由移動的簡單形狀的二維競技場組成。更具體地說,SpriteWorld 是一個二維方形競技場,有不同數量的彩色 Sprites,可以自由放置和渲染,但不會發生碰撞。SpriteWorld 環境基於一系列關鍵特徵:
- 多目標的競技場反映了真實世界的組成,雜亂的物體場景可以用於共享特徵,同時也可以獨立移動。這也提供了測試與任務無關的特徵/目標的穩健性和組合泛化的方法。
- 連續點擊和推動動作空間的結構反映了世界空間和運動的結構。它還允許智慧體在任何方向上移動任何可見對象。
- 目標的概念並非以任何特權方式所提供(例如:操作空間中沒有特定目標的組件),並且完全可以由智慧體發現。
SpriteWorld 為每個 DRL 智慧體提供三項主要的訓練任務:
- 目標搜索。智慧體必須將一組目標(可通過某些功能識別,例如:綠色的目標)帶到螢幕上的隱藏位置,忽略干擾對象(例如:非綠色的目標);
- 排序。智慧體必須根據目標的顏色將每個目標帶到規定的位置;
- 聚類。智慧體必須根據目標的顏色將其分組排列在群集中。
SpriteWorld 也可以用於強化學習以外的其他目的。例如:它被用於生成具有控制因子分布的影像數據集,如論文「Spatial Broadcast Decoder: A Simple Architecture for Learning Disentangled Representations in VAEs」(watters 等人,2019,https://arxiv.org/abs/1901.07017)。
它還可以很容易地擴展到生成與簡單物理力(如彈簧、重力等)相互作用的物體的數據集,這對於視覺動力學的無監督學習研究是有用的。
GitHub 地址:
https://github.com/deepmind/spriteworld
bsuite
我們試圖將 bsuite(Behaviour Suite for Reinforcement Learning,強化學習行為套件)打造成為強化學習領域 的 MNIST。

具體而言,bsuite 是一系列實驗,旨在突出智慧體可擴展性的關鍵點。這些實驗都體現了一些基本的問題,例如「探索」或「記憶」,其實驗方式可以很容易地進行測試和迭代。bsuite 有兩個主要目標:
- 收集清晰、資訊量豐富且可擴展的問題,這些問題捕獲了高效和通用學習演算法設計中的關鍵問題;
- 通過在這些共享基準上的表現來研究智慧體的行為。
bsuite 的當前實現可以在不同環境中自動執行手實驗,並收集了相應的指標,這些指標可以簡化 DRL 智慧體的訓練。同時,因為 bsuite 是一系列實驗的集合,所以它在實驗子目錄中定義。每個子目錄對應一個實驗,包含:
- 定義強化學習環境的一種文件,它可以配置為提供不同的難度等級或不同的隨機種子(for example);
- 此環境的關鍵字參數序列,在實驗的 sweep.py 文件中的 settings 變數中定義;
- 一個 analysis.py 文件,用於定義所提供的 jupyter 電腦中使用的繪圖;
當通過載入和記錄*函數載入環境時,bsuite 通過記錄每個環境中的結果來工作。這意味著任何實驗都將自動輸出正確格式的數據,以便使用電腦進行分析,而不受任何智慧體或演算法結構的限制。
GitHub 地址:
https://github.com/deepmind/bsuite
原文鏈接: https://towardsdatascience.com/deepmind-quietly-open-sourced-three-new-impressive-reinforcement-learning-frameworks-f99443910b16