🦾

Unityを強化学習の学習環境として使う方法

2021/12/08に公開

強化学習環境としてのUnity

Unity+ML-Agentsで強化学習環境の構築という記事で、ML-Agentsを使って強化学習をやってみたのですが、全く次に進めないのでML-Agentsを使わずUnityを強化学習の環境として使ってみたいと思います。

以下の3Stepで、UnityをOpenAI的な環境としてPythonで自由自在に扱えるようになります。

  • UnityをPythonのAPIを用いて制御
  • Unity上にオリジナルの学習環境を構築
  • Unity環境で強化学習の学習

想定している環境は、Windows(WSL2)/Linux(Ubuntu 20.04)/Intel Macです。Apple Silicon Macは少し頑張れば動きそうな気はしますが、動作未確認です。

UnityをPythonのAPIを用いて制御

以下の記事と同様にセットアップして、「UnityでML-Agentsを使う」のところまでを実施します(今回はML-Agentsでの学習は行いません)。

https://zenn.dev/karaage0703/articles/4a1c9b1c5185d4

Jupyter Labを以下コマンドでインストールします。

$ python3 -m pip install jupyterlab

Notebookをダウンロードします。

$ wget https://raw.githubusercontent.com/karaage0703/reinforcement-learning-sample/master/unity/01_ml_unity.ipynb

Jupyter Labを起動します。

$ jupyter lab

01_ml_unity.ipynbを開いて、上から順に実行していきましょう。

途中のRun the EnvironmentExecute Unityと記載あるタイミングでUnityを再生しましょう(今回は、サンプルとして3D Ballsを使っています)。

PythonからUnityの情報を取得したり、行動したり、ステップを進めることができます。

Unity上にオリジナルの学習環境を構築

以下記事参考に独自の学習環境を構築します。

https://www.suzu6.net/posts/273-mlagent-rollerball/

上記の記事では、新たにプロジェクトを作っていますが、私はUnity+ML-Agentsで強化学習環境の構築で使用したプロジェクトのExamplesに新たにフォルダとファイルを作成する形で始めました。

Unityの学習環境が完成したら、正しくPythonから制御できるかチェックします。先程使用したJupyter NotebookをJupyter Labで実行していきます。

エピソード数を100にしています。

すると、自分が作成したオリジナル学習環境で、エージェントがランダムに動き回ります。ターゲットに触れたら報酬が入ることが分かると思います。

これで、自分でUnityの学習環境も学習プログラムが作れました。

あとは好きにカスタマイズできそうですね。

Unity環境で強化学習の学習

ランダム戦略でなく、強化学習。特にディープラーニングで学習して、UnityでAIモデル(ニューラルネットワーク)を構築したいと思います。

ここから先は、これからです。

まとめ

Unity上にオリジナルの学習環境を構築して、強化学習をしています。

まだ道半ばですが、なんとかサンプルを乗り越えていきたいと思います。

参考リンク

https://github.com/sweetice/Deep-reinforcement-learning-with-pytorch

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

https://colab.research.google.com/github/Unity-Technologies/ml-agents/blob/release_18_docs/colab/Colab_UnityEnvironment_1_Run.ipynb

https://qiita.com/God_KonaBanana/items/7aebdb411c99b059cc6f

https://qiita.com/God_KonaBanana/items/913370021fd2fc790435

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

https://info.nikkeibp.co.jp/media/NSW/atcl/books/111100051/index.html

https://protopedia.net/prototype/2249

https://note.com/npaka/n/n228b876911c8

https://note.com/npaka/n/n05368fec4551

https://blog.unity.com/ja/games/made-with-unity-soccer-robots-with-ml-agents

https://www.youtube.com/watch?v=JidBpKgGoec

https://www.youtube.com/watch?v=hFKjVGoDXyw

Discussion