推薦RL開源庫
參考:https://www.zhihu.com/question/49230922
- 主流開源強(qiáng)化學(xué)習(xí)框架推薦如下。提供的強(qiáng)化學(xué)習(xí)算法較為全面,如Q-learning、Sarsa、DQN、PG、DPG、DDPG、PPO等算法。
- OpenAI提供的Baselines:openai/baselines 6.6k stars(Gym環(huán)境)
- 百度提供的PARL:PaddlePaddle/PARL 0.2k stars 集成PaddlePaddle (Gym環(huán)境)
- 谷歌提供的Dopamine:google/dopamine 7.0k stars 集成TensorFlow(Gym環(huán)境)
- DeepMind提供的TRFL:deepmind/trfl 2.2k stars(Gym環(huán)境)
- 伯克利提供的RLlab:rll/rllab 2.0k stars(一個(gè)類似于Gym的工具包)
- reinforceio提供的Tensorforce:reinforceio/tensorforce 1.2k stars(Gym環(huán)境)
- Intel提供的Coach:NervanaSystems/coach 1.1k stars(Gym環(huán)境)
- keras-rl:keras-rl/keras-rl 3.4k stars 集成深度學(xué)習(xí)庫Keras(Gym環(huán)境)
RL庫簡介
Baseline
- 基于 OpenAI Gym 和 TensorFlow 的實(shí)現(xiàn)了經(jīng)典的(深度) 強(qiáng)化學(xué)習(xí)算法
- OpenAI、DeepMind,伯克利三個(gè)可以說是強(qiáng)化學(xué)習(xí)的推動(dòng)者,其中OpenAI 為很多算法都寫了baselines,放在github庫中供開發(fā)者學(xué)習(xí)參考。
- 提供兩個(gè)基準(zhǔn)測試
(1)Example 1. PPO with MuJoCo Humanoid (1M timesteps)
(2)Example 2. DQN on Atari (10M timesteps) - 實(shí)現(xiàn)多個(gè)算法
- A2C、ACER、ACKTR、DDPG、DQN、GAIL、HER、PPO1 (obsolete version, left here temporarily)、PPO2、TRPO
PARL
- 在成為NIPS2018的AI for Prosthetics Challenget挑戰(zhàn)賽第一名后,百度在2019年1月推出的一個(gè)基于PaddlePaddle的靈活高效的強(qiáng)化學(xué)習(xí)框架。
- 特點(diǎn):
(1)Reproducible:可以穩(wěn)定地再現(xiàn)許多有影響力的強(qiáng)化學(xué)習(xí)算法的結(jié)果
(2)Large Scale:能夠支持?jǐn)?shù)千個(gè)CPU和多GPU的高性能并行培訓(xùn)
(3)Reusable:存儲(chǔ)庫中提供的算法可以通過定義轉(zhuǎn)發(fā)網(wǎng)絡(luò)直接適應(yīng)新任務(wù),并且將自動(dòng)構(gòu)建培訓(xùn)機(jī)制。
(4)Extensible:通過在框架中繼承抽象類來快速構(gòu)建新算法。 - 在agent的基礎(chǔ)上抽象了Model、Algrithm、Agent,方便遞歸構(gòu)建agent。
- 目前實(shí)現(xiàn)的算法:QuickStart、DQN、DDPG、PPO、Winning Solution for NIPS2018: AI for Prosthetics Challenge
Dopamine
- 谷歌早2018年8月推出了一款全新的開源強(qiáng)化學(xué)習(xí)框架 Dopamine,該框架基于 TensorFlow,主打靈活性、穩(wěn)定性、復(fù)現(xiàn)性,能夠提供快速的基準(zhǔn)測試。包括:
(1)一個(gè)基于 Arcade 學(xué)習(xí)環(huán)境(一個(gè)成熟的、易于理解的基準(zhǔn))
(2)四種不同的機(jī)器學(xué)習(xí)模型:DQN、C51、簡化版的 Rainbow 智能體和 IQN(Implicit Quantile Network)四個(gè)基于值的代理 DQN、C51、Rainbow 代理的簡化版本以及隱式分位數(shù)網(wǎng)絡(luò)代理。
相比 OpenAI 的強(qiáng)化學(xué)習(xí)基準(zhǔn),Dopamine 更多關(guān)注 off-policy 方法。 為了實(shí)現(xiàn)可重復(fù)性,Github 代碼包括 Arcade Learning Environment 支持的全部 60 個(gè)游戲的完整測試和訓(xùn)練代碼,并遵循標(biāo)準(zhǔn)化經(jīng)驗(yàn)評(píng)估結(jié)果的最佳實(shí)踐。 除此之外,谷歌還推出了一個(gè)可視化網(wǎng)站,允許開發(fā)人員將訓(xùn)練中的多個(gè)智能體的運(yùn)行情況快速可視化。
特點(diǎn)
易用性
清晰和簡潔是這個(gè)框架的兩個(gè)關(guān)鍵設(shè)計(jì)考慮因素。
代碼緊湊(大約 15 個(gè) Python 文件),并且有詳細(xì)的文檔。代碼簡潔,能夠讓研究人員輕松了解代理的內(nèi)部運(yùn)作并快速嘗試新的想法。可重現(xiàn)性
可重現(xiàn)性在強(qiáng)化學(xué)習(xí)研究中的作用很重要。代碼通過了完整的測試覆蓋,這些測試用例也可作為某種形式的文檔使用。此外,其實(shí)驗(yàn)框架遵循了 Machado 等人給出的使用 Arcade 學(xué)習(xí)環(huán)境標(biāo)準(zhǔn)化進(jìn)行經(jīng)驗(yàn)評(píng)估的建議。基準(zhǔn)測試
對于研究人員來說,能夠根據(jù)已有方法快速對想法進(jìn)行基準(zhǔn)測試是非常重要的。因此,Dopamine以 Python pickle 文件(用于使用我們的框架訓(xùn)練的代理)和 JSON 數(shù)據(jù)文件(用于與其他框架訓(xùn)練的代理進(jìn)行比較)的形式提供了受 Arcade 學(xué)習(xí)環(huán)境支持的 60 個(gè)游戲的完整訓(xùn)練數(shù)據(jù)。還提供了一個(gè)網(wǎng)站,可以在上面快速查看所有的訓(xùn)練運(yùn)行情況。
谷歌還提供利用這些智能體訓(xùn)練的深度網(wǎng)絡(luò)、原始統(tǒng)計(jì)日志以及用于 Tensorboard 可視化的 TensorFlow 事件文件。相關(guān)地址:https://github.com/google/dopamine/tree/master/docs#downloads
TRFL
- TRFL(讀作「truffle」)一個(gè)用于在 TensorFlow 環(huán)境中開發(fā)強(qiáng)化學(xué)習(xí)智能體的代碼庫
- DeepMind 自己用來開發(fā) DQN、DDPG 以及 IMPALA(重要性加權(quán)行動(dòng)者-學(xué)習(xí)者架構(gòu))等知名強(qiáng)化學(xué)習(xí)技術(shù)的許多關(guān)鍵算法組件都包含在其中。
RLlab
- 伯克利大學(xué)和 openai 的學(xué)者開發(fā)的強(qiáng)化學(xué)習(xí)算法框架
- 不是一個(gè)RL庫,而是與Gym類似一個(gè)比較完整的強(qiáng)化學(xué)習(xí)開源工具包。基于Theano。與OpenAI Gym的區(qū)別在于OpenAI Gym支持更廣泛的環(huán)境,且提供在線的scoreboard可以用于共享訓(xùn)練結(jié)果。
- pytorch是一個(gè)python優(yōu)先的深度學(xué)習(xí)框架
Tensorforce
- 強(qiáng)化學(xué)習(xí)組件開發(fā)者 reinforce.io 于2017年提出的一個(gè)開源深度強(qiáng)化學(xué)習(xí)框架,強(qiáng)調(diào)模塊化靈活的庫設(shè)計(jì)和直觀的可用性。
- 構(gòu)建于Google的TensorFlow框架之上,與Python 3兼容(Python 2支持在0.5版本中刪除)
- 特點(diǎn):
(1)基于模塊化組件的設(shè)計(jì):功能實(shí)現(xiàn)盡可能地普遍適用和可配置。
(2)RL算法和應(yīng)用的分離:算法與輸入(狀態(tài)/觀察)和輸出(動(dòng)作/決策)的類型和結(jié)構(gòu),與應(yīng)用環(huán)境的交互無關(guān)。
(3)Full-on TensorFlow模型:整個(gè)強(qiáng)化學(xué)習(xí)邏輯(包括控制流)在TensorFlow中實(shí)現(xiàn),以實(shí)現(xiàn)獨(dú)立于應(yīng)用程序編程語言的便攜式計(jì)算圖形,并促進(jìn)模型的部署。 - 通過配置文件快速運(yùn)行不同的算法
python examples/openai_gym.py CartPole-v1 --agent examples/configs/ppo.json --network examples/configs/mlp2_network.json
- 支持DDPG和PPO等算法的實(shí)現(xiàn),詳見配置文件
tensorforce/examples/configs/
Coach
- Intel 收購的 Nervana 公司(還開發(fā)了Neon) 推出的強(qiáng)化學(xué)習(xí)框架
- Coach包含一些領(lǐng)先的增強(qiáng)學(xué)習(xí)算法的多線程實(shí)現(xiàn),可以方便地實(shí)現(xiàn)并行算法,充分利用cpu gpu多核。
- 主要針對2016年以來許多算法通過在許多CPU內(nèi)核中并行運(yùn)行多個(gè)實(shí)例,能夠更快地實(shí)現(xiàn)更好的策略。包括A3C 、DDPG、PPO、DFP和NAF等。
- 所有的算法都是使用英特爾優(yōu)化的TensorFlow來實(shí)現(xiàn)的,也可以通過Intel的neon?框架來實(shí)現(xiàn)。
- Coach可與如OpenAI Gym、Roboschool和ViZDoom等頂級(jí)環(huán)境進(jìn)行集成
- 可視化調(diào)試工具:Intel還發(fā)布了Coach Dashboard作為可視化和調(diào)試的補(bǔ)充工具。Dashboard是Coach的一個(gè)圖形用戶界面,通過展示訓(xùn)練過程中的不同信號(hào),可以讓用戶以簡單易懂的方式比較不同方式運(yùn)行的訓(xùn)練質(zhì)量。在訓(xùn)練期間,Coach可跟蹤任何有意義的內(nèi)部信息并存儲(chǔ),以便在執(zhí)行期間和完成后可視化進(jìn)度。
圖片來源:雷鋒網(wǎng)
keras-rl
- 集成深度學(xué)習(xí)庫Keras實(shí)現(xiàn)了一些最先進(jìn)的深度強(qiáng)化學(xué)習(xí)算法,可使用在Gym環(huán)境上。
- 目前實(shí)現(xiàn)的算法:
(1)Deep Q Learning (DQN)
(2)Double DQN
(3)Deep Deterministic Policy Gradient (DDPG)
(4)Continuous DQN (CDQN or NAF)
(5)Cross-Entropy Method (CEM)
(6)Dueling network DQN (Dueling DQN)
(7)Deep SARSA
RL庫使用方法
如果是以gym為基礎(chǔ)的RL庫,用起來更便于對比,畢竟環(huán)境一致
直接import開源庫,并調(diào)用其API
包括兩部分
(1)訓(xùn)練部分:初始化算法需要的參數(shù),比如學(xué)習(xí)率,steps,episode以及他們的最大值
(2)測試部分:act接受當(dāng)前狀態(tài)obs后給出action,將其傳給環(huán)境的step()函數(shù),得到下一時(shí)間步的狀態(tài)、回報(bào)、是否結(jié)束。循環(huán)打印每輪的總回報(bào)和時(shí)間步數(shù)。如果總回報(bào)為正且時(shí)間步數(shù)較少,則表明我們的算法取得了較好的效果。測試基準(zhǔn)
(1)在連續(xù)控制場景主要用mujoco環(huán)境游戲來評(píng)估,在離散控制場景主要用atatri環(huán)境評(píng)估,也有一些其他環(huán)境。
(2)Mujoco(1M時(shí)間步長)和Atari(10M時(shí)間步長)
(3)評(píng)估指標(biāo)主要看分?jǐn)?shù)還有steps。
參考
知乎上的RL開源項(xiàng)目:
https://www.zhihu.com/question/49230922
開源RL庫推薦(最下面)
https://github.com/aikorea/awesome-rl/tree/master
參考https://www.itcodemonkey.com/article/3646.html
其他
- OpenAi universe
openai 開發(fā)的開源人工智能軟件平臺(tái) 1000 多個(gè)環(huán)境
可以讓一個(gè)程序變?yōu)閛penai gym 環(huán)境,將程序封裝成docker 容器
https://github.com/openai/universe
模擬很多的游戲場景
- DeepMind Lab
DeepMind 發(fā)布的 3d強(qiáng)化學(xué)習(xí)平臺(tái)
最初是DeepMind 內(nèi)部使用 之后開源了
https://github.com/deepmind/lab
模擬一些走迷宮之類的3d實(shí)驗(yàn)環(huán)境。
附:一張不錯(cuò)的對比圖
圖來源:https://zhuanlan.zhihu.com/p/60241809