PERINGATAN: Paket ini dalam mode pemeliharaan, silakan gunakan stabil-baselines3 (SB3) untuk versi terbaru. Anda dapat menemukan panduan migrasi dalam dokumentasi SB3.
Baselines yang stabil adalah serangkaian implementasi algoritma pembelajaran penguatan yang ditingkatkan berdasarkan garis dasar openai.
Anda dapat membaca presentasi terperinci tentang baseline yang stabil di artikel medium.
Algoritma ini akan memudahkan komunitas penelitian dan industri untuk mereplikasi, memperbaiki, dan mengidentifikasi ide -ide baru, dan akan menciptakan garis dasar yang baik untuk membangun proyek di atas. Kami berharap alat -alat ini akan digunakan sebagai basis di mana ide -ide baru dapat ditambahkan, dan sebagai alat untuk membandingkan pendekatan baru dengan yang sudah ada. Kami juga berharap bahwa kesederhanaan alat ini akan memungkinkan pemula untuk bereksperimen dengan toolset yang lebih maju, tanpa dimakamkan dalam detail implementasi.
Catatan: Terlepas dari kesederhanaan penggunaannya, stabil baselines (SB) mengasumsikan Anda memiliki beberapa pengetahuan tentang penguatan pembelajaran (RL). Anda tidak boleh menggunakan perpustakaan ini tanpa latihan. Sejauh itu, kami menyediakan sumber daya yang baik dalam dokumentasi untuk memulai dengan RL.
Toolset ini adalah garpu baseline openai, dengan refactoring struktural utama, dan pembersihan kode:
| Fitur | Baselin stabil | Baselines Openai |
|---|---|---|
| Metode canggih rl | ✔️ (1) | ✔️ |
| Dokumentasi | ✔️ | |
| Lingkungan khusus | ✔️ | ✔️ |
| Kebijakan khusus | ✔️ | ➖ (2) |
| Antarmuka umum | ✔️ | ➖ (3) |
| Dukungan Tensorboard | ✔️ | ➖ (4) |
| Ipython / notebook ramah | ✔️ | |
| Gaya kode PEP8 | ✔️ | ✔️ (5) |
| Panggilan Balik Kustom | ✔️ | ➖ (6) |
(1): Dipelahi dari versi baselines openai sebelumnya, dengan sekarang SAC dan TD3 Selain itu
(2): Saat ini tidak tersedia untuk DDPG, dan hanya dari skrip Run.
(3): Hanya melalui skrip run.
(4): Pencatatan informasi pelatihan yang belum sempurna (tidak ada kerugian atau grafik).
(5): Sunting: Anda melakukannya Openai! ?
(6): Melewati fungsi panggilan balik hanya tersedia untuk DQN
Dokumentasi tersedia online: https://stable-baselines.readthedocs.io/
Kebun Binatang RL Baselines. adalah kumpulan agen pembelajaran penguatan pra-terlatih menggunakan baseline stabil.
Ini juga menyediakan skrip dasar untuk pelatihan, mengevaluasi agen, tuning hyperparameters dan merekam video.
Tujuan repositori ini:
Github Repo: https://github.com/araffin/rl-baselines-zoo
Dokumentasi: https://stable-baselines.readthedocs.io/en/master/guide/rl_zoo.html
Catatan: Baselin stabil mendukung versi TensorFlow dari 1.8.0 hingga 1.14.0. Dukungan untuk TensorFlow 2 API direncanakan.
Baselines membutuhkan python3 (> = 3.5) dengan header pengembangan. Anda juga membutuhkan paket sistem CMake, OpenMPI dan Zlib. Itu dapat diinstal sebagai berikut
sudo apt-get update && sudo apt-get install cmake libopenmpi-dev python3-dev zlib1g-devPemasangan paket sistem di Mac membutuhkan homebrew. Dengan homebrew terpasang, jalankan yang berikut:
brew install cmake openmpiUntuk menginstal stabil-baselines di windows, silakan lihat dokumentasi.
Instal Paket Baselines yang stabil:
pip install stable-baselines[mpi]
Ini termasuk ketergantungan opsional pada MPI, memungkinkan algoritma DDPG, Gail, PPO1 dan TRPO. Jika Anda tidak memerlukan algoritma ini, Anda dapat menginstal tanpa MPI:
pip install stable-baselines
Harap baca dokumentasi untuk detail dan alternatif lebih lanjut (dari sumber, menggunakan Docker).
Sebagian besar perpustakaan mencoba mengikuti sintaksis seperti SkLearn untuk algoritma pembelajaran penguatan.
Berikut adalah contoh singkat tentang cara melatih dan menjalankan PPO2 di lingkungan 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 ()Atau cukup latih model dengan satu liner jika lingkungan terdaftar di gym dan jika kebijakan terdaftar:
from stable_baselines import PPO2
model = PPO2 ( 'MlpPolicy' , 'CartPole-v1' ). learn ( 10000 )Harap baca dokumentasi untuk lebih banyak contoh.
Semua contoh berikut dapat dieksekusi secara online menggunakan Google Colab Notebooks:
| Nama | Refactored (1) | Berulang | Box | Discrete | MultiDiscrete | MultiBinary | Multi Processing |
|---|---|---|---|---|---|---|---|
| A2C | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| TANAMAN ACER | ✔️ | ✔️ | (5) | ✔️ | ✔️ | ||
| ACKTR | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ||
| Ddpg | ✔️ | ✔️ | ✔️ (4) | ||||
| Dqn | ✔️ | ✔️ | |||||
| Gail (2) | ✔️ | ✔️ | ✔️ | ✔️ (4) | |||
| Dia (3) | ✔️ | ✔️ | ✔️ | ✔️ | |||
| Ppo1 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) | |
| Ppo2 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| KANTUNG | ✔️ | ✔️ | |||||
| TD3 | ✔️ | ✔️ | |||||
| Trpo | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ (4) |
(1): Apakah algoritma telah direktor agar sesuai dengan kelas BaseRLModel .
(2): hanya diterapkan untuk TRPO.
(3): diimplementasikan kembali dari awal, sekarang mendukung DQN, DDPG, SAC dan TD3
(4): Multi Processing dengan MPI.
(5): TODO, dalam ruang lingkup proyek.
Catatan: Soft Actor-Critic (SAC) dan Twin tertunda DDPG (TD3) bukan bagian dari garis dasar asli dan dia diimplementasikan kembali dari awal.
Action gym.spaces :
Box : Kotak N-dimensi yang berisi setiap titik di ruang aksi.Discrete : Daftar tindakan yang mungkin, di mana setiap waktu hanya satu dari tindakan yang dapat digunakan.MultiDiscrete : Daftar tindakan yang mungkin, di mana setiap waktu hanya satu tindakan dari setiap set diskrit dapat digunakan.MultiBinary : Daftar tindakan yang mungkin, di mana setiap waktu tindakan apa pun dapat digunakan dalam kombinasi apa pun. Beberapa contoh baseline menggunakan simulator fisika Mujoco (multi-joint dinamika dalam kontak), yang merupakan hak milik dan membutuhkan binari dan lisensi (lisensi 30 hari sementara dapat diperoleh dari www.mujoco.org). Instruksi tentang pengaturan mujoco dapat ditemukan di sini
Semua tes unit di baselines dapat dijalankan menggunakan Pytest Runner:
pip install pytest pytest-cov
make pytest
Kami mencoba mempertahankan daftar proyek menggunakan stabil-baselines dalam dokumentasi, tolong beri tahu kami kapan jika Anda ingin proyek Anda muncul di halaman ini;)
Untuk mengutip repositori ini dalam publikasi:
@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}},
}
Stabil-baselines saat ini dikelola oleh Ashley Hill (alias @Hill-A), Antonin Raffin (alias @ArAffin), Maximilian Ernestus (alias @ernestum), Adam Gleave (@adamgleave) dan Anssi Kanervisto (@Miffyli).
Catatan Penting: Kami tidak melakukan dukungan teknis, atau berkonsultasi dan tidak menjawab pertanyaan pribadi per email.
Yang tertarik untuk membuat garis dasar lebih baik, masih ada beberapa dokumentasi yang perlu dilakukan. Jika Anda ingin berkontribusi, silakan baca Panduan Kontribusi.MD terlebih dahulu.
Baselines yang stabil dibuat di lab robotika U2I (tim bunga inria) di Ensta Paristech.
Kredit Logo: LM Tenkes