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で動作確認しています。)


実行結果


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

Stable Baselines Zoo - インベーダーゲームを攻略 ACKTR(Actor Critic using Kronecker-Factored Trust Region)編

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

今回使用する ACKTR は TPROとActor-Criticを組み合わせた学習法です。

  • TPRO(Trust Region Policy Optimization)
    高い報酬が得られる行動を優先し、低い報酬しか得られない行動を避けるように方策を最適化する学習アルゴリズム VPG(Vanilla Policy Gradient) を、学習が安定するように改良した学習法。
  • Actor-Critic
    「方策」と「価値関数」の両方を利用した学習法。
    「方策」は行動選択に用いられるため Actor と呼ばれ、「価値関数」を予測する部分はActorが選択した行動を批判するため Critic と呼ばれています。

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

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


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

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

[コマンド]

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

実行結果は次の通りです。(Ubuntu 19.10で動作確認しています。)


実行結果


なかなかうまくプレイできており1面はクリアできました。ACKTR はかなり優秀なアルゴリズムだという印象です。

Stable Baselines Zoo - インベーダーゲームを攻略 ACER(Actor-Critic with Experience Replay)編

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

今回使用する学習アルゴリズムは ACER です。

ACER は、A3Cをオフポリシーに書き換えて、Experience Replay を利用できるようにした学習アルゴリズムです。

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

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


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

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

[コマンド]

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

実行結果は次の通りです。(Ubuntu 19.10で動作確認しています。)


実行結果


ほとんど攻撃してないし、こそこそしてる割には簡単にやられるしまったく使えない学習済みモデルでした (;^_^A)

Stable Baselines Zoo - 学習アルゴリズムACERでBeamRiderNoFrameskip-v4を攻略

BeamRiderNoFrameskip-v4 を学習アルゴリズム A2C で攻略します。

BeamRiderNoFrameskip-v4 は、敵をビームで攻撃する単純なシューティングゲームです。

A2C は、A3Cを分散同期にした学習アルゴリズムです。

学習アルゴリズムA2CでBeamRiderNoFrameskip-v4を攻略

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


各オプションは以下の通りです。
  • 環境(env)
    BeamRiderNoFrameskip-v4
  • 学習アルゴリズム(algo)
    A2C
  • ステップ数(n)
    1000

[コマンド]

1
python3.7 -m utils.record_video --algo acer --env BeamRiderNoFrameskip-v4 -n 1000

実行結果は次の通りです。(Ubuntu 19.10で動作確認しています。)


実行結果


かなりうまくプレイしています。1面をクリアしててここまでちゃんと攻略してくれると気持ちいいです。