DeepMind一次性開源3個新框架!深度強化學習應用落地即將迎來春天?
本文轉自雷鋒網(wǎng),如需轉載請至雷鋒網(wǎng)官網(wǎng)申請授權。
深度強化學習(Deep Reinforcement Learning,DRL)一直是近年來人工智能的一些重大突破的核心。然而,盡管 DRL 有了很大的進步,但由于缺乏工具和庫,DRL 方法在主流解決方案中仍然難以應用。因此,DRL 仍然主要是以研究形式存在,并沒有在現(xiàn)實世界看到許多采用機器學習的應用方案;而解決這個問題就需要更好的工具和框架。
就在最近,DeepMind 發(fā)布了一系列新的開源技術,包括三種 DRL 框架:OpenSpiel、SpriteWorld 和 Bsuite,這些技術將有助于簡化 DRL 方法的應用。
DRL 框架概述
作為一種新的深度學習技術,DRL 的采用面臨著簡單實現(xiàn)算法以外的挑戰(zhàn)。例如:用以簡化 DRL 技術應用的訓練數(shù)據(jù)集、環(huán)境、監(jiān)控優(yōu)化工具以及精心設計的實驗等。
考慮到 DRL 的機制不同于大多數(shù)傳統(tǒng)的機器學習方法,尤其對于 DRL 的情況,這種差異更甚。DRL 智能體試圖在給定的環(huán)境中通過反復試驗來實現(xiàn)對任務的掌握。在這種情況下,環(huán)境和實驗的穩(wěn)健性在 DRL 智能體開發(fā)的知識中起著重要的作用。
為了實現(xiàn) DRL 的重大突破,將其更好的應用于重大人工智能挑戰(zhàn)中,DeepMind 構建了許多專有工具和框架,以大規(guī)模簡化 DRL 智能體的訓練、實驗和管理。并且開放了三種 DRL 框架,包括:OpenSpiel、SpriteWorld 和 bsuite,以便其他研究人員可以使用它們來推進 DRL 方法的現(xiàn)狀。
下面是三種框架的介紹,并附有對應的開源地址。
OpenSpiel
與其他數(shù)據(jù)集不同,游戲本質上基于試驗和獎勵機制,可以用來訓練 DRL 智能體。然而,正如我們所看到的,游戲環(huán)境遠不是簡單的組裝。
OpenSpiel 是一系列環(huán)境和算法的集合,用于研究一般強化學習和游戲中的搜索/規(guī)劃。OpenSpiel 的目的是在許多不同的游戲類型中促進通用多智能體的強化學習,其方式與通用游戲類似,但它重點是強調學習而不是競爭形式。當前版本的 OpenSpiel 包含 20 多種不同類型的游戲的實現(xiàn),例如:完全信息、同步移動、不完全信息、網(wǎng)格世界游戲、博弈游戲和一些普通形式/矩陣游戲。
OpenSpiel 的核心實現(xiàn)是基于 C++和 Python 綁定,便于在不同的深度學習框架中采用。該框架包含了一系列游戲組合,允許 DRL 智能體掌握合作和競爭行為。類似地,OpenSpiel 包含了多種 DRL 算法組合,例如:搜索、優(yōu)化和單一智能體等。OpenSpiel 還包括分析學習動態(tài)和其他常見評估指標的工具。
OpenSpiel 支持游戲類型
-
單人和多人游戲
-
完全可觀測(通過觀測)和不完全信息博弈(通過信息狀態(tài)和觀測)
-
隨機性(盡管部分支持隱式隨機性,但主要為不確定事件)
-
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 已經(jīng)在 linux 上進行了測試(debian 10 和 ubuntu 19.04),但它還未在 MacOS 或 Windows 上進行測試,由于代碼使用了 MacOS 和 Windows 上也提供的免費工具,因此 DeepMind 預計在這些平臺下編譯和運行不會出現(xiàn)任何(重大)問題。
GitHub 地址:https://github.com/deepmind/open_spiel
pybind11 地址:https://pybind11.readthedocs.io/en/stable/
SpriteWorld
幾個月前,DeepMind 發(fā)表了一篇論文,介紹了一種基于無監(jiān)督式目標搜索和好奇心驅動的強化學習模型(Curious Object-Based seaRch Agent,COBRA),它通過使用強化學習來識別給定環(huán)境中的對象(相關論文可參考:https://arxiv.org/abs/1905.09275)。
該模型使用了一系列二維游戲進行訓練,在這些游戲中數(shù)字可以自由移動。用來訓練 COBRA 模型的環(huán)境就是最近 deepmind 開源 DRL 三大框架之一,SpriteWorld。
SpriteWorld 是一個基于 python 的強化學習環(huán)境,它由一個可以自由移動的簡單形狀的二維競技場組成。更具體地說,SpriteWorld 是一個二維方形競技場,有不同數(shù)量的彩色 Sprites,可以自由放置和渲染,但不會發(fā)生碰撞。SpriteWorld 環(huán)境基于一系列關鍵特征:
-
多目標的競技場反映了真實世界的組成,雜亂的物體場景可以用于共享特征,同時也可以獨立移動。這也提供了測試與任務無關的特征/目標的穩(wěn)健性和組合泛化的方法。
-
連續(xù)點擊和推動動作空間的結構反映了世界空間和運動的結構。它還允許智能體在任何方向上移動任何可見對象。
-
目標的概念并非以任何特權方式所提供(例如:操作空間中沒有特定目標的組件),并且完全可以由智能體發(fā)現(xiàn)。
SpriteWorld 為每個 DRL 智能體提供三項主要的訓練任務:
-
目標搜索。智能體必須將一組目標(可通過某些功能識別,例如:綠色的目標)帶到屏幕上的隱藏位置,忽略干擾對象(例如:非綠色的目標);
-
排序。智能體必須根據(jù)目標的顏色將每個目標帶到規(guī)定的位置;
-
聚類。智能體必須根據(jù)目標的顏色將其分組排列在群集中。
SpriteWorld 也可以用于強化學習以外的其他目的。例如:它被用于生成具有控制因子分布的圖像數(shù)據(jù)集,如論文「Spatial Broadcast Decoder: A Simple Architecture for Learning Disentangled Representations in VAEs」(watters 等人,2019,https://arxiv.org/abs/1901.07017)。
它還可以很容易地擴展到生成與簡單物理力(如彈簧、重力等)相互作用的物體的數(shù)據(jù)集,這對于視覺動力學的無監(jiān)督學習研究是有用的。
GitHub 地址:https://github.com/deepmind/spriteworld
bsuite
我們試圖將 bsuite(Behaviour Suite for Reinforcement Learning,強化學習行為套件)打造成為強化學習領域 的 MNIST。
具體而言,bsuite 是一系列實驗,旨在突出智能體可擴展性的關鍵點。這些實驗都體現(xiàn)了一些基本的問題,例如「探索」或「記憶」,其實驗方式可以很容易地進行測試和迭代。bsuite 有兩個主要目標:
-
收集清晰、信息量豐富且可擴展的問題,這些問題捕獲了高效和通用學習算法設計中的關鍵問題;
-
通過在這些共享基準上的表現(xiàn)來研究智能體的行為。
bsuite 的當前實現(xiàn)可以在不同環(huán)境中自動執(zhí)行手實驗,并收集了相應的指標,這些指標可以簡化 DRL 智能體的訓練。同時,因為 bsuite 是一系列實驗的集合,所以它在實驗子目錄中定義。每個子目錄對應一個實驗,包含:
-
定義強化學習環(huán)境的一種文件,它可以配置為提供不同的難度等級或不同的隨機種子(for example);
-
此環(huán)境的關鍵字參數(shù)序列,在實驗的 sweep.py 文件中的 settings 變量中定義;
-
一個 analysis.py 文件,用于定義所提供的 jupyter 計算機中使用的繪圖;
當通過加載和記錄*函數(shù)加載環(huán)境時,bsuite 通過記錄每個環(huán)境中的結果來工作。這意味著任何實驗都將自動輸出正確格式的數(shù)據(jù),以便使用計算機進行分析,而不受任何智能體或算法結構的限制。
GitHub 地址:https://github.com/deepmind/bsuite