基本的な環境構築とサンプルでの動作確認は終わりましたので、何か簡単なものを作ってみるのが次のステップですかね。
サンプルの中に「Basic」というプロジェクトがあり、これを自分で作ってみようと思います。ソースから仕組みを解読して、理解して、その上で自分のプロジェクトを作るという感じですね。
ここからは自分で調べて理解した内容をまとめておきます。
■ Basic (サンプル)
真ん中のロボットの顔みたいなものが操作キャラで、小さい球と大きな球がゴール。
- 小さい球にたどり着くと「報酬(小)」。
- 大きい球にたどり着くと「報酬(大)」。
ロボットのキャラを操って、いかに高い報酬を得るかというゲームですね。
機械学習では、どういう操作をすればどういう報酬が与えられるかを学習して、それにより最善の操作(高い報酬を得るにはどうすればよいか)を学習するというものです。
まずはML-Agentsの構造から…。
★ ML-Agentsの構造 ★
ML-Agentsの構造は、調べてみると、以下の3つからなるようです。
- Academy
- Brain
- Agent
■ Academy
学習環境を管理する環境。
■ Brain
Agentが観測した状態に応じて、Agentの行動を決めるオブジェクト。
ただ、調べてみたところ、ML-Agents v0.11.0あたりで、Unity上でBrainオブジェクトは廃止されたようです。(全体的な仕組みは変わらないのかもしれませんが…)
なので、新しいバージョンのML-Agentsを使用する場合は、Brainオブジェクトはありませんし、作れないようです。ネット上にある情報は、古いバージョンのML-Agentsが大半のため、自分の場合はBrainがないことに結構ハマりました。
■ Agent
学習環境内で行動するオブジェクト。
環境の状態の観測と、Brainが決定した行動の実行を行う。
また行動に応じて報酬(Reward)を得る。
次は、具体的な実装へ。