Stable Baselines Zoo - 学習アルゴリズムACKTRで月面着陸(LunarLander-v2)を攻略

インベーダーゲームで一番成績の良かった学習アルゴリズム ACKTR をいろいろな環境で実行してみます。

今回は 月面着陸(LunarLander-v2) を攻略します。宇宙船を操作して旗と旗の間にうまく着陸できるように操作するゲームです。

カーソルキーで宇宙船の方向を操作し機体を水平に保ち、スペースキーでエンジン噴射を行います。

LunarLander-v2を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってLunarLander-v2を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    LunarLander-v2
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    3000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env LunarLander-v2 -n 3000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


問題なく旗と旗の間に着陸できる様子が確認できます。たまには失敗することもありましたが十分な結果を出していると思います。

Stable Baselines Zoo - 学習アルゴリズムACKTRでハーフチータバレット(HalfCheetahBulletEnv-v0)を攻略

インベーダーゲームで一番成績の良かった学習アルゴリズム ACKTR をいろいろな環境で実行してみます。

今回は ハーフチータバレット(HalfCheetahBulletEnv-v0) を攻略します。ハーフチータバレットはチータを半分にしたような物体を前に進むように調整する環境です。

HalfCheetahBulletEnv-v0を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってHalfCheetahBulletEnv-v0を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    HalfCheetahBulletEnv-v0
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    3000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env HalfCheetahBulletEnv-v0 -n 3000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


