今更ながら、ML-Agetntsを触っております。インストール方法や、tutorialは山のようにネット上に転がってるので割愛!ただ、バージョンごとに仕様が大幅に変わってるので最新の情報じゃないとミスリードになってしまいそう。
https://unity3d.com/jp/machine-learning

if (target.GetComponent<MeshRenderer().bounds.Contains(transform.position)) { AddReward(1.0f); Done(); } if(!area.bounds.Contains(transform.position)) { AddReward(-0.1f); Done(); }
リワードは上のような感じにしてみた。ターゲットに入ったらご褒美、エリアからはみ出したらブッブー!
超簡単なシンプルな設定でやってみようと思ったのだが、なかなかうまくいかず。手前からは鳥居に入ってくれるが、後ろからだと全然入ってくれない。
Ray Perception Sensor 3DというComponentがあって、これを使うとCollectObservations内に処理を書かなくても自動的にObserveしてくれるようなので、使ってみたのだが、Componentを1つだけ追加して、そこの Detectable Tags内に 報酬になるターゲットと減点になるターゲットを両方指定してしまっていたのが原因だった模様。
Ray Perception Sensor 3D のComponentを2つに分けて それぞれのターゲットを別々にしてみたら、いい感じになった。
他のグラフはまだあまりよくわからないが、Rewardが増えて、Lossが減るのは良い結果のような気がする。