경고 :이 패키지는 유지 보수 모드에 있습니다. 최신 버전에는 안정적인 베이 스틸 라인 3 (SB3)을 사용하십시오. SB3 문서에서 마이그레이션 안내서를 찾을 수 있습니다.
안정적인 기준선은 개방형 기준선을 기반으로 한 강화 학습 알고리즘의 개선 된 구현 세트입니다.
중간 기사에서 안정적인 기준선의 자세한 프레젠테이션을 읽을 수 있습니다.
이러한 알고리즘을 사용하면 연구 커뮤니티와 산업이 새로운 아이디어를 복제, 개선 및 식별하기가 더 쉬워지며 좋은 기준을 만들어 프로젝트를 구축 할 수 있습니다. 우리는 이러한 도구가 새로운 아이디어를 추가 할 수있는 기반으로, 새로운 접근 방식을 기존 접근법과 비교하기위한 도구로 사용될 것으로 기대합니다. 또한 이러한 도구의 단순성으로 인해 초보자가 구현 세부 사항에 묻히지 않고보다 고급 도구 세트를 실험 할 수 있기를 바랍니다.
참고 : 사용의 단순성에도 불구하고 안정적인 기준선 (SB)은 강화 학습 (RL)에 대한 지식이 있다고 가정합니다. 연습 없이는이 라이브러리를 사용해서는 안됩니다. 그 정도까지, 우리는 문서에서 RL을 시작하기 위해 좋은 리소스를 제공합니다.
이 도구 세트는 주요 구조 리팩토링 및 코드 정리 기능을 갖춘 Openai 기준의 포크입니다.
| 특징 | 안정된 바스 라인 | 개방형 기준선 |
|---|---|---|
| 최첨단 ART RL 방법 | ✔️ (1) | ✔️ |
| 선적 서류 비치 | ✔️ | |
| 맞춤형 환경 | ✔️ | ✔️ |
| 맞춤 정책 | ✔️ | ➖ (2) |
| 일반적인 인터페이스 | ✔️ | ➖ (3) |
| 텐서 보드 지원 | ✔️ | ➖ (4) |
| Ipython / 노트북 친화적 | ✔️ | |
| PEP8 코드 스타일 | ✔️ | ✔️ (5) |
| 맞춤형 콜백 | ✔️ | ➖ (6) |
(1) : 이전 버전의 Openai 기준선에서 포크되었으며 지금은 SAC 및 TD3이 추가됩니다.
(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
참고 : 안정적인 바이어 린은 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-devMac에 시스템 패키지를 설치하려면 홈브류가 필요합니다. Homebrew가 설치된 상태에서 다음을 실행하십시오.
brew install cmake openmpiWindows에 안정적인 기반선을 설치하려면 문서를 참조하십시오.
안정적인 기준 패키지 설치 :
pip install stable-baselines[mpi]
여기에는 MPI에 대한 선택적 종속성이 포함되어 있으며 알고리즘 DDPG, GAIL, PPO1 및 TRPO를 활성화합니다. 이러한 알고리즘이 필요하지 않은 경우 MPI없이 설치할 수 있습니다.
pip install stable-baselines
자세한 내용과 대안 (Docker를 사용하여 소스에서)은 문서를 읽으십시오.
대부분의 도서관은 강화 학습 알고리즘에 대한 Sklearn-like 구문을 따르려고합니다.
카트 폴 환경에서 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) | ||||
| DQN | ✔️ | ✔️ | |||||
| 게일 (2) | ✔️ | ✔️ | ✔️ | ✔️ (4) | |||
| 그녀 (3) | ✔️ | ✔️ | ✔️ | ✔️ | |||
| PPO1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) | |
| PPO2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 낭 | ✔️ | ✔️ | |||||
| TD3 | ✔️ | ✔️ | |||||
| TRPO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) |
(1) : 알고리즘이 BaseRLModel 클래스에 맞도록 리팩토링되었는지 여부.
(2) : TRPO에 대해서만 구현되었습니다.
(3) : 처음부터 다시 구현되어 이제 DQN, DDPG, SAC 및 TD3을 지원합니다.
(4) : MPI를 사용한 다중 처리.
(5) : 프로젝트 범위에서 TODO.
참고 : Soft Actor-Critic (SAC) 및 트윈 지연 DDPG (TD3)는 원래 기준선의 일부가 아니었고 그녀는 처음부터 상환되었습니다.
Actions gym.spaces :
Box : 액션 공간의 모든 지점을 포함하는 n 차원 상자.Discrete : 가능한 조치 목록, 각 타임 스텝 만 사용 할 수 있습니다.MultiDiscrete : 가능한 조치 목록, 각 타임 스텝 각 이산 세트의 한 가지 동작 만 사용할 수 있습니다.MultiBinary : 가능한 조치 목록, 각 타임 스텝 모든 작업을 조합으로 사용할 수 있습니다. 기준 예제 중 일부는 독점적이며 이항 및 라이센스가 필요한 Mujoco (Multi-Joint Dynamics in Contact in Contact) 물리 시뮬레이터를 사용합니다 (임시 30 일 라이센스는 www.mujoco.org에서 얻을 수 있음). Mujoco 설정에 대한 지침은 여기에서 찾을 수 있습니다
기준선의 모든 단위 테스트는 Pytest 러너를 사용하여 실행할 수 있습니다.
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}},
}
안정적인 기타는 현재 Ashley Hill (aka @hill-a), Antonin Raffin (일명 @araffin), Maximilian Ernestus (aka @ernestum), Adam Gleave (@adamgleave) 및 Anssi Kanervisto (@miffyli)에 의해 유지됩니다.
중요한 참고 : 우리는 기술 지원을하지 않거나 컨설팅을하지 않으며 이메일 당 개인 질문에 대답하지 않습니다.
기준선을 더 좋게 만드는 데 관심이있는 경우 여전히해야 할 문서가 여전히 있습니다. 기여하려면 Contration.Md Guide를 먼저 읽으십시오.
안정된 기준은 Ensta Paristech의 Robotics Lab U2I (Inria Flowers Team)에서 만들어졌습니다.
로고 크레딧 : LM TENKES