用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
算法
目前,已经实现了以下算法。在
Algorithm | Action | Vector State | Pixel State | PER[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的-v3
任务套件,在Spinning Up's benchmarks(code)之后,对我在某些环境中的实现进行了基准测试。在TQC中,对于half-cheetath-v3,我将num_quantiles_-to-tu-drop设置为0,对于其他环境,我设置为2。请注意,我以3M的代理步骤作为基准,而不是TQC的论文中的5M代理步骤。在
我在DeepMind控制套件(code)的一些环境中对SAC+AE和SLAC的实现进行了基准测试。请注意,横轴表示环境步骤,这是通过将agent_step乘以action_repeat得到的。我将“猎豹跑”的动作“重复”设置为4,为步行者设置为2。在
详细信息><详细信息>我在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年)。在
- 项目
标签: