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面をクリアしててここまでちゃんと攻略してくれると気持ちいいです。

Stable Baselines Zoo - 学習アルゴリズムA2CでBipedalWalkerHardcore-v3を攻略

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

BipedalWalkerHardcore-v3 は2Dの物理シミュレーション環境で、2足歩行の物体が前に進むほど高い報酬を得ることができます。

v3は落とし穴や障害物がある環境になります。

学習アルゴリズムA2CでBipedalWalkerHardcore-v3を攻略

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


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

[コマンド]

1
python3.7 -m utils.record_video --algo a2c --env BipedalWalkerHardcore-v3 -n 1000

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


実行結果


奇妙な動きにはなっていますが、ちゃんと前に向かって進んでいる様子を確認することができます。

Stable Baselines Zoo - パックマンを攻略 ACKTR(Actor Critic using Kronecker-Factored Trust Region)編

パックマンを各学習アルゴリズムで攻略します。

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

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

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

ACKTRでパックマンを攻略

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


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

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

[コマンド]

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

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


実行結果


DQN、PPO2、ACER、ACKTRと試してきましたが、今回の学習アルゴリズム ACKTR が一番いい成績となりました。

Stable Baselines Zoo - パックマンを攻略 ACER(Actor-Critic with Experience Relay)編

パックマンを各学習アルゴリズムで攻略します。

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

ACERActor-Critic with Experience Relay の略で、「方策」と「価値関数」の両方を利用した学習法 A3C をオフポリシーに書き換えて「Experience Replay」を利用できるようにした学習法です。

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

ACERでパックマンを攻略

次の条件で、学習アルゴリズム ACER の学習済みモデル使ってパックマンを実行し、その様子を動画ファイルに出力します。

  • 環境
    MsPacmanNoFrameskip-v4
  • 学習アルゴリズム
    ACER
  • ステップ数
    1000

[コマンド]

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

実行結果は次の通りです。


実行結果


DQNよりはましですが、PPO2とあまり変わらないくらいの成績だと感じます。。。

Stable Baselines Zoo - PPO2でパックマンを攻略する

以前パックマンを学習アルゴリズムDQNで攻略してみましたが、結果がいまいちだったので学習アルゴリズムを変えて実行してみます。

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

このアルゴリズムを簡単に説明しますと、

  1. 高い報酬が得られる行動を優先し、低い報酬しか得られれない行動を避けるように方策を最適化する学習法 VPG を、
  2. 安定化するように改良した学習法 TRPO を、
  3. さらに計算量を削減するように改良した学習法 PPO1 で、
  4. GPUに対応している学習法 PPO2 です。

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

PPO2でパックマンを攻略

次の条件で、学習済みモデルを実行している様子を動画ファイルに出力します。

  • 環境
    MsPacmanNoFrameskip-v4
  • 学習アルゴリズム
    PPO2
  • ステップ数
    1000

[コマンド]

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

実行結果は次の通りです。


実行結果


以前ためしたDQNよりは、だいぶ上手にプレイできているようです。