當前位置:
首頁 > 科技 > 詳解Nervana最新開源深度強化學習庫Coach

詳解Nervana最新開源深度強化學習庫Coach

原文來源:github

作者:Gal Leibovich

「雷克世界」編譯:嗯~阿童木呀、多啦A亮

概述

Coach是一個python強化學習研究框架,包含許多最先進演算法的實施。

它公開了一組易用的API,用於對新的機器學習演算法實驗,並且通過新環境的簡單集成解決問題。基本的強化學習組件(演算法、環境、神經網路架構、探索策略……)是完全解耦的,因此擴展和重用現有的組件是毫不費力的。

訓練智能體來解決環境問題是與運行一樣簡單:

python coach.py -p CartPole_DQN -r

上圖來源英特爾Nervana網站的博客文章(https://www.intelnervana.com/reinforcement-learning-coach-intel

安裝

注意:Coach僅在Ubuntu 16.04 LTS上進行了測試。

Coach的安裝程序將設置讓使用者在OpenAI Gym環境上運行Coach所需的所有基本操作,用戶可以通過運行以下命令,然後按照屏幕上顯示的說明完成安裝:

./install.sh

Coach創建一個虛擬環境並安裝在其中以避免更改用戶系統。

激活或停用Coach的虛擬環境:

source coach_env/bin/activate

deactivate

除了OpenAI Gym,還有其它幾個環境已經進行測試並被支持。 請按照下面的「支持的環境」部分中的說明進行操作,以安裝更多的環境。

GPU支持

TensorFlow

默認情況下,Coach的安裝程序將安裝今年8月發布的英特爾優化版的TensorFlow,而其默認是不支持GPU的。為了使Coach能夠在GPU上運行,必須安裝支持GPU的TensorFlow版本。這可以通過覆蓋TensorFlow版本來完成:

pip install tensorflow-gpu

開始運行Coach

Coach支持TensorFlow和neon深度學習框架。

通過使用-f標誌可以在TensorFlow和neon後台之間進行切換。

使用TensorFlow(默認):-f tensorflow

使用neon:-f neon

presets.py中有幾個可用的預設。要列出所有可用的預設,請使用-l標誌。

要運行預設,請使用:

python coach.py -r -p

例如:

1、使用策略梯度CartPole遊戲環境:

python coach.py -r -p CartPole_PG

2、使用剪裁PPO演算法的倒立擺:

python coach.py -r -p Pendulum_ClippedPPO -n 8

3、使用A3C的山地車遊戲:

python coach.py -r -p MountainCar_A3C -n 8

4、使用Dueling網路和Double DQN演算法的毀滅戰士遊戲基礎級:

python coach.py -r -p Doom_Basic_Dueling_DDQN

5、使用混合蒙特卡羅的毀滅戰士遊戲生命值收集級:

python coach.py -r -p Doom_Health_MMC

按照與presets.py相同的模式,可以輕鬆地為不同級別或環境創建新的預設。

運行Coach儀錶板(可視化)

一般說來,訓練一個智能體來解決環境問題有時候是很棘手的。

有時為了調試訓練過程,Coach會輸出幾個信號、每個經過訓練後的演算法,以便追蹤演算法性能。

當Coach在訓練智能體時,一個包含相關訓練信號的csv文件將保存到「實驗」目錄中,然後 Coach的儀錶板可用於動態顯示訓練信號,並追蹤演算法表現。

如果想要使用它,可運行下面代碼:

python dashboard.py

文檔信息

有關框架文檔、演算法描述以及該如何構建一個新的智能體/環境的相關說明可點擊鏈接查詢閱讀。(http://coach.nervanasys.com/)

並行化演算法

自從在2016年引入A3C(https://arxiv.org/abs/1602.01783)以來,許多演算法都已被證明在多個CPU內核上並行運行多個實例時可從中獲益。到目前為止,這些演算法涵蓋了A3C、DDPG(https://arxiv.org/pdf/1704.03073.pdf)、PPO(https://arxiv.org/abs/1707.02286)和NAF(https://arxiv.org/pdf/1610.00633.pdf),而這極有可能只是一個開始。

使用Coach來並行化演算法是很簡單的。

下面的網路包裝(NetworkWrapper)方法可以對演算法進行無縫地並行化:

network.train_and_sync_networks(current_states, targets)

一旦並行運行開始啟動,train_and_sync_networks API就會將每個本地worker的網路梯度應用到主要的全局網路,從而使得並行化訓練得以開始。

然後,它只需要運行一個帶有-n標誌以及將要進行運行的worker的數量的Coach即可。例如,以下命令表示的是將要有16個worker協同合作以訓練一個MuJoCo Hopper:

python coach.py -p Hopper_A3C -n 16

支持的環境

?OpenAI Gym

由Coach的安裝程序默認安裝。

?ViZDoom:

按照ViZDoom存儲庫中所描述的指令進行操作——https://github.com/mwydmuch/ViZDoom

另外,Coach假定變數環境VIZDOOM_ROOT直接指向ViZDoom安裝目錄。

?Roboschool:

按照roboschool存儲庫中所描述的指令進行操作——https://github.com/openai/roboschool

?GymExtensions:

按照GymExtensions存儲庫中所描述的指令進行操作——https://github.com/Breakend/gym-extensions

另外,將安裝目錄添加到變數環境PYTHONPATH中。

?PyBullet

按照快速入門指南中(Quick Start Guide)所描述的說明進行操作(基本上只是——'pip install pybullet')

支持的演算法

?深度Q網路(DQN)(https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf)

?雙重深度Q網路(DDQN)(https://arxiv.org/pdf/1509.06461.pdf)

?DuelingQ網路(https://arxiv.org/abs/1511.06581)

?混合蒙特卡羅(MMC)(https://arxiv.org/abs/1703.01310)

?一致性優勢學習(PAL)(https://arxiv.org/abs/1512.04860)

?分散式深度Q網路(https://arxiv.org/abs/1707.06887)

?自舉深度Q網路(https://arxiv.org/abs/1602.04621)

?N步Q學習|分散式(https://arxiv.org/abs/1602.01783)

?神經情景控制(NEC)(https://arxiv.org/abs/1703.01988)

?歸一化優勢函數(NAF)|分散式(https://arxiv.org/abs/1603.00748)

?策略梯度(PG)|分散式

(http://www-anw.cs.umass.edu/~barto/courses/cs687/williams92simple.pdf)

?演員評判家(Actor Critic)/ A3C|分散式(https://arxiv.org/abs/1602.01783)

?深度確定性策略梯度(DDPG)|分散式(https://arxiv.org/abs/1509.02971)

?近端策略優化(PPO)(https://arxiv.org/pdf/1707.02286.pdf)

?裁剪近策略優化|分散式(https://arxiv.org/pdf/1707.06347.pdf)

?直接未來預測(DFP)|分散式(https://arxiv.org/abs/1611.01779)

免責聲明

Coach是出於研究目的作為參考代碼發布的。這不是英特爾官方產品,質量和支持水平可能達不到官方預期水平。計劃將附加演算法和環境添加框架中,非常歡迎來自開源和RL研究社區的反饋和批評指正。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷克世界 的精彩文章:

KDnuggets整理最新機器學習必備十大入門演算法!都在這裡了
人類如何從不同角度識別物體?你需要對「小樣本學習」有所了解
蘋果最新機器學習研究,詳解「嘿Siri」語音觸發器背後的深度神經網路
任何機器學習分類器都可以被欺騙!一文解析對抗性攻擊是如何工作的

TAG:雷克世界 |