本文约1300字,建议阅读5分钟。
本文为你介绍一个用PyTorch实现了17种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度RL算法。
[ 导读 ]深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一。本文推荐一个用PyTorch实现了17种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度RL算法。
已实现的算法包括:
-
Deep Q Learning (
DQN) (Mnih et al. 2013)
-
DQN with Fixed Q Targets (Mnih et al. 2013)
-
Double DQN (
DDQN) (Hado van Hasselt et al. 2015)
-
DDQN with Prioritised Experience Replay (Schaul et al. 2016)
-
Dueling DDQN (Wang et al. 2016)
-
REINFORCE (Williams et al. 1992)
-
Deep Deterministic Policy Gradients (
DDPG) (Lillicrap et al. 2016 )
-
Twin Delayed Deep Deterministic Policy Gradients (
TD3) (Fujimoto et al. 2018)
-
Soft Actor-Critic (
SAC & SAC-Discrete) (Haarnoja et al. 2018)
-
Asynchronous Advantage Actor Critic
(A3C) (Mnih et al. 2016)
-
Syncrhonous Advantage Actor Critic
(A2C)
-
Proximal Policy Optimisation (
PPO) (Schulman et al. 2017)
-
DQN with Hindsight Experience Replay (
DQN-HER) (Andrychowicz et al. 2018)
-
DDPG with Hindsight Experience Replay (
DDPG-HER) (Andrychowicz et al. 2018 )
-
Hierarchical-DQN (
h-DQN) (Kulkarni et al. 2016)
-
Stochastic NNs for Hierarchical Reinforcement
Learning (
SNN-HRL) (Florensa et al. 2017)
-
Diversity Is All You Need (
DIAYN) (Eyensbach et al. 2018)
所有的实现都能够快速解决
Cart Pole (离散动作)、
Mountain Car (连续动作)、
Bit Flipping (动态目标的离散动作) 或
Fetch Reach (动态目标的连续动作) 等任务。本 repo 还会添加更多的分层 RL 算法。
-
Bit Flipping 游戏 (Andrychowicz et al. 2018)
-
Four Rooms 游戏 (Sutton et al. 1998)
-
Long Corridor 游戏 (Kulkarni et al. 2016)
-
Ant-{Maze, Push, Fall} (Nachum et al. 2018)
1. Cart Pole 和 Mountain Car 下面展示了各种 RL 算法成功学习离散动作游戏 Cart Pole 或连续动作游戏 Mountain Car 的结果。使用 3 个随机种子运行算法的平均结果如下图所示,阴影区域表示正负 1 标准差。使用的超参数可以在 results/cart_pol .py 和 results/Mountain_Car.py 文件中找到。
下面展示了 DQN 和 DDPG 在 Bit Flipping (14 bits) 和 Fetch Reach 环境中的表现,这些环境在论文 Hindsight Experience Replay 和Multi-Goal Reinforcement Learning 中有详细描述。这些结果复现了论文中发现的结果,并展示了添加 HER 可以如何让一个 agent 解决它原本无法解决的问题。请注意,在每对 agents 中都使用了相同的超参数,因此它们之间的唯一区别是是否使用了 hindsight。
下图左边的结果显示了在 Long Corridor 环境中 DQN 和 Kulkarni 等人在 2016 年提出的 hierarchy -DQN 算法的性能。该环境要求 agent 在返回之前走到走廊的尽头,以便获得更大的奖励。这种延迟满足和状态的混叠使得它在某种程度上是 DQN 不可能学习的游戏,但是如果我们引入一个元控制器 (如 h-DQN) 来指导低层控制器如何行动,就能够取得更大的进展。这与论文中发现的结果一致。
下图右边的结果显示了 Florensa 等人 2017 年提出的 DDQN 算法和用于分层强化学习的随机神经网络 (SNN-HRL) 的性能。使用 DDQN 作为比较,因为 SSN-HRL 的实现使用了其中的 2 种 DDQN 算法。
存储库的高级结构是:
├── agents ├── actor_critic_agents ├── DQN_agents ├── policy_gradient_agents └── stochastic_policy_search_agents ├── environments ├── results └── data_and_graphs ├── tests ├── utilities └── data structures
观看所有不同的智能体学习 Cart Pole,请遵循以下步骤:
git clone https://github.com/p-christ/Deep_RL_Implementations.git cd Deep_RL_Implementations conda create --name myenvname y conda activate myenvname pip3 install -r requirements.txt python Results/Cart_Pole.py
对于其他游戏,将最后一行更改为结果文件夹中的其他文件就行。
Open AI gym 上的环境都是有效的,你所需要做的就是更改
config.environment 字段。
如果你创建了一个继承自 gym.Env 的单独类,那么还可以使用自己的自定义游戏。请参阅
Environments/Four_Rooms_Environment.py 自定义环境的示例,然后查看脚本
Results/Four_Rooms.py 了解如何让 agents 运行环境。
GitHub地址:
https://github.com/p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch
编辑:于腾凯
校对:龚力