詳解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:雷克世界 |