前回ML-Agentsで、鳥居をくぐるだけのAIを作ってみたが、キャラクターと差し替えようとしてもうまくいかなかった。カメラ位置やセンサー位置やコントローラの微妙な動作の違いでうまくいかなくなってしまうようだ。
なので、共通のコントローラにキャラクターとシンプルなポリゴンくっつけてトレーニング中はシンプルなポリゴンのみ表示して、キャラクター非表示にしてみた。
トレーニング時に使用した鳥居とはちょっと違う形状の鳥居を置いてもちゃんとくぐってくれる。ただ、やはりキャラクターの形状をトレーニング時と変えてしまうとCollisionも変わってしまうので、鳥居に引っかかって止まってしまったりする。
衝突判定つけて鳥居に当たったら減点報酬するようにしたが、今度はLossが減らなくなった。まあ、なんか難しいんだろうね。
キャラクターを Rayや、Cameraのテクスチャ使ってトレーニングする場合は、vectorActionで回転と前後移動を入れてやらないとうまくいかなかった。
前後移動と横移動にする場合は、localPositionとかだとうまくいくけど物によっては汎用性なくなるので、位置情報はあまり使いたくない。
Camera/Render Texture と Ray Perception とどちらがいいかはケースバイケースな感じだが、画像だとマテリアル変わったら反応してくれなくなりそうな気はする。
シンプルなものならだいたい20~30万で収束してくる模様。GPUなら大して時間かからない。うまくいかないときは、カメラやRayの設定見直すと改善する場合がある。