In this projects we'll implementing agents that learns to play OpenAi Gym(retro) Sonic The Hedgehog 2 using several Deep Rl algorithms. OpenAI Gym is a toolkit for developing and comparing reinforcement learning algorithms. We'll be using pytorch library for the implementation.
- OpenAi Gym Retro
- PyTorch
- numpy
- opencv-python
- matplotlib
In this environment, the observation is an RGB image of the screen, which is an array of shape (210, 160, 3) Each action is repeatedly performed for a duration of k frames, where k is uniformly sampled from {2, 3, 4}. Our Target is to maximize our score.
Preprocessing Frames is an important step, because we want to reduce the complexity of our states to reduce the computation time needed for training.
Stacking frames is really important because it helps us to give have a sense of motion to our Neural Network.
Steps:
- Grayscale each of our frames (because color does not add important information ).
- Crop the screen (in our case we remove the part below the player because it does not add any useful information).
- We normalize pixel values.
- Finally we resize the preprocessed frame to (84 * 84).
- Stacking Frames 4 frames together.
- Deep Q Network(DQN) [Preview] [Download].
- Dueling Double DQN [Preview] [Download].
- Monte Carlo Policy Gradient [Preview] [Download].
- Rainbow [Preview] [Download].
- Advantage Actor Critic (A2C) [Preview] [Download].
- Proximal Policy Gradients(PPO) [Preview] [Download].
If you have any questions, feel free to ask me:
- Mail: deepanshut041@gmail.com
- Github: https://github.com/deepanshut041/Reinforcement-Learning
- Website: https://deepanshut041.github.io/Reinforcement-Learning
- Twitter: @deepanshut041
Don't forget to follow me on twitter, github and Medium to be alerted of the new articles that I publish
- Clap on articles: Clapping in Medium means that you really like my articles. And the more claps I have, the more my article is shared help them to be much more visible to the deep learning community.
- Improve our notebooks: if you found a bug or a better implementation you can send a pull request.