【unity】70行で簡単に機械学習サンプルを実装してみた

Unity
この記事は約5分で読めます。

今回は、unityの機械学習ライブラリ、mlagentsを使って機械学習サンプルシーンを実装してみました。

 

約70行で実装できるので、mlagentsを学び始めた初心者にとっては、学びやすい内容になっていると思います。

mlagents-Tool-Kitのサンプルシーンを動かしてみた後に、実際に機械学習をしてみたい方は、こちらのサンプルを実装してみることをおすすめします。

以下のようなものが完成品です。

 

 

スポンサーリンク

1.mlagentsを導入する

まず初めに新規プロジェクトをつくります。

[File]>[New Project]で新規プロジェクトを作成し、mlagentsを導入します。

mlagentsの導入は、以下の記事で詳しく紹介しているので、そちらを参考にしてみてください。

【unity】機械学習する環境を設定してみた

 

 

プロジェクトを作成したら、GameObjectを生成していきます。

 

スポンサーリンク

2.GameObjectを生成

[Hierarchy]へ以下のGameObjectを生成します。

 

・[Create]>[3D Object]>[Plane] 名前をFloorとする。

Position[0,0,0]

Rotation[0,0,0]

Scale[1,1,1]

 

・[Create]>[3D Object]>[Cube] 名前をTargetとする。

Position[3,0.5,3]

Rotation[0,0,0]

Scale[1,1,1]

 

・[Create]>[3D Object]>[Sphere] 名前をRollerAgentとする。

Position[0,0.5,0]

Rotation[0,0,0]

Scale[1,1,1]

[Inspectorビュー]>[Add Component]>[Physics]>[Rigidbody]

[Inspectorビュー]>[Add Component]>[New Scripts] 名前をRoller Agentへ変更。

 

・[Create]>[Create Empty] 名前をAcademyとする。

[Inspectorビュー]>[Add Component]>[New Scripts] 名前をRoller Academyへ変更。

 

Sceneに生成すべきオブジェクトは以上4つです。

GameObjectを生成した後は、機械学習するためのスクリプトを書いていきます。

 

スポンサーリンク

3.スクリプトを書いていく

機械学習するためのコードを書いていきます。

全部で約70行のコードなので全体の内容を理解しやすいかと思います。

 

・Roller Academy

Roller Academyは以上になります。

using MLAgents;を忘れずに。

RollerAcademyのスーパークラスをMonoBehaviour からAcademyへ変更します。

 

 

・RollerAgent

RollerAgentの中身は、以下3つのメソッドからなります。

AgentReset・・・ゲームをリセットする

CollectObservations・・・機械学習するための情報を取得する

AgentAction・・・Agentの行動を定義、報酬の設定をする

 

今回は、AgentのボールとTargetとの距離が一定距離以下になったときに、報酬を与えています。

 

以上でスクリプトは完成です。次に機械学習をしていきます。

スポンサーリンク

4.機械学習する

Unity上で操作します。

機械学習をするためのBrainをつくります。

[Assets]>[Create]>[ML-Agents]>[Player Brain] 名前をRollerBollPlayerとする。

[Assets]>[Create]>[ML-Agents]>[Learning Brain] 名前をRollerBollBrainとする。

 

先ほど作成したスクリプトへBrainを割り当てます。

・RollerAgent(GameObject)の[Inspectorビュー]>[Roller Agent]

[Brain]へRollerBollBrainを割り当てる。

ついでに[Target]へTarget(GameObject)を割り当てる。

 

・Academy(GameObject)の[Inspectorビュー]>[Roller Academy]

[Broadcast Hub]>[Brains]へRollerBollBrainを割り当てる。

 

ここまでで、機械学習の準備は完了です。

以下の手順はサンプルシーンを動かすのとほぼ同じです。

以下の記事を参考に機械学習をしてみました。

【unity】ml-agentsv0.6.0で機械学習をしてみた
(adsbygoogle = window.adsbygoogle || []).push({}); 今回は前回の続きとして、ml-agents v0.6.0で既存のモデルに機械学習をさせてみました。 ...

 

スポンサーリンク

5.実際に動かしてみた

実際に動かしてみた結果が以下のようになります。

設定をいじらなかったので、50000回分学習しました。

しっかりターゲットを追従できていますね。うまくできてよかったです。

 

今回のサンプルを実装することで、機械学習がunity上でどのように実装されているのかが理解できました。

より深く学びたい方は、unity公式ガイドを参考にしてみてください。(英語ですが、手順が細かく書いてあるのでわかりやすい。)

https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Learning-Environment-Create-New.md

 

 

最後まで読んでいただきありがとうございました。

タイトルとURLをコピーしました