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