Unity ML-Agentsを一通り動かすまでのメモ
あくまで個人のメモです。基本的には以下の記事が詳しく書かれています。
メモ
SHELL切り替え
Anaconda上で学習をしようとすると、zshでは起動しなかったのでbashに変えました。原因は調べてないです。
//起動シェルを確認 $ echo $SHELL //シェル一覧 $ cat /etc/shells //起動シェルの変更 $ chsh -s /bin/bash
v0.4とv0.5でディレクトリ構成がガラッと変わる
Pythonディレクトリがなくなり代替としてml-agentsというものができる
build場所
ml-agent直下
学習実行
mlagents-learn config/trainer_config.yaml --env=3DBall --run-id=firstRun --train
※../config/trainer_config.yamlだとfile not foundになった
tensorboardで可視化
/Users/****/projects/Unity-ML-Agents/ml-agents/ml-agents で
tensorboard --logdir=summaries
を叩いてlocalhost:6006にアクセス
詰まったとこ
- conda install tensorflowとconda install tensorboardをしないといけない
- localhost6006にアクセスしても"No dashboards are active for the current data set."って言われる。よくわからなかったので未解決。
学習結果ファイルの取り込み
ターミナルかFinderで学習結果を以下フォルダにコピーします。
学習結果ファイル: ml-agents/models/firstRun-0/3DBall_firstRun-0.bytes 保存先: UnitySDK/Assets/ML-Agents/Examples/3DBall/TFModels/
Google Colabでの実行
ターミナルで以下を実行
pip install jupyter_http_over_ws jupyter serverextension enable --py jupyter_http_over_ws jupyter notebook \ --NotebookApp.allow_origin='https://colab.research.google.com' \ --port=8888 \ --NotebookApp.port_retries=0
Google colabで以下を実行
cd /Users/****/projects/Unity-ML-Agents/ml-agents !/anaconda3/envs/mlagents/bin/mlagents-learn /Users/****/projects/Unity-ML-Agents/ml-agents/config/trainer_config.yaml --env=/Users/****/projects/Unity-ML-Agents/ml-agents/ball3DMove --run-id=onColab --train
自分で問題を設定してみる
3DBallの問題に、前方のゴールを目指して移動しながらボールを保持する、というタスクも追加する。
- 1試行目
Vector Action | Continuous(3) ・0:z回転 ・1:x回転 ・2:z移動 |
Reward | ステップ毎:+0.1(に変更) ボール落下:-1.0(エピソード完) ゴール到達:+1.0(エピソード完) |
ステップ毎のアクション | z方向への移動を追加 |
結果
- 最初の報酬設計だとボールの維持による報酬が大きすぎてゴールへ到達しない。報酬を以下のように変えてみる。
2試行目
Reward | ボール落下:-1.0(エピソード完) ゴール到達:+1.0(エピソード完) |
変更方針 | ボールの維持による報酬が大きすぎたため、維持しているだけでは報酬を与えないことに |
結果
- ゴールが遠すぎたのか、反対側へ行くものが多くなった。ゴールの距離を半分にしてみる。
3試行目
ゴールまでに進まないといけない距離を半分にしてみる。
ちゃんと運べて偉いね〜〜〜 pic.twitter.com/3GlavZXin3
— ざわざわ@VRPianoVisualizer+ (@zawazawatw) 2018年12月13日
結果
- Goalまで運べるようになった!
おまけ 同じ条件でGoogle colab上でも動かしてみる
google colabでml-agents動かせたけど、逆に運んでしまってる~~~~ pic.twitter.com/zceW9q42PO
— ざわざわ@VRPianoVisualizer+ (@zawazawatw) 2018年12月15日
- 結果
- 同じ条件なのに反対側に進むという収束結果に。報酬の平均もマイナス値で、反対方向への探索がうまく行ってないみたい。goal方向に向かうことによる何かしらの小報酬が必要なのかな。やはり強化学習は報酬設計が大事という実感が得られた。
おしまい