【unity・機械学習】unityと機械学習を組み合わせることができるらしいのでマサフィーも試した話!-実践編-

【unity・機械学習】unityと機械学習を組み合わせることができるらしいのでマサフィーも試した話!-実践編-

【unity・機械学習】unityと機械学習を組み合わせることができるらしいのでマサフィーも試した話!-開発環境構築編-

前回の記事を読んでない人は、どんな風にインストールしたのか一応書いてあるので良ければどうぞ~

ということで、今回は実践編で、下記のリンクのQiitaに書かれている通り、ボールが落ちないように学習していき、その結果を表示することを目標にやっていきます。
https://qiita.com/2019Shun/items/d811bbd470fc9cddcc3d

学習の始まり

前回は「サンプルプログラムの動作チェック」のところまで無事に終わりました。

ここから、「以上でサンプルプログラムの動作チェックは終了です.」のところまで、手順通りやれば問題なく動かせました!

ちなみにマサフィーの機械学習の結果は以下の通りで、ほとんどqiitaで紹介されている内容と変わりありませんでした。

また、tensorboard についてもqiitaと同様の内容になりました。

だいたい、200kのステップがいい感じで、300kステップになると過学習と思われる学習率の低下が起きてますね。

書く内容はqiitaにすべて書いてありましたw
少ない内容ですが、この章は終わりですw

新しい強化学習

qiitaで紹介されている「新しい学習環境の作成と強化学習」の章をマサフィーも挑戦してみようと思います。

qiitaの内容通りでほとんどできましたが、一部、Unityが固まってしまう事象があったので、対処法を書いておきます

エラーの出現

機械学習で5000ステップ目に入ろうとしていたところ、Unityが応答しない現象に出会わせてしまいました。たまたまかなと思い、2回やってみましたが、やはり5000ステップ目でエラーが出てしまい、その先に進めなくなってしまいました。

直感的に、”NVIDIA GPU Computing Toolkit”が悪さをしてるのではないかな?と考えました。

GPUで機械学習を行わせようとするとNVIDIA GPU Computing Toolkitが必要になってくるのですが、それをインストールし、一部ファイルの名前を書き替えないといけない場面が出てきてしまい、無理やり書き換えたのが原因だったようです。

ここにあるcudart32-110.dllをcudart32-101.dllに変更してたのですが、上記の通り、元の名前に直してあげると、無事に動作しました。

学習結果

100万回はあまりにも長すぎたので、15万回の学習でひとまずこんな感じになりました。

5万ステップごとにしか、結果を出さないように設定されていたので、微妙なグラフになっていますが、右肩上がりなのが、確認できます。

リワードが大きくなった=学習がうまくいっているととらえてOKです。
また、標準偏差も小さくなっていると考えられるので、マサフィーの場合はここで学習をストップさせました。

この動画ではわかりませんが、しばらく見ているとやはり、まだ、球が落ちるときがあります。
さらなる学習が必要ですが、今回はここまで。

 

プログラムの説明

https://note.com/9_23/n/nf7876bda1948#wuilj
上記のリンクが日本語で説明されていて、とてもわかりやすいです。

https://github.com/Unity-Technologies/ml-agents/blob/release_1/docs/Learning-Environment-Create-New.md#add-the-agent-sphere
英語でも良ければ上記の公式リンクでもまぁわかりやすい!

 

次回は自分で機械学習が作れるように頑張っていきたい。