Unity

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

投稿日:

今回は、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を割り当てる。

 

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

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

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

https://your-3d.com/unity-mlagentsv060-act/

 

スポンサーリンク

 

 

5.実際に動かしてみた

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

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

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

 

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

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

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

 

 

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

 

スポンサーリンク

 

当サイト(your-3d.com)の管理人のゆあーさんと申します。

このサイトでは、私がZBrushやunityなどで調べたことをわかりやすく共有出来たらいいなと思い開設しました。

読んでくださった皆様のお役に立てたら幸いです。

 

Twitter:

@yoursun3d

 

Booth(3Dモデル販売してます!):

https://your-3d.booth.pm/

 

Amazonほしいものリスト:

https://www.amazon.jp/hz/wishlist/ls/YIXXWB7FVXHG?ref_=wl_share