Blog

新人日記

Unityで機械学習をしてみる

プログラマーの国井です。つい最近まで夏のような暑さが続いていましたが、一気に寒くなりましたね。

さて、今回は、本屋で見つけたこちらの書籍を参考に、Unity ML-Agentsを使用した簡単な機械学習を紹介したいと思います。

Unity ML-Agents 実践ゲームプログラミング v1.1対応版 (Unityではじめる機械学習・強化学習)
布留川 英一(著)


ML-Agents (Machine Learning Agents)とは、2017年9月17日にリリースされた、Unity初の機械学習が出来るオープンソースプラグインです。「Unity環境」と「学習用のPythonスクリプト」を連携させてUnityのシーン内で、機械学習を行う事が出来ます。

機械学習の代表的な学習方法には、「教師あり学習」、「教師なし学習」などがありますが、今回行ったのは「強化学習」といって、学習する対象(エージェント)が、与えられた環境に対して何かしらの行動を取った後、その行動によって変化した状態と報酬を環境から受け取り、それを元に、エージェントが累積報酬の最大化を目指して繰り返し行動パターンを学んでいく学習方法です。

強化学習

今回、書籍を参考に私が作成したのは、「立方体とボール(エージェント)がランダムに配置された環境において、ボールが立方体の方向に転がる事を学ぶ」学習環境です。概要としては、ボールが立方体に接触できた時は報酬を与え、接触できずに床から落ちてしまった時は、報酬を与えないといった形で学習を行います。具体的な環境構築方法や、詳細などは省かせて頂きますが、実際に学習している過程を簡単な動画で紹介させて頂きます。

下記動画は学習を始めたての時のものです。立方体に向かう様子はなく、すぐに床から落下しています。

学習を始めたての様子

しかし、学習を始めて15分が経った頃には、床から落ちる事は少なくなり、ほぼ毎回立方体に接触出来ています。

学習を始めて15分後

以上、簡単ではありますが、Unity ML-Agentsを使用した機械学習の過程をご紹介しました。
以前は、敷居が高そうだなと思っていた機械学習環境を手軽に実装出来たので、とても良い経験になったのですが、先ほど紹介させて頂いた書籍に載っているツールやライブラリの種類、一部コードの情報が古かったため、ネットで調べながらの作業となった事が中々大変でした。機械学習の分野は日々進歩しているため新陳代謝が激しく、ごく短い期間で環境が変わってしまう事を身を持って実感しました。
ですが、まだまだ勉強になる内容がたくさん載っているため、これからも参考にしながら読み進めていきたいと思います!

次の記事へ