1
0

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 3 years have passed since last update.

Unity ML-Agents で好奇心を持つエージェントを使ってみた

Posted at

好奇心をもったエージェントは、学習することで高速でぐるぐるまわることができるようになりました。
コードはこちら

好奇心とは?

好奇心(curiosity)とはどういう定義だという話ですが、ここでは未知の状態に訪れた報酬のことを言います。
定義してしまうと、好奇心も一つのパラメーターですね。

そして、結果的に好奇心ありとなしでは、圧倒的に学習スピードが異なります。
残念ながら今回のテストでは好奇心のないエージェントはほぼ学習することがありませんでした。

やったこと

  • エージェントがぐるぐる半時計周りに1周するごとに報酬を与える
  • エージェントが偶然一周するのはなかなか難しい(言い換えると偶然周ることもある)

結果

オレンジ:好奇心あり、ブルー:好奇心なし
bandicam 2020-10-10 18-53-04-767.jpg

学習曲線

好奇心ありだと途中からの学びが全然違いますね。
学習なしでも周ることがあるので、ものすごい時間をかければ学習できる可能性はあります。
bandicam 2020-10-10 18-53-31-448.jpg

好奇心による平均累積報酬グラフ

今回はぐるぐる回るだけの単純な環境なため、あるポイントから好奇心による報酬が減っていることがわかります。
bandicam 2020-10-10 18-54-03-917.jpg

その他

最初は進める方向を3軸に方向に設定していたのですが、学習が全然進まずうまくいきませんでした。
結局XZの平面に固定することでうまく学習するようになりました。
3軸から2軸に変更したのは、私自身が操作してぐるっと回そうとしたときに、難しすぎると感じたからです。
エージェントが機械的に操作する場合も同じで、難しすぎるといかに好奇心があっても学習が難しいらしく、
ある程度操作できる状態にすることで解決できました。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?