This repository is a collection of Python implementations of various Reinforcement Learning (RL) algorithms. The primary goal is educational: to get a deep and intuitive understanding of how these algorithms work under the hood. π§ Due to the recent explosion in the AI domain especially Large Language Models, and many more applications it is important to understand core reinforcement learning algorithms.
This repository also includes a comprehensive cheat sheet summarizing key concepts and algorithms for quick reference.
This is not a performance-optimized library! I prioritize readability and clarity over speed and advanced features. Think of it as your interactive textbook for RL.
Date | Update |
---|---|
2 April 2025 | Added a comprehensive RL Cheat Sheet summarizing all implemented algorithms and core concepts. Repository now includes 18 algorithm notebooks. |
30 March 2025 | Added 18 new algorithms. |
- Focus on Fundamentals: Learn the core logic without the abstraction of complex RL libraries. We use basic libraries (NumPy, Matplotlib, PyTorch) to get our hands dirty. π οΈ
- Beginner-Friendly: Step-by-step explanations guide you through each algorithm, even if you're new to RL. πΆ
- Interactive Learning: Jupyter Notebooks provide a playground for experimentation. Tweak hyperparameters, modify the code, and see what happens! π§ͺ
- Clear and Concise Code: We strive for readable code that closely mirrors the mathematical descriptions of the algorithms. No unnecessary complexity! π
- Quick Reference: Includes a detailed Cheat Sheet for fast lookups of formulas, pseudocode, and concepts.
The repository currently includes implementations of the following RL algorithms, with more planned:
Algorithm Quick Reference
Each algorithm has its own Jupyter Notebook (.ipynb
) file with a detailed explanation and implementation.
Complementing the detailed notebooks, a comprehensive RL Cheat Sheet is included in this repository. It serves as a quick reference guide covering:
- Core RL Concepts (MDPs, Bellman Equations, etc.)
- Algorithm Summaries (Core Idea, Math, Pseudocode)
- Key Hyperparameters and Tuning Tips
- Pros & Cons and Use Cases
- Code Snippets for key update rules
β‘οΈ View the RL Cheat Sheet here
Follow these steps to get started:
-
Clone the repository:
git clone https://github.com/fareedkhan-dev/all-rl-algorithms.git cd all-rl-algorithms
-
Create a virtual environment (using uv): (β‘ faster alternative to python -m venv)
# Initialize a new project (β only if starting fresh, not when cloning) uv init # Create a virtual environment uv venv
-
Activate the virtual environment:
# Windows .venv\Scripts\activate # macOS / Linux source .venv/bin/activate
-
Install dependencies:
uv add -r requirements.txt
-
Multiprocessing in A3C: Please run
a3c_training.py
in the terminal instead of the jupyter notebook to avoid any complication from multiprocessing.
π‘ Note: If you donβt have uv installed yet, you can install it via:
pip install uv
- Start with the Basics (
01_simple_rl.ipynb
): This notebook introduces fundamental RL concepts like states, actions, rewards, and policies. - Explore Core Algorithms: Dive into the individual notebooks for Q-Learning (
02_q_learning.ipynb
), SARSA (03_sarsa.ipynb
), and REINFORCE (06_reinforce.ipynb
). Understand their update rules, strengths, and limitations. - Analyze the Code: Carefully read the code comments, which explain the purpose of each function and variable.
- Experiment!: This is where the real learning begins. Try these:
- Change hyperparameters (learning rate, discount factor, exploration rate) and observe the effect on learning curves.
- Modify the environment (e.g., change the grid size, add obstacles) and see how the algorithms adapt.
- Extend the algorithms (e.g., implement epsilon decay, add a baseline to REINFORCE).
- Consult the Cheat Sheet: Refer to the RL Cheat Sheet for quick summaries, formulas, and pseudocode while studying the notebooks.
- Tackle Advanced Methods: Gradually work through the more complex notebooks on DQN (
13_dqn.ipynb
), Actor-Critic (08_a2c.ipynb
), PPO (07_ppo.ipynb
), Model-Based RL with PlaNet (18_planet.ipynb
), and multi-agent learning with MADDPG (14_maddpg.ipynb
) and QMIX (15_qmix.ipynb
). - Run the A3C Implementation: Due to complexities with multiprocessing in Jupyter Notebooks, the A3C implementation is in
a3c_training.py
. Run it from the command line:python a3c_training.py
Each notebook includes visualizations to help you understand the agent's behavior:
- Learning Curves: Plots of episode rewards, episode lengths, and loss functions.
- Q-Table Visualizations: Heatmaps to visualize Q-values across the state space (tabular methods).
- Policy Grids: Arrows showing the learned policy (action choice) in each state.
- More Advanced Visualizations: Visualizations may depend on each particular algorithm.
This repository is primarily for learning! While effort has been taken, some notebooks (especially the more complex ones like HAC) may contain bugs, incomplete implementations, or simplifications for clarity. If you find any issues, feel free to create a pull request.
Contributions are welcome! Here's how you can help:
- π Fix Bugs: Found an error or a way to improve the code? Submit a pull request!
- βοΈ Improve Explanations: Clarify confusing sections in the notebooks or add more helpful comments.
- β‘ Add More Algorithms: Implement algorithms currently marked as "Planned."
- π Create More Visualizations: Develop insightful visualizations to better understand the learning process.
- π Add More Environment Examples: Implement known RL tasks.
- π Follow Guidelines: Please follow the project's coding style and documentation guidelines.
- π Open Discussions: Create a new issue to discuss your contribution before starting work.