この記事を参考にml-agentsのサンプルを動かしてみた
- Python(Anaconda3)をインストール
Release ML-Agents Release 3 · Unity-Technologies/ml-agents · GitHub
これをDLして、解凍し、
- Anaconda上で動くPowerShellを使って、以下をインストール
pip3 install -e ./ml-agents-envs pip3 install -e ./ml-agents
- Unity用のML-agentsのプロジェクトをUnity2018.4に読み込んで、3dballサンプルを動かしてみる
これは学習結果で動いているので学習はしてない
3dballのPrefabsの3DBallをダブルクリックしてagentのmodelの学習結果をnoneにして無学習状態にする
PowerShell上で、
mlagents-learn config/ppo/3DBall.yaml --run-id=first3DBallRun
学習側を実行。学習の定義はyamlファイルらしい。
コンソールにUnityのPlayを押せと出るので、学習を開始する
Unity側の学習エージェントとLearn側はport5004を使って通信してる模様
ボールを落とさないように箱が必死に動く
ステップが進むにつれて、強化学習の報酬が増えていく
unity側を止めるまで学習が続く。
492000ステップまで進んで学習の報酬が100に達したので、learn側からUnity側へ終了が働いた。
結果は、results/first3DBallRunの中に3DBall.nnとして出来ていた
nnはニューラルネットワークの略かな?
初めport5004と通信できなくて、Unity側がTImeOutErrorになってたんだけど、いつのまにかエラーにならなくなった
まずLearn側を動かして、次にUnity側を動かす。順番を逆にしてport接続エラーになってた気がする
cudaが使えるらしいがうちはRadeonなので無いです。・゚・(ノ∀`)・゚・。
↑Radeon使って学習できるソースもあるらしいけど、試した人がCPUより遅くなったって書いてた
二人vs二人のサッカーの強化学習サンプル
見てる限りかなり学習が遅い。ボールすら触らずにうろうろしてるだけに見える
かなり時間がかかりそうだ
自己対戦学習なんで報酬が役立たず、ELOを指標に学習が進むらしい
ELOってチェスのレーティングと同じやつ?
学習開始はサッカー用の定義ファイルを指定して実行する
mlagents-learn config/ppo/SoccerTwos.yaml --run-id=firstSoccerRun
学習経過を確認できる
右側は一回のプレイ時間。長ければいいもんでもない。左は累積報酬で上がっていけばいいらしい
なかなか表示させられなかったが、Resultsの中のFirstSoccerRunの中のSoccerTwosフォルダー内にライブの情報があるので
そこを指定してTENSORBOARDを実行する