Warnung: Dieses Paket befindet sich im Wartungsmodus. Verwenden Sie bitte Stable-Baselines3 (SB3) für eine aktuelle Version. Sie finden einen Migrationshandbuch in der SB3 -Dokumentation.
Stabile Baselines sind eine Reihe verbesserter Implementierungen von Verstärkungslernen -Algorithmen auf der Grundlage von OpenAI -Baselines.
Sie können eine detaillierte Präsentation stabiler Baselines im mittleren Artikel lesen.
Diese Algorithmen erleichtern es der Forschungsgemeinschaft und der Branche, neue Ideen zu replizieren, zu verfeinern und zu identifizieren, und schaffen gute Basislinien, um Projekte zu erstellen. Wir gehen davon aus, dass diese Tools als Basis verwendet werden, in dem neue Ideen hinzugefügt werden können, und als Instrument zum Vergleich eines neuen Ansatzes mit vorhandenen. Wir hoffen auch, dass die Einfachheit dieser Tools Anfängern ermöglicht, mit einem fortgeschritteneren Toolset zu experimentieren, ohne in Implementierungsdetails begraben zu werden.
HINWEIS: Trotz seiner Einfachheit des Gebrauchs geht hervor, dass stabile Baselines (SB) angenommen werden, dass Sie über Kenntnisse über Verstärkungslernen (RL) verfügen. Sie sollten diese Bibliothek nicht ohne Übung nutzen. Insofern bieten wir gute Ressourcen in der Dokumentation zur Verfügung, um mit RL zu beginnen.
Dieses Toolset ist eine Gabel von OpenAI -Baselines mit einem wesentlichen strukturellen Refactoring und Code -Aufräumarbeiten:
| Merkmale | Stall-Baselines | Offene Baselines |
|---|---|---|
| Hochmoderne Methoden | ✔️ (1) | ✔️ |
| Dokumentation | ✔️ | |
| Benutzerdefinierte Umgebungen | ✔️ | ✔️ |
| Benutzerdefinierte Richtlinien | ✔️ | ➖ (2) |
| Gemeinsame Schnittstelle | ✔️ | ➖ (3) |
| Tensorboard -Unterstützung | ✔️ | ➖ (4) |
| Ipython / Notebook freundlich | ✔️ | |
| Pep8 -Codestil | ✔️ | ✔️ (5) |
| Benutzerdefinierte Rückruf | ✔️ | ➖ (6) |
(1): Aus der früheren Version der OpenAI -Baselines gegabelt, mit jetzt SAC und TD3 zusätzlich
(2): Derzeit nicht für DDPG und nur aus dem Run -Skript verfügbar.
(3): Nur über das Run -Skript.
(4): rudimentäre Protokollierung von Trainingsinformationen (weder Verlust noch Diagramm).
(5): Bearbeiten: Du hast es offen gemacht! ?
(6): Eine Rückruffunktion ist nur für DQN verfügbar
Die Dokumentation ist online verfügbar: https://stable-baselines.readthedocs.io/
RL Baselines Zoo. ist eine Sammlung von vorgebliebenen Verstärkungslernmitteln, die stabile Baselines verwenden.
Es bietet auch grundlegende Skripte zum Training, zur Bewertung von Agenten, zum Einstellen von Hyperparametern und zum Aufnehmen von Videos.
Ziele dieses Repositorys:
Github Repo: https://github.com/araffin/rl-baselines-zoo
Dokumentation: https://stable-baselines.readthedocs.io/en/master/guide/rl_zoo.html
HINWEIS: Stabile Baselines unterstützt TensorFlow-Versionen von 1.8.0 bis 1.14.0. Die Unterstützung für TensorFlow 2 API ist geplant.
Baselines erfordert Python3 (> = 3,5) mit den Entwicklungsheadern. Sie benötigen auch Systempakete CMake, OpenMPI und ZLIB. Diese können wie folgt installiert werden
sudo apt-get update && sudo apt-get install cmake libopenmpi-dev python3-dev zlib1g-devDie Installation von Systempaketen auf dem Mac erfordert Homebrew. Führen Sie mit dem Homebrew Folgendes aus:
brew install cmake openmpiUm stabile Baselines unter Windows zu installieren, lesen Sie bitte die Dokumentation.
Installieren Sie das stabile Baselines -Paket:
pip install stable-baselines[mpi]
Dies beinhaltet eine optionale Abhängigkeit von MPI, die Algorithmen DDPG, GAIL, PPO1 und TRPO ermöglicht. Wenn Sie diese Algorithmen nicht benötigen, können Sie ohne MPI installieren:
pip install stable-baselines
Bitte lesen Sie die Dokumentation für weitere Details und Alternativen (von Quelle, unter Verwendung von Docker).
Der größte Teil der Bibliothek versucht eine sklearn-ähnliche Syntax für die Verstärkungslernenalgorithmen.
Hier ist ein kurzes Beispiel dafür, wie man PPO2 in einer Cartpole -Umgebung trainiert und läuft:
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 ()Oder trainieren Sie einfach ein Modell mit einem One -Liner, wenn die Umgebung im Fitnessstudio registriert ist und wenn die Richtlinie registriert ist:
from stable_baselines import PPO2
model = PPO2 ( 'MlpPolicy' , 'CartPole-v1' ). learn ( 10000 )Bitte lesen Sie die Dokumentation für weitere Beispiele.
Alle folgenden Beispiele können online mit Google Colab -Notizbüchern ausgeführt werden:
| Name | Refaktoriert (1) | Wiederkehrend | Box | Discrete | MultiDiscrete | MultiBinary | Multi -Verarbeitung |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Acer | ✔️ | ✔️ | (5) | ✔️ | ✔️ | ||
| Acktr | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
| DDPG | ✔️ | ✔️ | ✔️ (4) | ||||
| DQN | ✔️ | ✔️ | |||||
| Gail (2) | ✔️ | ✔️ | ✔️ | ✔️ (4) | |||
| Sie (3) | ✔️ | ✔️ | ✔️ | ✔️ | |||
| PPO1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) | |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SACK | ✔️ | ✔️ | |||||
| Td3 | ✔️ | ✔️ | |||||
| Trpo | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) |
(1): Ob der Algorithmus nach der BaseRLModel -Klasse anpasst oder nicht.
(2): Nur für TRPO implementiert.
(3): Unterstützt von Grund auf neu, unterstützt jetzt DQN, DDPG, SAC und TD3
(4): Multi -Verarbeitung mit MPI.
(5): Todo, im Projektumfang.
Hinweis: Soft Actor-Critic (SAC) und Twin DDPG (TD3) waren nicht Teil der ursprünglichen Basislinien und sie wurde von Grund auf neu implementiert.
Action gym.spaces . Räume:
Box : Eine n-dimensionale Box, die jeden Punkt im Aktionsraum enthält.Discrete : Eine Liste möglicher Aktionen, wobei jeder Zeitschritt nur eine der Aktionen verwendet werden kann.MultiDiscrete : Eine Liste möglicher Aktionen, wobei jeder Zeitschritt nur eine Aktion jedes diskreten Satzes verwendet werden kann.MultiBinary : Eine Liste möglicher Aktionen, wobei jeder Zeitschritt eine der Aktionen in einer beliebigen Kombination verwendet werden kann. Einige der Baselines-Beispiele verwenden MUJOCO (Multi-Jint-Dynamik in Kontakt) Physik-Simulator, der proprietär ist und Binärdateien benötigt und eine Lizenz (temporäre 30-Tage-Lizenz kann von www.mujoco.org) erhalten werden). Anweisungen zum Einrichten von Mujoco finden Sie hier
Alle Unit -Tests in Baselines können mit PyTest Runner ausgeführt werden:
pip install pytest pytest-cov
make pytest
Wir versuchen, eine Projektliste mit stabilen Baselines in der Dokumentation zu verwalten. Bitte geben Sie uns an, wann Ihr Projekt auf dieser Seite angezeigt wird.)
Um dieses Repository in Veröffentlichungen zu zitieren:
@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-Baselines wird derzeit von Ashley Hill (alias @hill-a), Antonin Raffin (alias @araffin), Maximilian Ernestus (alias @ernestum), Adam Gleave (@adamgleave) und Anssi Kanervisto (@miffyli) unterhalten.
Wichtiger Hinweis: Wir leisten weder technischen Support noch Beratung und beantworten keine persönlichen Fragen pro E -Mail.
Um die Baselines zu verbessern, müssen noch einige Dokumentationen durchgeführt werden. Wenn Sie einen Beitrag leisten möchten, lesen Sie bitte zuerst die Mitarbeit.md Guide.
Stabile Baselines wurden im Robotik -Labor U2Is (INRIA FLORES -Team) bei Ensta Paristech erstellt.
Logo -Credits: LM Zinn