AlphaGo的橫空出世讓我們看到了強(qiáng)化學(xué)習(xí)在圍棋領(lǐng)域的出色應(yīng)用。目前DeepMind推出一款名為“DeepMind Control Suite”的控制套件,該控制套件旨在幫助我們利用強(qiáng)化學(xué)習(xí)技術(shù)實(shí)現(xiàn)對物理實(shí)體的操控,并且已經(jīng)在模擬環(huán)境中進(jìn)行了成功實(shí)驗(yàn)。
DeepMind Control Suite是一組連續(xù)的控制任務(wù),具有標(biāo)準(zhǔn)化的結(jié)構(gòu)和可解釋性的獎(jiǎng)勵(lì),旨在作為強(qiáng)化學(xué)習(xí)智能體的性能基準(zhǔn)。這些任務(wù)是用Python編寫的,由MuJoCo物理引擎驅(qū)動,從而使得它們易于使用和修改。我們這里涵蓋了幾個(gè)學(xué)習(xí)算法的基準(zhǔn)。你如果對這方面比較感興趣,可以在github.com/deepmind/dm_control上獲得公開的控制套件(Control Suite),而所有任務(wù)的相關(guān)視頻總結(jié)等可在youtu.be/rAai4QzcYbs上獲得。
可以這樣說,控制物質(zhì)世界是通用智能一個(gè)不可分割的組成部分,也可以說是通用智能的一個(gè)先決條件。事實(shí)上,唯一已知的通用智能的例子就是靈長類動物,他們操縱這個(gè)世界已經(jīng)有數(shù)百萬年的時(shí)間了。
物理控制任務(wù)有許多共同的屬性,而且,將它們視為一類獨(dú)特的行為問題是一種明智的選擇。與棋盤游戲、語言和其他符號域不同的是,物理任務(wù)在狀態(tài)、時(shí)間和行為上是基本連續(xù)的。它們的動力學(xué)受二階運(yùn)動方程的影響,而這意味著基礎(chǔ)狀態(tài)是由類似位置和類速度的變量組成的,而狀態(tài)導(dǎo)數(shù)則類似于加速度。感官信號(Sensory signals)(即觀察)通常攜帶有意義的物理單位,并且在相應(yīng)的時(shí)間尺度上發(fā)生變化。
在這十年中,在諸如視頻游戲這樣的困難問題領(lǐng)域中,強(qiáng)化學(xué)習(xí)(RL)技術(shù)的應(yīng)用取得了快速的進(jìn)展。Arcade學(xué)習(xí)環(huán)境(Arcade Learning Environment,ALE,Bellemare 等人于2012年提出)是這些發(fā)展的重要促進(jìn)因素,為評估和比較學(xué)習(xí)算法提供了一套標(biāo)準(zhǔn)基準(zhǔn)。DeepMind Control Suite為連續(xù)控制問題提供了一組類似的標(biāo)準(zhǔn)基準(zhǔn)。
OpenAI Gym(Brockman等人于2016年提出)目前包括一組連續(xù)控制域,而且已經(jīng)成為連續(xù)強(qiáng)化學(xué)習(xí)實(shí)際上的基準(zhǔn)(Duan 等人于2016年、Henderson等人于2017年提出)。Control Suite也是一組任務(wù),用于對連續(xù)的強(qiáng)化學(xué)習(xí)算法進(jìn)行基準(zhǔn)測試,其中存在著一些顯著的差異。我們只專注于連續(xù)控制,例如將觀察值與相似的單位(位置、速度、力等)分離,而不是將其連接成一個(gè)向量。我們統(tǒng)一的獎(jiǎng)勵(lì)結(jié)構(gòu)提供了具有可解釋性的學(xué)習(xí)曲線和綜合性適用范圍的性能度量。此外,我們強(qiáng)調(diào)使用統(tǒng)一設(shè)計(jì)模式的高質(zhì)量的完整代碼,提供可讀、透明和易于擴(kuò)展的代碼庫。最后,Control Suite與Gym一樣,里面都有相同的域,而且同時(shí)增加了更多的域。
DeepMind控制套件是強(qiáng)化學(xué)習(xí)算法(基于物理控制)的設(shè)計(jì)和性能比較的起點(diǎn)。它提供了各種各樣的任務(wù)(從幾乎微不足道的任務(wù)到相當(dāng)困難的任務(wù))。統(tǒng)一的獎(jiǎng)勵(lì)結(jié)構(gòu)可以實(shí)現(xiàn)對套件整體性能的評估。
這里展示的A3C、DDP和D4pg的結(jié)果組成的基線,是通過運(yùn)用我們提出的理論,對這些算法進(jìn)行良好的執(zhí)行得到的。同時(shí),我們強(qiáng)調(diào),學(xué)習(xí)曲線不是基于窮舉的超參數(shù)優(yōu)化,并且對于給定的算法,在控制套件的所有任務(wù)中都使用相同的超參數(shù)。因此,我們期望能夠獲得更好的性能或數(shù)據(jù)效率,特別是在每個(gè)任務(wù)的基礎(chǔ)上。
我們很樂意與更多的社區(qū)分享控制套件,并且希望有更多人能夠注意到它的作用,我們期待著能夠?qū)μ准M(jìn)行多樣化研究,并將社區(qū)所作出的貢獻(xiàn)整合到未來發(fā)布的版本中。
未來研究方向
對于Control Suite的當(dāng)前版本來說,里面還缺少一些元素。
有一些特征,比如缺乏豐富的任務(wù),這是在設(shè)計(jì)中沒有考慮到的。該套件,尤其是基準(zhǔn)測試任務(wù),旨在成為一個(gè)穩(wěn)定、簡單的學(xué)習(xí)控制起點(diǎn)。像復(fù)雜地形中的完全操縱和運(yùn)動的任務(wù)類別需要對任務(wù)和模型的分布進(jìn)行推理,而不僅僅是對初始狀態(tài)進(jìn)行操作。而所有這些都需要更為強(qiáng)大的工具,我們希望未來在不同的分支機(jī)構(gòu)中能夠進(jìn)行共享。
以下幾個(gè)特性并沒有包含在當(dāng)前發(fā)布的版本中,但我們打算在將來的版本中將其添加在內(nèi)。 它們包括:一個(gè)四足行走的動作任務(wù);一個(gè)交互式的可視化程序,用其便可以查看和擾亂模擬;支持C回調(diào)和多線程動態(tài);MuJoCo TensorFlow封裝器和Windows?支持。
dm_control:
DeepMind控制套件和控制包
此軟件包含:
·一套由MuJoCo物理引擎驅(qū)動的Python強(qiáng)化學(xué)習(xí)環(huán)境。
·為Mujoco物理引擎提供python綁定的庫。
如果你使用此軟件包,請引用我們隨附的技術(shù)報(bào)告。
安裝要求
請按照以下步驟安裝DM_control:
1.從Mujoco網(wǎng)站的下載頁面下載Mujoco pro1.50。必須在安裝dm_contect之前安裝mujoco pro,因?yàn)閐m_contect的安裝腳本由mujoco的頭文件生成python ctypes綁定。默認(rèn)情況下,dm_contect假定mujo COZIP歸檔文件被提取為~/.mujoCO/mjpro150。
2.通過運(yùn)行pip install git + git://github.com/deepmind/dm_control.git(PyPI包即將推出)或通過復(fù)制存儲庫并運(yùn)行pip install / path / to / dm_control /來安裝dm_control Python包。在安裝時(shí),dm_control在~/mujoco / mjpro150 / include中查找步驟1中的MuJoCo頭文件,然而這個(gè)路徑可以使用headers-dir命令行參數(shù)進(jìn)行配置。
3.為mujoco安裝一個(gè)許可密鑰,該密鑰在運(yùn)行時(shí)由dm_controls命令。有關(guān)詳細(xì)信息,請參閱Mujoco許可密鑰頁面。默認(rèn)情況下,dm_contect在~/.mujoco/mjkey.txt處查找mujo co許可密鑰文件。
4.如果在非默認(rèn)路徑上安裝許可密鑰(例如mjkey.txt)或mujocopro提供的共享庫(例如libmujoco150.so或libmujoco150.dylib),則分別使用mjkey_jmpATH和libm path指定它們的位置。
關(guān)于macOS上的自制軟件用戶
的其他說明
1.只要你使用的是由Homebrew安裝的python解釋器(而不是系統(tǒng)默認(rèn)的解釋器),那么以上使用pip的說明應(yīng)該有效。
2.要使Open GL正常工作,請通過運(yùn)行brew來安裝GLFW,然后安裝來自Homebrew的GLFW包。
3.在運(yùn)行之前,需要使用GLFW庫的路徑更新DYLD_library_path環(huán)境變量。這可以通過運(yùn)行export dyld_library_path=$(brew--prefix)/lib:$dyld_library_path來完成。
控制套件快速入門
from dm_control import suite
# Load one task:
env = suite.load(domain_name="cartpole", task_name="swingup")
# Iterate over a task set:
for domain_name, task_name in suite.BENCHMARKING:
env = suite.load(domain_name, task_name)
# Step through an episode and print out reward, discount and observation.
action_spec = env.action_spec()
time_step = env.reset()
while not time_step.last():
action = np.random.uniform(action_spec.minimum,
action_spec.maximum,
size=action_spec.shape)
time_step = env.step(action)
print(time_step.reward, time_step.discount, time_step.observation)
詳情請參閱技術(shù)報(bào)告:https://github.com/deepmind/dm_control/blob/master/tech_report.pdf