【Unity】ML-AgentsのExampleで学習を実行してモデルをつくる(ML-Agentsで機械学習&強化学習をやってみる その3)

投稿日:2022年1月11日
最終更新日:2022年1月11日

ML-AgentsのExampleを使って学習済みのモデルをつくる

前回までUnityでML-AgentsのExampleプロジェクトを実行して動かしてみた。今回は、Exampleプロジェクト内で学習を実行して、新たにモデルをつくるところまでをやってみる。

ちなみに、ML-Agentsではいくつかの学習アルゴリズムを選択可能だが、今回のExampleではPPO(Proximal Policy Optimization)という学習アルゴリズムをつかって学習する。

 

実行環境

Windows 10

Unity 2019.4.25f1

Anaconda 4.6.11 (Python 3.7.3)

 

学習済みモデルをつくって箱のキャラクターを動かしてみる

学習済みのモデルは、箱のキャラクターのモデル3DBallのAgentオブジェクトで設定されており、以下のModelと書いてある部分が学習済みのモデルとなる。

ML-Agentsの肝はこのモデルをつくることなので、Pythonを使って新規に学習を実行し、モデルを自分で作ってみる。

Anaconda Promptなどからcdコマンドでcloneしたml-agentsまで移動して、以下のコマンドを打つ。

# mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallR

すると以下のように学習がスタートするので、この状態でUnityを再生する。

再生中は学習が続いているので、prompt上で以下のようなメッセージが表示される。

[INFO] 3DBall. Step: 12000. Time Elapsed: 27.599 s. Mean Reward: 1.217. Std of Reward: 0.684. Training.

適当なタイミングでUnityの再生をStopすれば、学習は終了。以下のようなメッセージがpromptに表示され、results\first3DBallRのディレクトリ以下に3DBall.onnx.というモデルが出力される。

[INFO] Learning was interrupted. Please wait while the graph is generated.
[INFO] Exported results\first3DBallR\3DBall\3DBall-63693.onnx
[INFO] Copied results\first3DBallR\3DBall\3DBall-63693.onnx to results\first3DBallR\3DBall.onnx.

これをUnityのプロジェクト上のTFModelsにドラッグ&ドロップしてコピーする(既存のモデルと名前が被ってわかりにくいので、new3DBall.onnxという名前に変更した)。あとはモデルを付加したいObjectを選択して、以下のようにドラッグ&ドロップして設定すればOK。

今回は試しに右下のキューブにモデルを付加して、わかりやすいように箱の色を色を赤くしてみた。かなり学習時間が短いので、再生して見るとすぐにボールを落としてしまうことがわかる。

ひとまず機械学習の実行までできたので、ML-Agetnsの雰囲気は掴めてきた。

今回はExampleプロジェクトのシーンを使って学習を実行したが、次回は一からシーンをつくって学習を実行し、学習済みモデルをオブジェクトに付加して動かすところまでをやってみたいと思う。

 

参考文献

基本的には以下の本を読みつつ勉強していき、最終的には自分で何かしらゲームを作っていく予定。最低限ML-Agentsを使うための流れはブログで書いていこうと思っているが、詳細については説明しないので、深く理解するには本を買って勉強してみることをオススメする。

一部環境構築の記載などは古いけど、強化学習の概念やML-Agentsの学習方法、ゲームへの応用例などが日本語で整理してまとめられているので貴重な本だと思う。

古くなった情報を補完するため、本と合わせて以下のML-Agents Release 18の公式ドキュメントを参照している。

https://github.com/Unity-Technologies/ml-agents/tree/release_18_docs/

 

日記まとめ

この日記は以下でまとめてます。

【Unity】ML-Agentsで機械学習&強化学習をやってみる まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください