Cou氏の徒然日記

ほのぼの日記ブログです。

Unityで遊ぼう [機械学習編] その2 (ML-Agentsの構造)

coublood.hatenablog.com

基本的な環境構築とサンプルでの動作確認は終わりましたので、何か簡単なものを作ってみるのが次のステップですかね。

サンプルの中に「Basic」というプロジェクトがあり、これを自分で作ってみようと思います。ソースから仕組みを解読して、理解して、その上で自分のプロジェクトを作るという感じですね。

 

ここからは自分で調べて理解した内容をまとめておきます。 

■ Basic (サンプル)

f:id:coublood:20200504194000p:plain

真ん中のロボットの顔みたいなものが操作キャラで、小さい球と大きな球がゴール。

  • 小さい球にたどり着くと「報酬(小)」。
  • 大きい球にたどり着くと「報酬(大)」。

ロボットのキャラを操って、いかに高い報酬を得るかというゲームですね。

 

機械学習では、どういう操作をすればどういう報酬が与えられるかを学習して、それにより最善の操作(高い報酬を得るにはどうすればよいか)を学習するというものです。

 

まずはML-Agentsの構造から…。

★ ML-Agentsの構造 ★

ML-Agentsの構造は、調べてみると、以下の3つからなるようです。

  • Academy
  • Brain
  • Agent

f:id:coublood:20200504201259p:plain

 ■ Academy

 学習環境を管理する環境。

 ■ Brain

Agentが観測した状態に応じて、Agentの行動を決めるオブジェクト。

 

ただ、調べてみたところ、ML-Agents v0.11.0あたりで、Unity上でBrainオブジェクトは廃止されたようです。(全体的な仕組みは変わらないのかもしれませんが…)

なので、新しいバージョンのML-Agentsを使用する場合は、Brainオブジェクトはありませんし、作れないようです。ネット上にある情報は、古いバージョンのML-Agentsが大半のため、自分の場合はBrainがないことに結構ハマりました。

 ■ Agent

学習環境内で行動するオブジェクト。

環境の状態の観測と、Brainが決定した行動の実行を行う。

また行動に応じて報酬(Reward)を得る。

 

 

次は、具体的な実装へ。

coublood.hatenablog.com