Unity ML-Agentsがひっそりとバージョンアップされv0.4.0になりました。公式から特に発表もなかったので、リリースから数日後に気づきました(笑)
v0.3からの変更点などを見ていきたいと思います。
#新サンプルの追加
新しくサンプルとしてWalker, Pyramids が追加されました。
Walker
26自由度の2足歩行モデルです。前進することでプラスの報酬が与えられます。
OpenAI Roboschoolのやつを再現したものだと思います。
Pyramids
フィールド内にあるボタンを押すとピラミッドが出現します。そのピラミッドを崩して、上に乗っかってる黄金ブロックをゲットすればゴールです。
いままでのサンプルに比べるとタスクの難易度は高いです。後述するCuriosity-Driven Explorationのためのサンプルでしょう。
Visual Observation, ILのサンプル追加
Unityカメラを使って、映像から直接強化学習を行うこともできます。
今までは、そのサンプルが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?
EMは行為とは別のものが目的なのに対し、IMは行為そのものが目的になります。
現実世界では、外部報酬がほとんどないか、あるいは完全にないという状況があり、そのような状況ではEMによる方策決定はうまくいかないため、何かしらの工夫が必要になります。
Curiosity-Driven Explorationは、IMベースなモジュール(Intrinsic Curiosity Module : ICM)を強化学習アルゴリズムに組み込むことで、そのような外部報酬の乏しい環境で効率よく探索を行うための仕組みです。
Curiosity(好奇心)とは、つまり新規性のある環境に報酬を設定するということのようです。
参考:Curiosity-driven Exploration by
Self-supervised Prediction
trainer-configのほうから簡単にオンオフできるので実際にサンプルPyramidsで試してみました。
オレンジ:PPO
青:PPO+ICM
PPOのみでは27万回実行した時点では全く学習できていませんが、PPO+ICMでは12万回ほどで学習が収束しています。
Pyramidsのように状態空間が広く、外部報酬の乏しい環境ではICMを組み込むことで、効率よく探索を行える可能性があります。
#Unity Editorで強化学習が可能に
いままでML-AgentsではPythonフォルダにUnityの環境をビルドして、強化学習を行っていました。
しかし、v0.4.0からはUnity Editorから直接強化学習できるようになり、いちいちビルドする必要がなくなりました。
やり方は簡単で、まずUnityでBrainTypeをExternalにします。
そしたら、PythonフォルダでAnacondaを開き、いつものようにコマンド入力します。
python learn.py --train
すると待機画面になります。
そしたら、Unityで実行ボタンを押します。
すると学習が開始されます。
わざわざビルドする手間が省けて非常に助かります。
もちろんいままでのようにビルドして学習というやり方もできます。
#参考