Предупреждение: этот пакет находится в режиме обслуживания, пожалуйста, используйте Stable-Baselines3 (SB3) для актуальной версии. Вы можете найти руководство по миграции в документации SB3.
Стабильные базовые показатели представляют собой набор улучшенных реализаций алгоритмов обучения подкреплению, основанных на базовых показателях Openai.
Вы можете прочитать подробное представление о стабильных базовых показателях в статье Medium.
Эти алгоритмы облегчат исследовательскому сообществу и промышленности воспроизвести, совершенствовать и выявлять новые идеи и создаст хорошие базовые показатели для создания проектов. Мы ожидаем, что эти инструменты будут использоваться в качестве базы, вокруг которой могут быть добавлены новые идеи, и в качестве инструмента для сравнения нового подхода с существующими. Мы также надеемся, что простота этих инструментов позволит начинающим экспериментировать с более продвинутым набором инструментов, не будучи похороненными в деталях реализации.
Примечание. Несмотря на простоту использования, стабильные базовые показатели (SB) предполагают, что у вас есть некоторые знания о обучении подкреплению (RL). Вы не должны использовать эту библиотеку без какой -либо практики. В этой степени мы предоставляем хорошие ресурсы в документации, чтобы начать работу с RL.
Этот набор инструментов представляет собой вилку базовых показателей OpenAI, с основным структурным рефакторией и очисткой кода:
| Функции | Стабильные базелины | Openai Базовые линии |
|---|---|---|
| Состояние искусства методы | ✔ (1) | ✔ |
| Документация | ✔ | |
| Пользовательские среды | ✔ | ✔ |
| Пользовательские политики | ✔ | ➖ (2) |
| Общий интерфейс | ✔ | ➖ (3) |
| Поддержка Tensorboard | ✔ | ➖ (4) |
| Ipython / Foombook Friendly | ✔ | |
| PEP8 код стиль | ✔ | ✔ (5) |
| Пользовательский обратный вызов | ✔ | ➖ (6) |
(1).
(2): в настоящее время недоступно для DDPG и только из сценария пробега.
(3): только через сценарий прогона.
(4): Рудиментарное ведение учебной информации (без потерь и график).
(5): Редактировать: Вы сделали это Openai! ?
(6): передача функции обратного вызова доступна только для DQN
Документация доступна онлайн: https://stable-baselines.readthedocs.io/
RL Базовый зоопарк. является набором предварительно обученных агентов обучения, использующих стабильные басилин.
Он также предоставляет основные сценарии для обучения, оценки агентов, настройки гиперпараметров и записи видео.
Цели этого хранилища:
Github Repo: https://github.com/araffin/rl-baselines-zoo
Документация: https://stable-baselines.readthedocs.io/en/master/guide/rl_zoo.html
ПРИМЕЧАНИЕ. Стабильные базолины поддерживают версии TensorFlow от 1,8,0 до 1,14,0. Поддержка TensorFlow 2 API запланирована.
Базовые линии требуют Python3 (> = 3,5) с заголовками разработки. Вам также понадобятся системные пакеты Cmake, OpenMPI и Zlib. Они могут быть установлены следующим образом
sudo apt-get update && sudo apt-get install cmake libopenmpi-dev python3-dev zlib1g-devУстановка системных пакетов на Mac требует домашнего завода. С установленным Homebrew запустите следующее:
brew install cmake openmpiЧтобы установить стабильные базелины в Windows, посмотрите на документацию.
Установите стабильный пакет базовых показателей:
pip install stable-baselines[mpi]
Это включает в себя дополнительную зависимость от MPI, обеспечение алгоритмов DDPG, GAIL, PPO1 и TRPO. Если вам не нужны эти алгоритмы, вы можете установить без MPI:
pip install stable-baselines
Пожалуйста, прочитайте документацию для получения более подробной информации и альтернатив (из источника, используя Docker).
Большая часть библиотеки пытается следовать синтаксису, подобному Sklearn, для алгоритмов обучения подкрепления.
Вот быстрый пример того, как тренировать и запустить PPO2 в среде расщепления:
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 ()Или просто тренируйте модель с одним лайнером, если среда зарегистрирована в спортзале и если политика зарегистрирована:
from stable_baselines import PPO2
model = PPO2 ( 'MlpPolicy' , 'CartPole-v1' ). learn ( 10000 )Пожалуйста, прочитайте документацию для получения дополнительных примеров.
Все следующие примеры могут быть выполнены в Интернете, используя записные книжки Google Colab:
| Имя | Рефактор (1) | Повторяется | Box | Discrete | MultiDiscrete | MultiBinary | Многообразная обработка |
|---|---|---|---|---|---|---|---|
| A2C | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Застенчивый | ✔ | ✔ | (5) | ✔ | ✔ | ||
| Acktr | ✔ | ✔ | ✔ | ✔ | ✔ | ||
| DDPG | ✔ | ✔ | ✔ (4) | ||||
| Дкн | ✔ | ✔ | |||||
| Гейл (2) | ✔ | ✔ | ✔ | ✔ (4) | |||
| Ее (3) | ✔ | ✔ | ✔ | ✔ | |||
| PPO1 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ (4) | |
| PPO2 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| Мешок | ✔ | ✔ | |||||
| TD3 | ✔ | ✔ | |||||
| Trpo | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ (4) |
(1): Был ли алгоритм рефактован в соответствии с классом BaseRLModel .
(2): реализовано только для TRPO.
(3): повторно внедрено с нуля, теперь поддерживает DQN, DDPG, SAC и TD3
(4): Multi обработка с MPI.
(5): Тодо, в области проекта.
Примечание. Мягкий актер-критический (SAC) и двойной DDPG (TD3) не были частью исходных базовых показателей, и ее переосмысливали с нуля.
Действия gym.spaces :
Box : n-размерная коробка, которая содержит каждую точку в пространстве действий.Discrete : список возможных действий, в котором может использоваться каждый время, который можно использовать только одно из действий.MultiDiscrete : список возможных действий, в котором может использоваться каждый временный временный интерфейс каждого действия каждого дискретного набора.MultiBinary : список возможных действий, в котором каждый временный временный стаж может использоваться в любой комбинации. В некоторых примерах базовых показателей используются физический симулятор Mujoco (Multi-Joint Dynamics в контакте), который является проприетарным и требует двоичных файлов и лицензии (временная 30-дневная лицензия может быть получена с www.mujoco.org). Инструкции по настройке MUJOCO можно найти здесь
Все модульные тесты в базовых показателях можно запускать с помощью Pytest Runner:
pip install pytest pytest-cov
make pytest
Мы стараемся сохранить список проекта, используя стабильные базелины в документации, сообщите нам, когда вы хотите, чтобы ваш проект отображался на этой странице;)
Написать этот репозиторий в публикациях:
@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}},
}
Стабильные базелины в настоящее время поддерживаются Эшли Хилл (он же @Hill-A), Антонином Раффином (он же @Araffin), Максимилиан Эрнест (он же @ernestum), Адам Глив (@Adamglave) и Анси Канерванто (@Miffyli).
Важное примечание: мы не проводим техническую поддержку и не консультируемся и не отвечаем на личные вопросы по электронной почте.
Для любого заинтересованного в том, чтобы сделать базовые показатели лучше, есть еще некоторая документация, которая должна быть сделана. Если вы хотите внести свой вклад, сначала прочитайте ancoming.md -гид.
Стабильные базовые показатели были созданы в лаборатории робототехники U2IS (команда Inria Flowers) в Ensta Paristech.
Кредиты логотипа: LM Tenkes