DeepMind一次性開源3個新框架!深度強化學習應用落地即將迎來春天?
本文轉自雷鋒網,如需轉載請至雷鋒網官網申請授權。
深度強化學習(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