警告:このリポジトリは維持されなくなりました。Stable-Baselines3を搭載した最新のバージョンには、RL-Baselines3動物園を使用してください。

安定したベースラインを使用して、調整されたハイパーパラメーターを備えた訓練された補強学習(RL)エージェントのコレクション。
コレクションを完成させるための貢献者を探しています!
このリポジトリの目標:
訓練されたエージェントが存在する場合、次のことを使用して動作していることがわかります。
python enjoy.py --algo algo_name --env env_id
たとえば、5000のタイムステップ中にブレイクアウトでA2Cをお楽しみください。
python enjoy.py --algo a2c --env BreakoutNoFrameskip-v4 --folder trained_agents/ -n 5000
自分でエージェントを訓練した場合は、する必要があります。
# exp-id 0 corresponds to the last experiment, otherwise, you can specify another ID
python enjoy.py --algo algo_name --env env_id -f logs/ --exp-id 0
最適なモデルをロードするには(評価環境を使用する場合):
python enjoy.py --algo algo_name --env env_id -f logs/ --exp-id 1 --load-best
各環境のハイパーパラメーターはhyperparameters/algo_name.ymlで定義されています。
このファイルに環境が存在する場合、次のことを使用してエージェントをトレーニングできます。
python train.py --algo algo_name --env env_id
たとえば(テンソルボードサポート付き):
python train.py --algo ppo2 --env CartPole-v1 --tensorboard-log /tmp/stable-baselines/
評価のために10エピソードを使用して、10000ステップごとにエージェントを評価します。
python train.py --algo sac --env HalfCheetahBulletEnv-v0 --eval-freq 10000 --eval-episodes 10
100000ステップごとにエージェントのチェックポイントを保存します。
python train.py --algo td3 --env HalfCheetahBulletEnv-v0 --save-freq 100000
トレーニングを続行します(ここでは、ブレイクアウトのために前処理されたエージェントをロードし、5000ステップのトレーニングを続行します):
python train.py --algo a2c --env BreakoutNoFrameskip-v4 -i trained_agents/a2c/BreakoutNoFrameskip-v4.pkl -n 5000
注:TRPOをトレーニングするときは、 mpirunを使用してマルチプロセスを有効にする必要があります。
mpirun -n 16 python train.py --algo trpo --env BreakoutNoFrameskip-v4
HyperParametersを最適化するためにOptunaを使用しています。
注:HyperParametersの検索は、今のところACERおよびDQNには実装されていません。連続HalvingPruner( "Halving)を使用する場合、 --n-jobs > 1指定する必要があります
最大50000ステップの1000試験の予算:
python train.py --algo ppo2 --env MountainCar-v0 -n 50000 -optimize --n-trials 1000 --n-jobs 2
--sampler tpe --pruner median
HyperParameterで指定することができます。環境で使用するように1つ以上のラッパーを設定できます。
1人のラッパーの場合:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
複数の場合、リストを指定します。
env_wrapper:
- utils.wrappers.DoneOnSuccessWrapper:
reward_offset: 1.0
- utils.wrappers.TimeFeatureWrapper
パラメーターも簡単に指定できることに注意してください。
キーワード引数を指定して、コマンド--env-kwargsのENVコンストラクターに渡すことができます。
python enjoy.py --algo ppo2 --env MountainCar-v0 --env-kwargs goal_velocity:10
--hyperparamsを使用して、コマンドラインのハイパーパラメーターを簡単に上書きすることができます。
python train.py --algo a2c --env MountainCarContinuous-v0 --hyperparams learning_rate:0.001 policy_kwargs:"dict(net_arch=[64, 64])"
記録1000ステップ:
python -m utils.record_video --algo ppo2 --env BipedalWalkerHardcore-v2 -n 1000
スコアはbenchmark.mdにあります。それらを計算するには、単にpython -m utils.benchmarkを実行します。
Openaiベンチマークからの7つのAtariゲーム(Noframeskip-V4バージョン)。
| RLアルゴ | ビームライダー | 起こる | エンデューロ | ポン | qbert | SeaQuest | SpaceInvaders |
|---|---|---|---|---|---|---|---|
| A2c | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| エイサー | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | |
| ACKTR | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| PPO2 | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| DQN | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| TRPO |
追加のAtariゲーム(完了する):
| RLアルゴ | MSPACMAN |
|---|---|
| A2c | ✔✔️ |
| エイサー | ✔✔️ |
| ACKTR | ✔✔️ |
| PPO2 | ✔✔️ |
| DQN | ✔✔️ |
| RLアルゴ | Cartpole-V1 | MountainCar-V0 | Acrobot-V1 | 振り子v0 | MountainCarcontinuous-V0 |
|---|---|---|---|---|---|
| A2c | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| エイサー | ✔✔️ | ✔✔️ | ✔✔️ | n/a | n/a |
| ACKTR | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| PPO2 | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| DQN | ✔✔️ | ✔✔️ | ✔✔️ | n/a | n/a |
| DDPG | n/a | n/a | n/a | ✔✔️ | ✔✔️ |
| サック | n/a | n/a | n/a | ✔✔️ | ✔✔️ |
| TD3 | n/a | n/a | n/a | ✔✔️ | ✔✔️ |
| TRPO | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| RLアルゴ | Bipedalwalker-V2 | Lunarlander-V2 | lunarlandercontinuous-v2 | Bipedalwalkerhardcore-v2 | Carracing-V0 |
|---|---|---|---|---|---|
| A2c | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | |
| エイサー | n/a | ✔✔️ | n/a | n/a | n/a |
| ACKTR | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | |
| PPO2 | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | |
| DQN | n/a | ✔✔️ | n/a | n/a | n/a |
| DDPG | ✔✔️ | n/a | ✔✔️ | ||
| サック | ✔✔️ | n/a | ✔✔️ | ✔✔️ | |
| TD3 | ✔✔️ | n/a | ✔✔️ | ||
| TRPO | ✔✔️ | ✔✔️ | ✔✔️ |
https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet/gym/pybullet_envsを参照してください。 Mujoco Envsに似ていますが、無料のシミュレーター:pybullet。 BulletEnv-v0バージョンを使用しています。
注:これらの環境はRoboschoolから派生しており、Mujocoバージョンよりもはるかに難しいです(Pybullet Issueを参照)
| RLアルゴ | Walker2d | ハーフチェーター | アリ | リーチャー | ホッパー | ヒューマノイド |
|---|---|---|---|---|---|---|
| A2c | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ||
| ACKTR | ✔✔️ | |||||
| PPO2 | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| DDPG | ✔✔️ | ✔✔️ | ✔✔️ | |||
| サック | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| TD3 | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ | |
| TRPO | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
pybullet envs(続き)
| RLアルゴ | ミニタウル | ミニタウルダック | InvertedDoublePendulum | InvertedPendulumswingup |
|---|---|---|---|---|
| A2c | ||||
| ACKTR | ||||
| PPO2 | ✔✔️ | ✔✔️ | ✔✔️ | ✔✔️ |
| DDPG | ||||
| サック | ✔✔️ | ✔✔️ | ||
| TD3 | ✔✔️ | ✔✔️ | ||
| TRPO |
https://github.com/maximecb/gym-minigrid有名なGridworldのシンプルで軽量で高速なジム環境の実装を参照してください。
| RLアルゴ | 空の | 4ルーム | ドアキー | マルチルーム | フェッチ |
|---|---|---|---|---|---|
| A2c | |||||
| PPO2 | ✔✔️ | ✔✔️ | |||
| DDPG | |||||
| サック | |||||
| TRPO |
合計で19の環境グループ(それぞれのバリエーション)があります。
標準ジム環境ではないので、founcy.py.pyとtrain.pyを備えたGym_minigridを指定する必要があることに注意してください。
pip install gym-minigrid
python train.py --algo ppo2 --env MiniGrid-DoorKey-5x5-v0 --gym-packages gym_minigrid
これは次のように同じことをします:
import gym_minigridまた、Minigrid環境にはDICT観測スペースがあるため、ハイパーパラメーターでジム環境ラッパーを指定する必要がある場合があります。
MiniGrid-DoorKey-5x5-v0:
env_wrapper: gym_minigrid.wrappers.FlatObsWrapper
Colab Notebookを使用して、オンラインでエージェントをトレーニングできます。
Minバージョン:Stable-Baselines [MPI]> = 2.10.0
apt-get install swig cmake libopenmpi-dev zlib1g-dev ffmpeg
pip install -r requirements.txt
代替案については、安定したベースラインREADMEをご覧ください。
Docker Image(CPU)をビルド:
./scripts/build_docker.sh
GPU:
USE_GPU=True ./scripts/build_docker.sh
Build Build Docker Image(CPU)をプル:
docker pull stablebaselines/rl-baselines-zoo-cpu
GPU画像:
docker pull stablebaselines/rl-baselines-zoo
Docker画像でスクリプトを実行する:
./scripts/run_docker_cpu.sh python train.py --algo ppo2 --env CartPole-v1
テストを実行するには、最初にpytestをインストールします。
python -m pytest -v tests/
出版物でこのリポジトリを引用するには:
@misc { rl-zoo ,
author = { Raffin, Antonin } ,
title = { RL Baselines Zoo } ,
year = { 2018 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/araffin/rl-baselines-zoo} } ,
}RL動物園に存在しないエージェントをトレーニングした場合は、プルリクエスト(ハイパーパラメーターとスコアも含む)を送信してください。
貢献者に感謝します:@iandanforth、@tatsubori @shade5