UnityでML-Agentsを習得しようとして「Unity ML-Agents実践ゲームプログラミング」に沿ってやっていった中での内容です。
主に4章についてのものです。
気づいた注意事項的なものを備忘録として残しておきたいと思います。
熟練者には言われなくてもわかっているよというものもあるかもしれないので初心者向けということになるかもしれません。
時間があまりなかったので主に文章だけでの書き残しです。
目次
1.気がついた注意事項1
これはおかしかったわけではなく分かっている人にはあたりまえのことかもしれませんが、2-2のはじめにあるML-Agentsパッケージの追加インストールはプロジェクトを一から作る場合は毎回やる必要があるということです。
この本の流れの場合、おおよそ前回のプロジェクトからスタートしてそれを変更してというパターンなのであまり意識しなくていいかもしれませんが、ある時一からプロジェクトを作ろうとして若干はまってしまいました。
前回のプロジェクトからスタートしてという場合はすでに入っているので問題ないですが、一からプロジェクトを作ろうとしてという場合は必要になります。
2.気がついた注意事項2
これは、ちょっとメモだけ書き残していたので間違っていたら申し訳ないですが、一通りプロジェクトを作成して以下のようにしてml-agents-learnの実行をする場合、初期の段階でエラーが発生したようです。
mlagents-learn ./config/sample/RollerBall.yaml --run-id=RollerBall-1
その原因として、Python3.9.10以降だとエラーが発生するというものがありました。
そのため、Pythonのバージョンを3.9.9にしています。
3.気がついた注意事項3
細かいことですが、4-5を実施する際には、GameManagerにGameManagerスクリプトを追加するという記載がないと思いますが必要です。
GameManagerスクリプトにはパブリック変数としてagentsとballがあるのでそれぞれPingPongAgentsとBallをアタッチしなければなりません。
PingPongAgentsを2つあるのでid=0のものとid=1のものをそれぞれ0,1番目に入れました。
ScoreAreaにもパブリック変数gameManagerがあるのでGameManagerのアタッチが必要です。
パブリック変数がらみは4-5以外でもいくつか同様のことはあったかもしれません。
4-5の場合、あとは学習を実行した時に通常みている累積報酬(MeanReward)は
正しい指標にならないため、TensorBoard側のELOという指標をみる必要があるということです。
これは書いてありますが細部までよく読まずにやると思わぬ時間をとられます。
4.気がついた注意事項4
4-4、4-6あたりをやっていた時にエラーは出ていないのに何回やっても動かずうまくいかなかったことがありました。
これはかなりてこずったのですが、本の通りやるとどうも追加する順番がよくなかったようです。
ひょっとすると使用しているバージョンなどにもよるのかもしれませんが。
Cubeから作成したRaycastAgentにAddComponentでコンポーネントを追加していく時に
本の通りにやると、
BehaviorParameters→DecisionRequester→RayPerseptionSensorComponent3D
と追加してから
RaycastAgentスクリプトを追加となっているのですが、
この順番でやるとDecisionRequesterあたりを追加した時にAgentというスクリプトが依存関係で自動的に追加されてしまいます。
こうなるとAgentとしてはこのAgentというスクリプト側を使用するような設定になってしまうようでその後に追加するRaycastAgentスクリプト側を使ってくれなくなるように思います。.
それで動作しなくなっていたようでした、自分達がやった感じでは。
そのため、Cubeから作成したRaycastAgentにコンポーネントを追加していく時には、
はじめに、
RaycastAgentスクリプトを追加
してから
その他のコンポーネントを追加(BehaviorParameters→DecisionRequester→RayPerseptionSensorComponent3D)
していくようにしました。
これで一通りエラーもなく動作するようになり報酬も増加するようになりました。
以上が、ML-Agents習得のために「Unity ML-Agents実践ゲームプログラミング」をやった時の主に4章関連の注意事項になります。