山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

Unityではじめる機械学習・強化学習 Unity ML-Agents実践ゲームプログラミング その2

CHAPTER 2 サンプルの学習環境の実行

環境設定

Python (Anaconda)

機械学習と言えばPythonですね。Unityで機械学習を行うためにPythonスクリプトを使うのでPythonが必要となります。また、Pythonのライブラリを使うことからAnacondaを使うことが推奨されます。

www.python.jp

これから先はPythonの知識がないと詰んでしまいます。

だから最近、Pythonの勉強をしていたんですね。

これがメガトン構文です。

Unity ML-Agents

Unityで機械学習させるためのアセットとPythonスクリプトです。

github.com

TesorFlowSharp plugin

C#からTensorFlowを使うためのプラグインです。

github.com

f:id:yamakasa3:20180807212952p:plain

TensorFlowSharp plugin をクリックしてダウンロードできます。

動かしてみる

参考にしたサイト。

qiita.com

Anaconda Navigator でターミナルを開いて、

pyhon3 learn.py ball3d.app --train

を入力すると本に書いてあったんですが、僕の環境はwindowsなので、

python learn.py ball3d.exe --train

とすると動きました。まあ、ml-agentsのpythonフォルダに3dBallを保存していなかったので、具体的には下のようになっています。

(mlagents) C:\FreeSoft\ml-agents-master\python>python learn.py C:\MyWoks\UnityMLAgents\3Dball\3Dball.exe --train

今気が付いたんですけど、MyWoksになっていますね。

f:id:yamakasa3:20180807225611p:plain
3DBallを学習中

f:id:yamakasa3:20180807225625p:plain
学習結果

ん?そもそも入力はなんなんだ?

TensorBoardで学習状況を確認する

Localhost: 6006 でTensorBoardを見ることができるようです。

各項目の説明は下から。

qiita.com

f:id:yamakasa3:20180807230606p:plain

Lessonはカリキュラム学習ではないので、0のままです。

cumulative reward: 累積報酬はスッテプ数が増加するにつれて増加していきます。

entropy: 減少してくことが好ましいです。

f:id:yamakasa3:20180807234854p:plain

episode length: 3DBallのようなゲームの実行時間が長ければプラスの評価の場合、増加していくことが望ましいです。

learnin rate: 学習率は減少してくことが望ましいです。

policy loss: 学習成功時に減少するので、継続的に減少することが望ましいです。

value estimates: 報酬の予測値です。これは増加していくことが望ましいです。

value loss: 予測する報酬と実際の報酬との差です。最終的に減少することが望ましいです。

学習成果

youtu.be

感想

何がおこっているんだ・・・。

何を入力しているのか分からないので、何を学習させているのか分かりません。多分、ボールの位置と板の傾きから入力を決めていると思うんですが、例題としては難しいような気がします。

倒立振子より問題のスケールが大きいよね?

次の章は迷路ゲームなのでまだ分かりやすいと思います。

Pythonで基礎から機械学習を学んだ方が良いのかもしれないです。この本を終えたら買おうかな。