LoginSignup
5
3

More than 3 years have passed since last update.

Unity ML-Agentsで強化学習をやってみる。(環境構築〜サンプル実行編)

Posted at

サンプル的にブロック崩しの設定厳しめゲームを作った。機械学習の勉強も兼ねて強化学習を学んでみようと、このゲームをML-Agentsを使って学習させてみようと試みた記事。。。
始まりはこの本。
 https://www.borndigital.co.jp/book/6702.html
 しかし・・・ml-Agents色々変わってるし。。結局GitHubのドキュメントみながら一つ一つやっていくことになる。。
 (強化学習の概要を、マップ探索で説明してあって個人的にはわかりやすかった。)

環境構築

OS:macOS Mojave(10.14.5)

Unity

まずは、Unityのインストール。既に2018.03が入っていたがバージョンアップしてみる。。(バージョンアップで非対応コードが出ないか心配。。)=>Unity-Hubを導入。
 https://unity3d.com/get-unity/update
今まで使ってなかったけど、各種バージョンを一元管理できるので便利ですね。
(前バージョンからのマイグレーションも自動。。)
※大したことしていなかったので、マイグレーションが問題なく完了。

ML-Agents

UnitySDKのサンプルを動かしてみる

 次は、ML-Agents Toolkitをclone。適当にディレクトリを作成して。

 git clone https://github.com/Unity-Technologies/ml-agents.git

 落としてきたら、Unityでサンプルを動かしてみる。

  • UnityHubで「リスト追加」→ml-agents/UnitySDKを開く
  • Unityバージョンを最新に設定

開いたあとは(とりあえず3DBallでも・・・)

  • Assets/ML-Agents/Examples/3DBall/Scenesの3DBallを開いてシーンをロード
  • Ball 3D AcademyにセットされいてるBrains Assets/ML-Agents/Examples/3DBall/Brains/3DBallLearningのModelにAgents/Examples/3DBall/TFModels/3DBallLearningをセッ
  • Playを実行

 プレートがバランスを取りながらボールを落とさないように動くサンプルが確認できる!!

PythonとmlagentsPackageを入れる

 Pythonは既にpyenvを入れていたので、ml-agentsを入れたディレクトリ配下のpython環境を3.6.6に設定

$ pyenv local 3.6.6
$ python --version
Python 3.6.6
$ pip3 install mlagents

※ここで”You are using pip version 10.0.1, however version 19.1.1 is available.”アップグレードしろと。

$ pip3 install --upgrade pip setuptools

※依存関係の諸々で”pip3 install --upgrade pip ”だとうまく更新できず。。色々ググったらこれでいけた。(upgradeの方にもpip"3"付けたくなりますよね。。。)
あとはそれぞれのフォルダ配下でインストール

$ cd ml-agents-envs
$ pip3 install -e ./
$ cd ..
$ cd ml-agents
$ pip3 install -e ./

ml-agentsを起動して学習の確認

Unity側

AcademyのControlチェックボックスのチェックを入れる(入れないと学習したBrainsをロードして動く)
スクリーンショット 2019-08-28 20.24.58.png

ml-agent側:

$ mlagents-learn ../config/trainer_config.yaml --run-id=sample[これはなんでもOK] --train

スクリーンショット 2019-08-28 20.29.54.png

こんな具合に実行されてれ以下メッセージが出るのでUnity側を実行すると動く!!

INFO:mlagents.envs:Start training by pressing the Play button in the Unity Editor.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 1000. Time Elapsed: 11.224 s Mean Reward: 1.207. Std of Reward: 0.728. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 2000. Time Elapsed: 22.257 s Mean Reward: 1.296. Std of Reward: 0.759. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 3000. Time Elapsed: 33.052 s Mean Reward: 1.523. Std of Reward: 0.838. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 4000. Time Elapsed: 43.845 s Mean Reward: 1.806. Std of Reward: 1.128. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 5000. Time Elapsed: 54.400 s Mean Reward: 2.777. Std of Reward: 1.975. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 6000. Time Elapsed: 65.174 s Mean Reward: 3.922. Std of Reward: 3.448. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 7000. Time Elapsed: 75.998 s Mean Reward: 7.204. Std of Reward: 6.900. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 8000. Time Elapsed: 86.734 s Mean Reward: 9.579. Std of Reward: 10.298. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 9000. Time Elapsed: 97.146 s Mean Reward: 17.802. Std of Reward: 18.521. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 10000. Time Elapsed: 108.207 s Mean Reward: 22.553. Std of Reward: 23.049. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 11000. Time Elapsed: 119.127 s Mean Reward: 54.259. Std of Reward: 35.250. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 12000. Time Elapsed: 129.911 s Mean Reward: 58.905. Std of Reward: 35.462. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 13000. Time Elapsed: 140.319 s Mean Reward: 64.107. Std of Reward: 38.436. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 14000. Time Elapsed: 151.080 s Mean Reward: 73.244. Std of Reward: 33.077. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 15000. Time Elapsed: 161.689 s Mean Reward: 74.694. Std of Reward: 35.027. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 16000. Time Elapsed: 172.868 s Mean Reward: 94.123. Std of Reward: 20.358. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 17000. Time Elapsed: 183.989 s Mean Reward: 95.277. Std of Reward: 16.361. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 18000. Time Elapsed: 193.713 s Mean Reward: 94.962. Std of Reward: 17.454. Training.
INFO:mlagents.trainers: ponponRun-0: 3DBallLearning: Step: 19000. Time Elapsed: 204.282 s Mean Reward: 86.887. Std of Reward: 22.600. Training.

スクリーンショット 2019-08-28 20.31.44.png
初めは落とす落とす。。。
からの
スクリーンショット 2019-08-28 20.31.44.png
プレートがバランスを取るようになるのがわかる。。。

学習したファイルのロード

学習ファイルは以下フォルダに格納される。

 ./models/sample[起動時に指定したrun-id]/3DBallLearning.nn

ファイルをUnity側プロジェクトのAssetsにコピーして以下で読み込む。

スクリーンショット 2019-08-28 20.42.23.png

・AcademyのControlチェックを外す
・Brainsをダブルクリックする

スクリーンショット 2019-08-28 20.44.24.png

3DBallLearningがInspectorに表示されるので、ここのModelにコピーしたXXXX.nnファイルをドラック&ドロップする。

最後に実行すれば学習したデータが読み込めます。

参考

 環境構築および動作確認
 https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Installation.md
 

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3