26
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【新ver】Unity ML-Agents v0.4.0の新機能など

Posted at

Unity ML-Agentsがひっそりとバージョンアップされv0.4.0になりました。公式から特に発表もなかったので、リリースから数日後に気づきました(笑)

v0.3からの変更点などを見ていきたいと思います。

#新サンプルの追加

新しくサンプルとしてWalker, Pyramids が追加されました。

Walker

walker.png

26自由度の2足歩行モデルです。前進することでプラスの報酬が与えられます。
OpenAI Roboschoolのやつを再現したものだと思います。

Pyramids

pyramids.png

フィールド内にあるボタンを押すとピラミッドが出現します。そのピラミッドを崩して、上に乗っかってる黄金ブロックをゲットすればゴールです。
いままでのサンプルに比べるとタスクの難易度は高いです。後述するCuriosity-Driven Explorationのためのサンプルでしょう。

Visual Observation, ILのサンプル追加

Unityカメラを使って、映像から直接強化学習を行うこともできます。

SnapCrab_NoName_2018-6-19_12-56-19_No-00.png

今までは、そのサンプルがGridWorldのみでしたが、以下の環境に追加されました。

  • BananaCollector
  • PushBlock
  • Hallway
  • Pyramids

また、Imitation Learningのサンプルもあらたに追加されました。

  • Tennis
  • Bouncer
  • PushBlock
  • Hallway
  • Pyramids

Curiosity-Driven Exploration

あらたにCuriosity-Driven Explorationと呼ばれる仕組みを使って強化学習できるようになりました。

エージェントの学習の過程には大きく分けて、Intrinsic Motivation(IM), Extrinsic Motivation(EM)の2つがあります。

参考:Extrinsic vs. Intrinsic Motivation: What's the Difference?

2795384-differences-between-extrinsic-and-intrinsic-motivation-5ae76997c5542e0039088559.png

EMは行為とは別のものが目的なのに対し、IMは行為そのものが目的になります。

現実世界では、外部報酬がほとんどないか、あるいは完全にないという状況があり、そのような状況ではEMによる方策決定はうまくいかないため、何かしらの工夫が必要になります。

Curiosity-Driven Explorationは、IMベースなモジュール(Intrinsic Curiosity Module : ICM)を強化学習アルゴリズムに組み込むことで、そのような外部報酬の乏しい環境で効率よく探索を行うための仕組みです。
Curiosity(好奇心)とは、つまり新規性のある環境に報酬を設定するということのようです。

method.jpg

参考:Curiosity-driven Exploration by
Self-supervised Prediction

trainer-configのほうから簡単にオンオフできるので実際にサンプルPyramidsで試してみました。

Pyramids_GIF.gif

SnapCrab_NoName_2018-6-19_16-29-19_No-00.png

オレンジ:PPO
青:PPO+ICM

PPOのみでは27万回実行した時点では全く学習できていませんが、PPO+ICMでは12万回ほどで学習が収束しています。
Pyramidsのように状態空間が広く、外部報酬の乏しい環境ではICMを組み込むことで、効率よく探索を行える可能性があります。

#Unity Editorで強化学習が可能に

いままでML-AgentsではPythonフォルダにUnityの環境をビルドして、強化学習を行っていました。
しかし、v0.4.0からはUnity Editorから直接強化学習できるようになり、いちいちビルドする必要がなくなりました。

やり方は簡単で、まずUnityでBrainTypeをExternalにします。

SnapCrab_NoName_2018-6-19_17-20-56_No-00.png

そしたら、PythonフォルダでAnacondaを開き、いつものようにコマンド入力します。

python learn.py --train

すると待機画面になります。

SnapCrab_NoName_2018-6-19_17-23-4_No-00.png

そしたら、Unityで実行ボタンを押します。

SnapCrab_NoName_2018-6-19_17-23-35_No-00.png

すると学習が開始されます。

わざわざビルドする手間が省けて非常に助かります。
もちろんいままでのようにビルドして学習というやり方もできます。

#参考

  1. Unity ML-Agents
  2. Roboschool
  3. Curiosity-driven Exploration by Self-supervised Prediction
26
22
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?