Minecraft環境で強化学習をやった話

2021年06月28日

お久しぶりです。M1の山口です。 先日Minecraftというゲーム上で、移動ロボットを走行させる手段の1つである強化学習をする試みを行いました。

Minecraftとはブロックでできた世界で生活をするゲームであり、敵をどんどん倒すもよし、悠々と牧畜するもよし、建築するもよし、友達と冒険をするもよしのプレイヤーが自分なりに目標や目的を決めて遊ぶことのできる自由度の高いゲームです。 Minecraft公式 また、Minecraftは内部データを比較的自由に書き換えることができ、自作で改造データ(MinecraftはModの作成・使用を公認)を出している人が多くいます。

今回授業の一環としてロボット用のシミュレータ開発をする課題があったので、個人的に遊んだことがあり、興味があったMinecraftのシミュレータ環境で強化学習をしてみようと思いました。

今回Microsoft Azureという仮想マシン上に、marLoというOpenAI's Gym互換のMinecraft環境を構築した上で強化学習を行いました。 環境構築の際に参考にさせていただいたサイトはこちらです↓

https://qiita.com/ikeyasu/items/d6e587126a54ce559604 https://qiita.com/keisuke-umezawa/items/fcf5d00474e244217a5e

学習環境は明治大学中野キャンパス内の弊研究室前を再現しました。 <上から見た図> img ↑この部分を切り取って img ↑この様にしました  図で示すように赤いマスをスタート地点、青いマスをゴール地点としてDQNで学習させました。この時強化学習の入力は画像のみで出力は前進か方向転換になっています。報酬はゴールした時に正の報酬を、壁にぶつかった時と時間切れの時に負の報酬を与えています。

<エージェント視点> img ↑実環境のスタート地点付近 img ↑Minecraft環境のスタート地点付近

img ↑実環境のゴール地点付近 img ↑Minecraft環境のゴール地点付近

Minecraftを用いて環境を構築する時、Minecraft側で用意されているブロックやアイテムの中で研究室付近を再現する必要があったので、小物などは再現が難しく見た目を近づけるのが大変でした。

学習の結果としては、時々ゴールするような行動モデルができたものの、ゴール地点まで回転しながら向かっており、精度や実際に移動ロボットに使えそうかを考えると微妙な結果に終わりました。 今回、入力を画像のみにし、正の報酬を与える条件をゴールした時のみにしましたが、普段の移動ロボットの学習のようにゴール地点までの距離や角度を入力としたり、ゴール地点に近づいたか、もしくは遠ざかったかを報酬に反映したらもっと精度が良くなるのではないかなと思います。

また、Minecraft環境で強化学習を行なってみた上で思ったメリットとしては、仮想環境で学習することができるので比較的スペックの低いPCでも動くことが挙げられると思います。 また、デメリットとしては、Minecraftの仕様上1回の試行が終わる度に毎回10秒程度かけてワールドを生成してシミュレータ環境を作っているので、学習が遅くなってしまい非効率的かなと思いました。また、長時間学習すると仮想環境との通信接続が切れてしまうことが時々あり、学習モデルが保存されず学習が無駄になってしまったのも残念でした。

決して上手くいったとは言えない結果でしたが、好きなMinecraftで強化学習を試せたので楽しかったです。