今回は強化学習アルゴリズムを実装したり、性能を比較するための実行環境であるOpenAI Gymを使います。
OpenAI Gymでは課題となる実行環境がいくつか用意されていますが、定番の倒立振子課題 CartPole を試します。
倒立振子課題は台車の上に回転軸を固定した棒を立て、その棒が倒れないように台車を右・左と細かく動かす制御課題です。
ますは必要なライブラリをインストールします。(Pythonバージョンは3.6です)
1 | pip install gym |
Jupyter Notebookを開きコーディングを始めます。
使用するパッケージは次の通りです。
1 | # 使用するパッケージの宣言 |
動画を描画するための関数を定義します。
1 | # 動画の描画関数の宣言 |
CartPoleを実行するところを実装します。
今回はきちんとした制御をせず、ただランダムに左右動かします。
gym.make()はOpenAIの実行環境を立ち上げる関数です。
環境を実行するとき一番最初にenv.reset()をコールしておきます。
env.step()はゲーム環境を1step進める関数で、引数に0を渡すと左に、1を渡すと右にカートを移動します。
返値は次の4つを返します。
変数 | 説明 |
---|---|
observation | カートと棒の状態 |
reward | 即時報酬 カートの位置が±2.4以内 かつ 棒が20.9度以上傾いてない場合 -> 1 カートの位置が±2.4を超える または 棒が20.9度以上傾いている場合 -> 0 |
done | 終了状態になるとTrue |
info | デバッグなどの必要情報 |
1 | # CartPoleをランダムに動かす |
変数framesに格納された画像を「3_2movie_cartpole.mp4」に保存します。
1 | # 動画を保存 |
保存した動画は下記のようになります。
ランダムなので棒はすぐに倒れてしまいます。次回は棒が倒れないように強化学習していきます。
参考 > つくりながら学ぶ!深層強化学習 サポートページ