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よりは、だいぶ上手にプレイできているようです。

Stable Baselines Zoo - 学習済みモデルを動画ファイルに出力(SpaceInvadersNoFrameskip-v4)

Stable Baselines Zoo の動画ファイル出力機能を使って SpaceInvadersNoFrameskip-v4環境 を実行する様子を動画ファイルにしてみます。

SpaceInvadersNoFrameskip-v4環境 は、有名なインベーダーゲームです。

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

学習済みモデルの動画ファイル出力(SpaceInvadersNoFrameskip-v4)

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

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

[コマンド]

1
python3.7 -m utils.record_video --algo a2c --env SpaceInvadersNoFrameskip-v4 -n 10000

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


なかなかちゃんとプレイできているようです。

Stable Baselines Zoo - 学習済みモデルを動画ファイルに出力(SeaquestNoFrameskip-v4)

Stable Baselines Zoo の動画ファイル出力機能を使って SeaquestNoFrameskip-v4環境 を実行する様子を動画ファイルにしてみます。

SeaquestNoFrameskip-v4環境 は、水中で敵を倒し救出するゲームで、シューティングの要素も含んでいます。

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

学習済みモデルの動画ファイル出力(SeaquestNoFrameskip-v4)

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

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

[コマンド]

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

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


敵を倒しに行っているような気はしますが、人を助けようとする雰囲気はありません。
人の色と海の色が似ていて認識できていないんでしょうか・・・。

Stable Baselines Zoo - 学習済みモデルを動画ファイルに出力(PongNoFrameskip-v4)

Stable Baselines Zoo の動画ファイル出力機能を使って PongNoFrameskip-v4環境 を実行する様子を動画ファイルにしてみます。

PongNoFrameskip-v4環境 は、対戦型のピンポンゲームです。

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

学習済みモデルの動画ファイル出力(PongNoFrameskip-v4)

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

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

[コマンド]

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

上記コマンドを実行すると、次のような動画ファイルが出力されます。


実行結果


無駄な動きが多く、ほとんど得点できません。学習済みデータを使わずにハイパーパラメータを調整して学習しなおす必要がありますね。