AVERTISSEMENT: Ce package est en mode de maintenance, veuillez utiliser Stable-Basélines3 (SB3) pour une version à jour. Vous pouvez trouver un guide de migration dans la documentation SB3.
STABLE BASELINES est un ensemble d'implémentations améliorées d'algorithmes d'apprentissage de renforcement basés sur les lignes de base OpenAI.
Vous pouvez lire une présentation détaillée des lignes de base stables dans l'article moyen.
Ces algorithmes faciliteront la réplique, l'affiner et l'identification de la communauté de recherche et d'identifier de nouvelles idées, et créeront de bonnes lignes de base pour créer des projets en plus de. Nous nous attendons à ce que ces outils soient utilisés comme une base autour de laquelle de nouvelles idées peuvent être ajoutées et comme un outil pour comparer une nouvelle approche à celle existante. Nous espérons également que la simplicité de ces outils permettra aux débutants d'expérimenter un ensemble d'outils plus avancé, sans être enterré dans les détails de la mise en œuvre.
Remarque: Malgré sa simplicité d'utilisation, les lignes de base stables (SB) suppose que vous avez des connaissances sur l'apprentissage du renforcement (RL). Vous ne devez pas utiliser cette bibliothèque sans une pratique. Dans cette mesure, nous fournissons de bonnes ressources dans la documentation pour commencer avec RL.
Cet ensemble d'outils est une fourche de lignes de base Openai, avec un refactorisation structurelle majeure et des nettoyages de code:
| Caractéristiques | Basélines stables | Bâlines Openai |
|---|---|---|
| Méthodes de pointe de l'art RL | ✔️ (1) | ✔️ |
| Documentation | ✔️ | |
| Environnements personnalisés | ✔️ | ✔️ |
| Politiques personnalisées | ✔️ | ➖ (2) |
| Interface commune | ✔️ | ➖ (3) |
| Prise en charge de Tensorboard | ✔️ | ➖ (4) |
| Ipython / cahier convivial | ✔️ | |
| Style de code PEP8 | ✔️ | ✔️ (5) |
| Rappel personnalisé | ✔️ | ➖ (6) |
(1): fourchu à partir de la version précédente des lignes de base Openai, avec maintenant SAC et TD3 en plus
(2): actuellement non disponible pour DDPG, et uniquement à partir du script d'exécution.
(3): uniquement via le script d'exécution.
(4): journalisation rudimentaire des informations de formation (pas de perte ni graphique).
(5): EDIT: Vous l'avez fait ouvert! ?
(6): Le passage d'une fonction de rappel est uniquement disponible pour DQN
La documentation est disponible en ligne: https://stable-baselines.readthedocs.io/
RL Bâle Zoo. est une collection d'agents d'apprentissage en renforcement pré-formées utilisant des bases stables.
Il fournit également des scripts de base pour la formation, l'évaluation des agents, le réglage des hyperparamètres et l'enregistrement de vidéos.
Objectifs de ce référentiel:
GitHub Repo: https://github.com/araffin/rl-baselines-zoo
Documentation: https://stable-baselines.readthedocs.io/en/master/guide/rl_zoo.html
Remarque: les bases stables prennent en charge les versions TensorFlow de 1.8.0 à 1.14.0. La prise en charge de l'API TensorFlow 2 est prévue.
Les lignes de base nécessitent Python3 (> = 3,5) avec les en-têtes de développement. Vous aurez également besoin de packages système CMake, OpenMPI et ZLIB. Ceux-ci peuvent être installés comme suit
sudo apt-get update && sudo apt-get install cmake libopenmpi-dev python3-dev zlib1g-devL'installation de packages système sur Mac nécessite Homebrew. Avec Homebrew installé, exécutez ce qui suit:
brew install cmake openmpiPour installer des bases stables sur Windows, veuillez consulter la documentation.
Installez le package de référence stable:
pip install stable-baselines[mpi]
Cela inclut une dépendance facultative sur MPI, activant les algorithmes DDPG, GAIL, PPO1 et TRPO. Si vous n'avez pas besoin de ces algorithmes, vous pouvez installer sans MPI:
pip install stable-baselines
Veuillez lire la documentation pour plus de détails et d'alternatives (de Source, à l'aide de Docker).
La plupart de la bibliothèque essaie de suivre une syntaxe de type Sklearn pour les algorithmes d'apprentissage de renforcement.
Voici un exemple rapide de la façon de s'entraîner et d'exécuter PPO2 sur un environnement de cartpole:
import gym
from stable_baselines . common . policies import MlpPolicy
from stable_baselines . common . vec_env import DummyVecEnv
from stable_baselines import PPO2
env = gym . make ( 'CartPole-v1' )
# Optional: PPO2 requires a vectorized environment to run
# the env is now wrapped automatically when passing it to the constructor
# env = DummyVecEnv([lambda: env])
model = PPO2 ( MlpPolicy , env , verbose = 1 )
model . learn ( total_timesteps = 10000 )
obs = env . reset ()
for i in range ( 1000 ):
action , _states = model . predict ( obs )
obs , rewards , dones , info = env . step ( action )
env . render ()
env . close ()Ou entraînez simplement un modèle avec une doublure si l'environnement est enregistré dans le gymnase et si la politique est enregistrée:
from stable_baselines import PPO2
model = PPO2 ( 'MlpPolicy' , 'CartPole-v1' ). learn ( 10000 )Veuillez lire la documentation pour plus d'exemples.
Tous les exemples suivants peuvent être exécutés en ligne à l'aide de cahiers Google Colab:
| Nom | Refactorisé (1) | Récurrent | Box | Discrete | MultiDiscrete | MultiBinary | Traitement multiples |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Acer | ✔️ | ✔️ | (5) | ✔️ | ✔️ | ||
| Acktr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
| Ddpg | ✔️ | ✔️ | ✔️ (4) | ||||
| Dqn | ✔️ | ✔️ | |||||
| Gail (2) | ✔️ | ✔️ | ✔️ | ✔️ (4) | |||
| Elle (3) | ✔️ | ✔️ | ✔️ | ✔️ | |||
| PPO1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) | |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SAC | ✔️ | ✔️ | |||||
| Td3 | ✔️ | ✔️ | |||||
| Trpo | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) |
(1): si l'algorithme a été refactorisé ou non pour s'adapter à la classe BaseRLModel .
(2): Implémenté uniquement pour Trpo.
(3): Rempléminé à partir de zéro, prend désormais en charge DQN, DDPG, SAC et TD3
(4): Multi Traitement avec MPI.
(5): Todo, dans la portée du projet.
Remarque: l'acteur-critique doux (SAC) et le DDPG retardé à double retard (TD3) ne faisaient pas partie des lignes de base d'origine et elle a été réimplémentée à partir de zéro.
Actions gym.spaces :
Box : une boîte à n dimensions qui s'exécute chaque point de l'espace d'action.Discrete : une liste des actions possibles, où chaque étalage est une seule des actions peut être utilisée.MultiDiscrete : une liste des actions possibles, où chaque étape horaire qu'une seule action de chaque ensemble discrète peut être utilisée.MultiBinary : une liste des actions possibles, où chaque introduction à part entière peut être utilisée dans n'importe quelle combinaison. Certains des exemples de lignes de base utilisent le simulateur de physique MUJOCO (dynamique multi-argumentations), qui est propriétaire et nécessite des binaires et une licence (une licence temporaire de 30 jours peut être obtenue sur www.mujoco.org). Des instructions sur la configuration de Mujoco peuvent être trouvées ici
Tous les tests unitaires dans les lignes de base peuvent être exécutées à l'aide de Pytest Runner:
pip install pytest pytest-cov
make pytest
Nous essayons de maintenir une liste de projets à l'aide de bases stables dans la documentation, veuillez nous dire quand si vous voulez que votre projet apparaisse sur cette page;)
Pour citer ce référentiel dans les publications:
@misc{stable-baselines,
author = {Hill, Ashley and Raffin, Antonin and Ernestus, Maximilian and Gleave, Adam and Kanervisto, Anssi and Traore, Rene and Dhariwal, Prafulla and Hesse, Christopher and Klimov, Oleg and Nichol, Alex and Plappert, Matthias and Radford, Alec and Schulman, John and Sidor, Szymon and Wu, Yuhuai},
title = {Stable Baselines},
year = {2018},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/hill-a/stable-baselines}},
}
Stable-Basélines est actuellement entretenue par Ashley Hill (alias @ Hill-A), Antonin Raffin (alias @araffin), Maximilian Ernestus (aka @ernenstum), Adam Gleave (@AdamgLeave) et Anssi Kanervisto (@miffyli).
Remarque importante: Nous ne faisons pas de support technique, ni de consultation et ne répondons pas aux questions personnelles par e-mail.
Pour que tout ce qui est intéressé à améliorer les lignes de base, il reste encore une documentation. Si vous souhaitez contribuer, veuillez d'abord lire contribution.md Guide.
STABLE BASELINES a été créée dans le laboratoire de robotique U2IS (Inria Flowers Team) à Ensta Pastech.
Crédits de logo: LM Tenkes