前には進んでいますが、走るというよりぴょんぴょんと飛び跳ねています。前足は使わない方が効率的だと学習したんでしょうか。。。ちょっと気持ち悪い動きです。(;^_^A

Stable Baselines Zoo - 学習アルゴリズムACKTRでカーレースゲーム(EnduroNoFrameskip-v4)を攻略

インベーダーゲームで一番成績の良かった学習アルゴリズム ACKTR をいろいろな環境で実行してみます。

今回は カーレースゲーム(EnduroNoFrameskip-v4) を攻略します。相手の車を抜いていくことを目的とする単純なゲームです。

EnduroNoFrameskip-v4を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってEnduroNoFrameskip-v4を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    EnduroNoFrameskip-v4
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    3000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env EnduroNoFrameskip-v4 -n 3000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


相手の車を抜かすどころか抜かれまくってます。。。

後ろからくる車にぶつからないようにするゲームだと勘違いしてるんでしょうか。。。(;^_^A)

以前、同じ環境を学習アルゴリズム DQN で実行したときも同じような結果となりました。カーレースの攻略は意外と難しいものなんですね。

Stable Baselines Zoo - 学習アルゴリズムACKTRで倒立ふりこ(CartPole-v1)を攻略

インベーダーゲームで一番成績の良かった学習アルゴリズム ACKTR をいろいろな環境で実行してみます。

今回は 倒立ふりこ(CartPole-v1) を攻略します。倒立ふりこは、板の上に立っている棒を倒さないように、板を左右に動かしバランスをとる環境です。

CartPole-v1を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってCartPole-v1を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    CartPole-v1
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    3000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env CartPole-v1 -n 3000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


このくらいの簡単な環境であれば ACKTR アルゴリズムは完璧に攻略できますね。

Stable Baselines Zoo - 学習アルゴリズムACKTRでブロック崩し(BreakoutNoFrameskip-v4)を攻略

インベーダーゲームで一番成績の良かった学習アルゴリズム ACKTR をいろいろな環境で実行してみます。

今回は ブロック崩し(BreakoutNoFrameskip-v4) を攻略します。

BreakoutNoFrameskip-v4を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってBreakoutNoFrameskip-v4を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    BreakoutNoFrameskip-v4
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    3000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env BreakoutNoFrameskip-v4 -n 3000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


なかなかのプレイ内容です。順調にブロックを崩していきますが、ブロック数が少なくなった最後の方では無限ループのようなプレイになってしまいました。

Stable Baselines Zoo - 学習アルゴリズムACKTRで二足歩行シミュレーション(BipedalWalker-v3)を攻略

これまでインベーダーゲームをいろいろな学習アルゴリズムを使ってみましたが、一番成績の良かった ACKTR をいろいろな環境で実行してみます。

今回は 二足歩行シミュレーション(BipedalWalker-v3) という環境を攻略します。二足歩行を最適化することを目標とします。

BipedalWalker-v3を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってBipedalWalker-v3を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    BipedalWalker-v3
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    2000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env BipedalWalker-v3 -n 2000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


スキップのような移動になっていますが、順調に2足歩行で前に進んでいる様子を確認することができます。

Stable Baselines Zoo - 学習アルゴリズムACKTRでビームライダー(BeamRiderNoFrameskip-v4)を攻略

これまでインベーダーゲームをいろいろな学習アルゴリズムを使ってみましたが、一番成績の良かった ACKTR をいろいろな環境で実行してみます。

今回は ビームライダー(BeamRiderNoFrameskip-v4) という環境を攻略します。

ビームライダーはシューティングゲームで、円盤のような敵を15体倒せば母艦が登場し、それを撃破すればボーナス点が入って面クリアとなります。

基本操作は左右移動のみで、縦に5本走っているラインの間を行き来して攻撃もこのライン上でのみ可能となっています。

BeamRiderNoFrameskip-v4を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってBeamRiderNoFrameskip-v4を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    BeamRiderNoFrameskip-v4
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    2000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env BeamRiderNoFrameskip-v4 -n 2000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


なかなかのプレイ内容になっています。やられてしまうこともありますが、一面と二面はクリアできるのを確認できました。

Stable Baselines Zoo - 学習アルゴリズムACKTRでAcrobot-v1を攻略

これまでインベーダーゲームをいろいろな学習アルゴリズムを使ってみましたが、一番成績の良かった ACKTR をいろいろな環境で実行してみます。

今回は Acrobot-v1 という環境を攻略します。

これはヌンチャクのようなものをうまく回転させるようにする環境です。

ACKTRでAcrobot-v1を攻略

ACKTR の学習済みモデル(Stable Baselines Zoo提供)を使ってAcrobot-v1を実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    Acrobot-v1
  • 学習アルゴリズム(algo)
    ACKTR
  • ステップ数(n)
    2000

[コマンド]

1
python3.7 -m utils.record_video --algo acktr --env Acrobot-v1 -n 2000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


このくらい単純なゲームだと ACKTR なら余裕で攻略してくれます。

Stable Baselines Zoo - インベーダーゲームを攻略 PPO2(Proximal Policy Optimization2)編

インベーダーゲームを各学習アルゴリズムで攻略します。

今回使用する PPO2 は、PPOのGPU対応版です。

PPOは最先端のアプローチと同等またはそれ以上の性能を発揮しながら、実装およびチューニングを容易にしています。

また、各ステップでの計算コスト関数を最小限に抑えながらも、ポリシーからの逸脱を比較的小さく抑えることができるアルゴリズムとなっています。

使いやすさとパフォーマンスが優れているため、OpenAIが使用する強化学習アルゴリズムのデフォルトとなっています。

PPO2でインベーダーゲームを攻略

PPO2 の学習済みモデル(Stable Baselines Zoo提供)を使ってインベーダーゲームを実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    SpaceInvadersNoFrameskip-v4
  • 学習アルゴリズム(algo)
    PPO2
  • ステップ数(n)
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo ppo2 --env SpaceInvadersNoFrameskip-v4 -n 1000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


まあまあのプレイ内容でしょうか。これまでいろいろなアルゴリズムでインベーダーゲームを攻略してみましたが ACKTR が一番優秀な結果となりました。

Stable Baselines Zoo - インベーダーゲームを攻略 DQN(Deep Q Network)編

インベーダーゲームを各学習アルゴリズムで攻略します。

今回使用する DQN は、深層強化学習アルゴリズムを利用した学習法です。

DQN - Wikipedia

一部のゲームにおいて人間以上のスコアを獲得できているそうです。

DQNでインベーダーゲームを攻略

DQN の学習済みモデル(Stable Baselines Zoo提供)を使ってインベーダーゲームを実行し、その様子を動画ファイルに出力します。


各オプションは以下の通りです。

  • 環境(env)
    SpaceInvadersNoFrameskip-v4
  • 学習アルゴリズム(algo)
    DQN
  • ステップ数(n)
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo dqn --env SpaceInvadersNoFrameskip-v4 -n 1000

実行結果は以下のようになりました。(Ubuntu 19.10で動作確認しています。)


実行結果


とても弱くて、見ていられません。敵の攻撃にあたりにいっているようにすら思えます。。