Stable Baselines - TensorBoardによる学習状況の監視

TensorBoardTensorFlow のデータを可視化するツールです。

これを使うことにより、学習状況をより詳細に確認することができます。

(Ubuntu 19.10で動作確認しています。)

TensofBoardのログを出力する

TensorBoard 用のログを出力するためには、モデルを作成する際の引数 tensorboard_log に出力先ディレクトリを指定します(15行目)。

[ソース]

tensorboard_watch.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import gym
import os
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import PPO2

# ログ出力先のディレクトリを作成
log_dir = './logs/'
os.makedirs(log_dir, exist_ok=True)

# 環境を作成
env = gym.make('CartPole-v1')
env = DummyVecEnv([lambda: env])

# モデルを作成
model = PPO2('MlpPolicy', env, verbose=1, tensorboard_log=log_dir)

# モデルの学習
model.learn(total_timesteps=100000)

# モデルのテスト
state = env.reset()
for i in range(200):
# 環境の描画
env.render()
# モデルの推論
action, _ = model.predict(state)
# 1ステップ実行
state, rewards, done, info = env.step(action)
# エピソード完了
if done:
break
# 環境のクローズ
env.close()

上記コードを実行します。

[コマンド]

1
python3.7 tensorboard_watch.py

TensofBoardの実行

先ほど実行したログを TensorBoard で表示するために下記のコマンド実行します。

[コマンド]

1
tensorboard --logdir=./logs/.

正常に実行されると、コンソールにURLが表示されるのでそれをブラウザで開きます。

実行結果


学習による平均報酬のグラフやその他いろいろな情報を確認することができます。

Stable Baselines② - PPO2での学習

Stable Baselines の強化学習アルゴリズムの1つである PPO2 を使ってCartPole-v1を攻略してみます。

PPO2での学習

PPO2 は、マルチプロセッシングで訓練可能な強化学習アルゴリズムです。

各処理のポイントはコメントをご参照ください。

[コード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import gym
from stable_baselines.common.vec_env import DummyVecEnv
from stable_baselines import PPO2

# 環境の生成
env = gym.make('CartPole-v1')
env = DummyVecEnv([lambda: env]) # 環境をベクトル化環境でラップする

# モデルの作成
# 'MlpPolicy':方策
# env:ベクトル化環境
# verbose:ログの詳細表示(0:ログなし、1:訓練情報を表示、2:TensorFlowログを表示)
model = PPO2('MlpPolicy', env, verbose=1)

# モデルの学習
# total_timesteps:訓練ステップ数
model.learn(total_timesteps=128000)

# モデルのテスト
state = env.reset()
while True:
# 環境の描画
env.render()
# モデルの推論
# deterministic=Trueは「ある状態に対して行動が一意に決まるようにする」
# →パフォーマンスが向上する
action, _ = model.predict(state, deterministic=True)
# 1ステップ実行
state, rewards, done, info = env.step(action)
# エピソード完了
if done:
break
# 環境のクローズ
env.close()

実行すると学習が行われた後、ゲーム画面が表示され棒のバランスがとれていることが確認できます。
[実行結果]

Stable Baselines① - 概要とインストール

Stable Baselines は、OpenAI が提供する「強化学習アルゴリズム」の実装セット OpenAI Baselines の改良版です。

最新の強化学習アルゴリズムを含む複数のアルゴリズムがサポートされており、インターフェースやドキュメントなどが整理され、使いやすい実装になっていることが大きな特徴です。

Stable Baselines - https://github.com/hill-a/stable-baselines

以下の強化学習アルゴリズムをサポートしています。

  • A2C
  • ACER
  • ACKTR
  • DDPG
  • DQN
  • GAIL
  • HER
  • PPO1
  • PPo2
  • TPRO
  • SAC
  • TD3

Stable Baselinesのインストール

Stable Baselines をインストールするには次のコマンドを実行します。

1
2
3
4
pip install stable-baselines[mpi]
pip install tensorflow=1.14.0
pip install pyqt5
pip install imageio

Windowsを使用している場合は、Microsoft MPI のインストールも必要となります。

Microsoft MPI v10.0 - https://www.microsoft.com/en-us/download/details.aspx?id=57467

MPI(Message Passing Interface) とは、並列コンピューティングを利用するために標準化された規格および実装です。

Stable Baselines では「DDPG」「GAIL」「PPO1」「TRPO」のマルチプロセッシングの実装に MPI が使用されています。


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×