#Unity
#tensorflow
#ml-agents
#強化学習

unityのml-agentsでtensorflowを使った強化学習を試してみる

追記

  1. tensorboardの記述を追記
  2. 学習後の動画を埋め込んでみました。

はじめに

 youtubeでSirajさんの
Unity AI - Unity 3D Artificial Intelligenceを見て、これは勉強会のネタになりそうだ、ということで、unityのml-agentsでtensorflowを使った強化学習を試してみた。3DBallサンプルの記事は、日本語で素晴らしい記事がたくさんあるので、リンクだけ。

https://qiita.com/Ao_i/items/18dec197434c7f853a92
http://nn-hokuson.hatenablog.com/entry/2017/12/26/213456
http://naomo.co.jp/2017/09/unityがtensorflowに対応/
https://qiita.com/dora-gt/items/bacce436de2a3cdb1ef4
http://am1tanaka.hatenablog.com/entry/2017/11/08/230525

tennisサンプル

 tennisとは言っても、卓球(table tennis)のシミュレーションのようだ。
Screen Shot 2018-01-28 at 16.17.58.png

 このサンプルを動かす時にハマったのは、下記の3点。

  1. unityの[Hierarchy]タブの[Academy]以下にbrainが二つあると、python実行時にエラーになるので、一つにする
  2. unityのBuild時に[Scenes in Build]でtennisにチェックをつける(選択する)

Screen Shot 2018-01-28 at 16.42.26.png

  1. 最後に、学習済みモデルで動作させる際、[Graph Placeholder] sizeは 0のままで良いようだ。

tensorboard

 学習の経過を確認するのに、tensorboardで見ることができます。うまく学習が進んでいるようです。

Screen Shot 2018-01-28 at 19.22.56.png

学習結果

最後に

 pythonのコード自体は、3DBallもtennisも共通で行けるところが、頭では分かってはいたつもりだが、強化学習の汎用性の高さを感じる。また視覚的に動きが見えることで、強化学習の特徴が非常にわかりやすい。