neroRL is a PyTorch based research framework for Deep Reinforcement Learning specializing on Transformer and Recurrent Agents based on Proximal Policy Optimization. Its focus is set on environments that are procedurally generated, while providing some usefull tools for experimenting and analyzing a trained behavior. This is a research framework.
- Environments:
- Memory Gym
- Obstacle Tower
- Unity ML-Agents
- Procgen
- Minigrid (Vector (one-hot) or Visual Observations (84x84x3))
- Gym CartPole using masked velocity
- DM Ballet
- RandomMaze
- Proximal Policy Optimization (PPO)
- Discrete and Multi-Discrete Action Spaces
- Vector and Visual Observation Spaces (either alone or simultaneously)
- Recurrent Policies using Truncated Backpropagation Through Time
- Episodic Memory based on Transformer-XL
This repository is used to achieve the results on the Memory Gym Environments given the following paper:
@inproceedings{pleines2023memory,
title={Memory Gym: Partially Observable Challenges to Memory-Based Agents},
author={Marco Pleines and Matthias Pallasch and Frank Zimmer and Mike Preuss},
booktitle={International Conference on Learning Representations},
year={2023},
url={https://openreview.net/forum?id=jHc8dCx6DDr}
}
Originally, this work started out by achieving the 7th place during the Obstacle Tower Challenge by using a relatively simple FFCNN. This video presents some footage of the approach and the trained behavior:
Recently we published a paper at CoG 2020 (best paper candidate) that analyzes the taken approach. Additionally the model was trained on 3 level designs and was evaluated on the two left out ones. The results can be reproduced using the obstacle-tower-challenge branch.
@inproceedings{pleines2020otc,
author = {Marco Pleines and Jenia Jitsev and Mike Preuss and Frank Zimmer},
title = {Obstacle Tower Without Human Demonstrations: How Far a Deep Feed-Forward Network Goes with Reinforcement Learning},
booktitle = {{IEEE} Conference on Games, CoG 2020, Osaka, Japan, August 24-27, 2020},
pages = {447--454},
publisher = {{IEEE}},
year = {2020},
url = {https://doi.org/10.1109/CoG47356.2020.9231802},
doi = {10.1109/CoG47356.2020.9231802},
}
To get started check out the docs!