用JAX编写的RL算法的集合。

rljax的Python项目详细描述


WARNING:Rljax目前处于beta版本,正在积极改进。欢迎投稿:)

里贾克斯

Rljax是用JAX编写的RL算法的集合。在

设置

您可以通过执行以下操作来安装依赖项。要使用GPU,必须安装CUDA(10.0、10.1、10.2或11.0)。在

pip install https://storage.googleapis.com/jax-releases/`nvcc -V | sed -En "s/.* release ([0-9]*)\.([0-9]*),.*/cuda\1\2/p"`/jaxlib-0.1.55-`python3 -V | sed -En "s/Python ([0-9]*)\.([0-9]*).*/cp\1\2/p"`-none-manylinux2010_x86_64.whl jax==0.2.0
pip install -e .

如果没有GPU,请执行以下命令。在

^{pr2}$

如果要使用MuJoCo物理引擎,请安装mujoco-py。在

pip install mujoco_py==2.0.2.11

算法

目前,已经实现了以下算法。在

AlgorithmActionVector StatePixel StatePER[11]D2RL[15]
PPO[1]Continuous:heavy_check_mark:---
DDPG[2]Continuous:heavy_check_mark:-:heavy_check_mark::heavy_check_mark:
TD3[3]Continuous:heavy_check_mark:-:heavy_check_mark::heavy_check_mark:
SAC[4,5]Continuous:heavy_check_mark:-:heavy_check_mark::heavy_check_mark:
SAC+DisCor[12]Continuous:heavy_check_mark:--:heavy_check_mark:
TQC[16]Continuous:heavy_check_mark:-:heavy_check_mark::heavy_check_mark:
SAC+AE[13]Continuous-:heavy_check_mark::heavy_check_mark::heavy_check_mark:
SLAC[14]Continuous-:heavy_check_mark:-:heavy_check_mark:
DQN[6]Discrete:heavy_check_mark::heavy_check_mark::heavy_check_mark:-
QR-DQN[7]Discrete:heavy_check_mark::heavy_check_mark::heavy_check_mark:-
IQN[8]Discrete:heavy_check_mark::heavy_check_mark::heavy_check_mark:-
FQF[9]Discrete:heavy_check_mark::heavy_check_mark::heavy_check_mark:-
SAC-Discrete[10]Discrete:heavy_check_mark::heavy_check_mark::heavy_check_mark:-

示例

所有的算法都可以用几行代码来训练。在

<详细信息>入门

下面是一个如何在CartPole-v0上训练DQN的快速示例。在

importgymfromrljax.algorithmimportDQNfromrljax.trainerimportTrainerNUM_AGENT_STEPS=20000SEED=0env=gym.make("CartPole-v0")env_test=gym.make("CartPole-v0")algo=DQN(num_agent_steps=NUM_AGENT_STEPS,state_space=env.observation_space,action_space=env.action_space,seed=SEED,batch_size=256,start_steps=1000,update_interval=1,update_interval_target=400,eps_decay_steps=0,loss_type="l2",lr=1e-3,)trainer=Trainer(env=env,env_test=env_test,algo=algo,log_dir="/tmp/rljax/dqn",num_agent_steps=NUM_AGENT_STEPS,eval_interval=1000,seed=SEED,)trainer.train()
<详细信息>MuJoCo(健身房)

我根据MuJoCo的-v3任务套件,在Spinning Up's benchmarkscode)之后,对我在某些环境中的实现进行了基准测试。在TQC中,对于half-cheetath-v3,我将num_quantiles_-to-tu-drop设置为0,对于其他环境,我设置为2。请注意,我以3M的代理步骤作为基准,而不是TQC的论文中的5M代理步骤。在

<详细信息>DeepMind控制套件

我在DeepMind控制套件(code)的一些环境中对SAC+AE和SLAC的实现进行了基准测试。请注意,横轴表示环境步骤,这是通过将agent_step乘以action_repeat得到的。我将“猎豹跑”的动作“重复”设置为4,为步行者设置为2。在

<详细信息>Atari(街机学习环境)

我在Arcade学习环境(ALE)(code)中对SAC离散实现进行了基准测试。请注意,横轴表示环境步骤,这是通过将agent_step乘以4得到的。在

参考文献

Schulman,John,et al.“最近策略优化算法”,arXiv预印本arXiv:1707.06347(2017年)。在

Lillicrap,Timothy p.等.《深度强化学习的持续控制》,arXiv预印本arXiv:1509.02971(2015年)。在

藤本、斯科特、赫尔克·范霍夫和大卫·梅格。”解决演员批评方法中的函数近似错误〉arXiv预印本arXiv:1802.09477(2018年)。在

软角色批评家:非策略最大熵深度强化学习,arXiv预印本arXiv:1801.01290(2018年)。在

Haarnoja,Tuomas,et al.“软演员批评算法和应用”,arXiv预印本AR905年5月14日(2018年)。在

[6]Mnih,Volodymyr,et al.“通过深度强化学习实现人的水平控制”,《自然》518.7540(2015):529-533。在

damney,Will,et al.“分位数回归的分布强化学习”,第三十二届AAAI人工智能会议。2018在

分布强化学习的内隐分位数网络〉,arXiv预印本。2018在

Yang,Derek,et al.“用于分布式强化学习的全参数分位数函数”,神经信息处理系统进展。2019在

克里斯托杜鲁,彼得罗斯。”软演员批评离散动作设置〉arXiv预印本arXiv:1910.07207(2019年)。在

Schaul,Tom,et al.“优先体验回放”,arXiv预印本arXiv:1511.05952(2015年)。在

Kumar、Aviral、Abishek Gupta和Sergey Levine。”Discor:通过分布校正在强化学习中的纠正反馈〉,arXiv预印本arXiv:2003.07305(2020年)。在

Yarats,Denis,et al.“从图像中提高无模型强化学习中的样本效率”,arXiv预印本arXiv:1910.01741(2019年)。在

Lee,Alex X.等.“随机潜在演员批评:深度强化学习w一个潜在变量模型arXiv:1907.00953(2019年)。在

Sinha,Samarth,et al.“D2RL:强化学习中的深层密集体系结构”,《arXiv》预印本arXiv:2010.09163(2020年)。在

Kuznetsov,Arsenii,et al.“用连续分布分位数批评的截断混合控制高估偏差”,《arXiv》预印本arXiv:2005.04269(2020年)。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用java向dropup html/css添加项目   如何从java中的向量向量打印   Java Maven库项目模板   java使用atmosphere api还是直接使用grizzly?   java JComponent仅部分显示   如何将动态值传递给自定义注释,以从Java数据进行映射。性质   java破解已实现方法的返回类型的最佳方法?   java Netbeans在JFrame Gui布局中覆盖图像   spring java仅向登录用户显示注销按钮   java如何对com进行身份验证。谷歌。云bigquery。带有服务帐户的BigQuery`   java禁止空字符串参数和抛出RuntimeException以阻止方法继续的利弊   java分析项目中的所有JAR以获取版本和许可证信息   Java,数据库为什么要分配一个新对象,而我们可以直接将它放入数据库