11/14/2017

[Unity.2017.1.04p] 無知な私が機械学習に手を出す。[Macで環境構築編]

無謀なことに挑戦してみることにしたよ。

機械学習!
Unityで機械学習! なんかカッコイイ!
ゲームの対戦相手も作れるからもうひとりで寂しくない!
2次元のお友達を作ったりできるんですよ。
人生相談なんかもできるかもしれない…!
期待を胸に抱きながらUnityの動画を見てみます。
なんかみんな頭よさそうです。私も頭がよければ。。。



ちょっと前にPythonの基礎の基礎をやってみていたのだけど、へえー、ほおー、で終わってしまってたので、Pythonについてもう一度インストールのところからやってみます。
私は本当にプログラムとかわかってないし、ターミナル(Macユーザーです)使うのも本当に初心者レベルなので、私がやってできるならきっとみんな大丈夫!


やることは大きく2つ。

Unityのプロジェクト設定
Pythonの環境構築

結構ややこしかった!

Unityの方から設定するよ


まずGitHubにアクセス
https://github.com/Unity-Technologies/ml-agents


緑のボタンのところからZipでダウンロードします。
解凍するとフォルダの中はこんな感じ。


Unityを起動

プロジェクトを「Open」で上の画像の「mi-agent-master」というフォルダにたどり着いたら
「unity-environment」を選ぶよ。
 Unityの「File」→「Open Project...」から「unity-environment」を選ぶのでもOK。

3DBallを開く

プロジェクトの中の「Examples」から「3DBall」のシーンを開いてみよう。


ヒエラルキーでBall3DAcademyのBall3DBrainを選んだら、
インスペクタからBrain.csのBrain Typeを「Exterenal」に変える。


次に、BuildSettings...を開き、PlayerSettings...をクリックしたら
インスペクタの「Resolution and Presentation」をクリックし、
Run in Backgroundにチェックが入っているか確認。入ってなかったらチェックを入れる。
Display Resolution Dialogを  Disabledに。

そしたらBuildをクリックしてビルドします。
名前は好きなものでOKです。わたしはtest1にしておいた。

ここまでできたら一旦Unityの作業を置いといて次のフェーズに移るよ。

次はPython3 をインストールするよ!

Anaconda

今回Python3をインストールするにあたり、Anaconda3を使ってみることにした。なんかこれだとラクみたいなので。
Anacondaとは、Pythonそのものと、Pythonを使う時によく使うライブラリをまとめたパッケージのようなものです。ディストリビューションと呼びます。
なおカタカナでアナコンダと検索するとへびが出てきます。へび苦手な人は気をつけような。

https://www.anaconda.com/download/
↑ここから自分の使っているマシンのOSを選びます。
というか勝手にMacOS選ばれてた。

Python3.6バージョンをダウンロードします。


手順に従っていけばインストール完了まで特に問題ないはず。

AnacondaNavigatorというのがインストールされていると思うので、起動してみる。

TensorFlow

ここからTensorFlowというものをインストールします。

TensorFlowとは、Googleによって開発された機械学習用のオープンソースソフトウェアライブラリだそうです。
人間が行う学習や論理的思考と似たように、パターンや相関を検出し解釈するニューラルネットワークを構築、訓練することができるようなシステムのための要求を満たすものだということです。

このTensorFlowのインストールにもAnacondaNavigatorを使ってみる。



Environmentをクリック。
左下のCreateをクリックして「Tensorflow」などといった名前を付けて追加用の環境を構築します。

追加できたら三角をクリックしてOpen Terminalを選ぶとターミナルが起動します。

ターミナルに入力

pip install tensorflow



ターミナルに上記を入力します。
それだけで多分ちゃんとインストールされると思う。


Jupyter

次はJupyterというツールを使います。
AnacondaNavigatorのHomeをクリックすると、Jupyterなどのツールが表示されているのでJupyterの「Launch」をクリック。



するとターミナルが動いて色々やってくれて起動します。
正常に起動したらブラウザにJupyterが表示されるので、さっきのUnityの「ml-agents-master」から「Python」フォルダを探して以下のファイルをクリックして開きます。「PPO.ipynb」ていうやつ。




"environment"というところをUnityでビルドした名前に変えるんだけど、
元を消すのこわいからコメントアウトしておいた。
消してもいいみたいです。

で、Runします。
図のような感じで、ブロックごとにクリックして選択して「RunCells」をクリック。
このブロックは「セル」というらしい。


次に進めるボタンのようなものがあったので、これをクリックすると次のセルが選択された!

画像のブロック=セルのことです。

こんな感じで最後まで進めました。
途中、何度か変な警告でたんだけど、無視して進めました。
pythonの中にmodelsというフォルダを発見。




「PPO.ipynb」にUnityをビルドした時の名前のtest1を入れたので、ちゃんと「test1.bytes」というファイルが生成されていた!
これをUnityのExamplesの中にある3DBallの「TFModels」フォルダに移動させるんだ。
移動したら、
TFSharpPlugin.unitypackageをダウンロード。

https://s3.amazonaws.com/unity-agents/TFSharpPlugin.unitypackage

これがなんだかすごく時間かかって1時間以上かかってしまった。。。謎。

Unity に import

EditからProject Settingsを開きPlayerSettings...をクリック。
「Other Settings」の設定を以下のように変える。

  • Scripting Runtime Version を「Experimental (.NET 4.6 Equivalent) 」に。
  • Scripting Defined Symbols に「ENABLE_TENSORFLOW」を追加。




  • ヒエラルキー→Ball3DAcademyのBall3DBrainを選び、
  • インスペクタ→Brain.csのBrain Typeを「Internal」に変える。Graph Modelに先ほど移動した.bytesファイルをアタッチ。

こんな感じです。


ここまで設定して、プロジェクトを保存したら一度Unityを再起動。
このプロジェクトを開き、3DBallのシーンを開いたら再生してみよう。

なんか動いているぞ。






最初は動いていたけど止まった。。。
何度か繰り返すとその度に動きが違う。

初回は全部の板を動かしてプルプルしたけど、何度かやっているうちに数枚の板しか動かなくなり、他の板は最初から安定している。
ボールを板から落とさないように学習しているらしい!

……まだこれをどう活用したらいいのかわからないよ。
やっぱり自分が何をしたいのか考えないといけないな。
で、学習させる元データを作るのが大事っぽいな。


今回は機械学習させるための環境構築になります!

次回はこれを使って自分でも何かやってみよう!
って多分ものすごく勉強しないといけないな。
機械学習の前に自分が学習せなあかん(>ω<)


参考にした記事はこちらになります!
みなさまの記事のおかげでなんとかここまでできました!
どうもありがとうございます!

AnacondaのjupyterでTensorFlow環境を構築する方法【Mac版】-アプリとサービスのすすめ

Unity 2017 で Machine Learning Agents を使ってみる-Qiita

Unityが機械学習のライブラリを公開したので使ってみる (和訳付き)-Qiita

Unityの公式サンプルml-agentsでAIを試す - tanaka's Programming Memo

0 コメント:

コメントを投稿