警告:このパッケージはメンテナンスモードです。最新のバージョンにはStable-Baselines3(SB3)を使用してください。 SB3ドキュメントで移行ガイドを見つけることができます。
Stable Baselinesは、Openaiベースラインに基づいた強化学習アルゴリズムの改善された実装のセットです。
中程度の記事で、安定したベースラインの詳細なプレゼンテーションを読むことができます。
これらのアルゴリズムにより、研究コミュニティと業界が新しいアイデアを複製、改良、識別することが容易になり、その上にプロジェクトを構築するための優れたベースラインが作成されます。これらのツールは、新しいアイデアを追加できるベースとして、また既存のアプローチと新しいアプローチを比較するためのツールとして使用されると予想しています。また、これらのツールのシンプルさにより、初心者が実装の詳細に埋葬されることなく、より高度なツールセットを実験できるようになることを願っています。
注:使用の単純さにもかかわらず、安定したベースライン(SB)は、強化学習(RL)に関する知識があると想定しています。練習がなければ、このライブラリを利用すべきではありません。その程度まで、RLを開始するために、ドキュメントに優れたリソースを提供します。
このツールセットは、主要な構造リファクタリングとコードのクリーンアップを備えたOpenaiベースラインのフォークです。
| 特徴 | 安定したベースライン | Openaiベースライン |
|---|---|---|
| 最先端のRLメソッド | ✔✔️ (1) | ✔✔️ |
| ドキュメント | ✔✔️ | |
| カスタム環境 | ✔✔️ | ✔✔️ |
| カスタムポリシー | ✔✔️ | ➖ (2) |
| 一般的なインターフェイス | ✔✔️ | ➖ (3) |
| テンソルボードのサポート | ✔✔️ | ➖ (4) |
| Ipython / Notebookフレンドリー | ✔✔️ | |
| PEP8コードスタイル | ✔✔️ | ✔✔§ (5) |
| カスタムコールバック | ✔✔️ | ➖ (6) |
(1):以前のバージョンのOpenaiベースラインからフォークされ、さらにSACとTD3が追加されました
(2):現在、DDPGでは利用できず、実行スクリプトからのみ利用できません。
(3):実行スクリプトを介してのみ。
(4):トレーニング情報の基本的な伐採(損失もグラフもありません)。
(5):編集:あなたはそれをオープンしました! ?
(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
注: Stable Baselinesは、1.8.0から1.14.0のTensorflowバージョンをサポートしています。 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が必要です。 HomeBrewがインストールされていると、以下を実行してください。
brew install cmake openmpiWindowsにStable Baselinesをインストールするには、ドキュメントをご覧ください。
安定したベースラインパッケージをインストールします。
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 ()または、環境がジムに登録されている場合、およびポリシーが登録されている場合は、1つのライナーでモデルをトレーニングするだけです。
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):AlgorithmがBaseRLModelクラスに適合するようにリファクタリングされているかどうか。
(2):TRPOにのみ実装されています。
(3):ゼロから再実装され、DQN、DDPG、SAC、TD3をサポートするようになりました
(4):MPIでのマルチ処理。
(5):TODO、プロジェクトの範囲。
注:ソフトアクタークリティック(SAC)とツイン遅延DDPG(TD3)は元のベースラインの一部ではなく、彼女はゼロから再現されていました。
アクションgym.spaces :
Box :アクション空間内のすべてのポイントを含むN次元ボックス。Discrete :可能なアクションのリスト。各タイムステップは、アクションの1つのみを使用できます。MultiDiscrete :可能なアクションのリスト。各タイムステップは、各ディスクリートセットの1つのアクションのみを使用できます。MultiBinary :可能なアクションのリスト。各タイムステップのアクションのいずれかを任意の組み合わせで使用できます。 ベースラインの例のいくつかは、Mujoco(連絡先のマルチジョイントダイナミクス)Physics Simulatorを使用しています。 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}},
}
安定したベースラインは現在、アシュリーヒル(別名 @hill-a)、アントニンラフィン(別名@araffin)、マクシミリアンエルネストス(別名@ernestum)、アダムグリーブ(@adamgleave)、およびansi kanervisto(@miffyli)によって維持されています。
重要な注意:私たちは技術サポートもコンサルティングもしておらず、電子メールごとの個人的な質問に答えません。
ベースラインをより良くすることに関心のある人には、まだ行う必要があるドキュメントがいくつかあります。貢献したい場合は、最初にConvributing.MDガイドをお読みください。
安定したベースラインは、Ensta ParistechのRobotics Lab U2is(Inria Flowersチーム)に作成されました。
ロゴのクレジット:LM Tenkes