最新AI論文をキャッチアップ

GANでMinecraftの世界を生成する!

GANでMinecraftの世界を生成する!

GAN(敵対的生成ネットワーク)

3つの要点
✔️ GANを用いて、Minecraftの世界を生成
✔️ GPUメモリ不足の問題を、word2vecの考え方で克服
✔️ 将来的には、自然言語からの生成も可能になるかもしれない

World-GAN: a Generative Model for Minecraft Worlds
written by Maren AwiszusFrederik SchubertBodo Rosenhahn
(Submitted on 18 Jun 2021)
Comments:  IEEE Conference on Games (CoG) 2021

Subjects: Machine Learning (cs.LG); Computer Vision and Pattern Recognition (cs.CV); Neural and Evolutionary Computing (cs.NE)

code:    

本記事で使用している画像は論文中のもの、またはそれを参考に作成したものを使用しております。 

研究概要

本研究では、Minecraftにおいて、一つのサンプルから機械学習によるデータ駆動型のアプローチを用いてマップ生成を行う、World-GANを提案しました。3DのGANのアーキテクチャに基づいて、与えられたサンプルから、任意のサイズのマップを作成することができるモデルになっています。GANを用いた2Dマップ生成のアプローチであるTOAD-GANをMinecraftのマップ生成に利用する場合に発生する問題である、「GPUのメモリ不足」と「各トークンの優先度を定義する必要」の二つを克服し、3Dでのマップ生成に成功しました。

関連研究

TOAD-GAN

TOAD-GANは、GANを用いて2Dのマップ生成を行うモデルです。TOAD-GANの論文内では、スーパーマリオブラザーズのマップ生成を行い、モデルの性能を検証しています。TOAD-GANのアーキテクチャは、上図のようにSinGANのアーキテクチャを利用しています。SinGANと異なる点は、ダウンサンプリングの方法です。TOAD-GANでのダウンサンプリングは、スーパーマリオブラザーズのマップにある各トークンに、優先度を定義することで行っています。論文内では、下のような優先度表を定義しています。

注目領域にあるトークンの中で、優先度が最も高いトークンに置き換えることでダウンサンプリングを行います。

例えば、上の図のような注目領域を考えます。この場合、この領域には空のトークンと、レンガブロックのトークンの二種類が含まれています。この領域を一つのトークンにダウンサンプリングすることを考えた場合、優先度表の定義から、空のトークンの優先度(Hierarchy)は0、レンガブロックの優先度(Hierarchy)は3なので、優先度の高いレンガブロックが選択され、ダウンサンプリングされた結果に残ります。TOAD-GANでは、このようにダウンサンプリングを行うことで、SinGANのアーキテクチャを利用することに成功しています。 

TOAD-GANをMinecraftに用いる場合の問題点

TOAD-GANはスーパーマリオブラザーズのマップ生成を行うことができるモデルなので、これをMinecraftで利用することは簡単なように思われます。しかし、これには大きく二つの問題点があります。

  1. GPUメモリ不足
  2. 優先度表の定義が必要

・GPUメモリ不足

TOAD-GANでは、各トークンをOne hot encodingで表現しています。そのため、例えば50種類のトークンがあれば、50次元のベクトルが必要になります。Minecraftではスーパーマリオブラザーズと比較してトークンの種類が多いため、One hot encodingで表現した時のベクトルの次元が大きくなってしまい、メモリを多く消費してしまいます。

また、Minecraftは3Dのマップのため、スーパーマリオブラザーズと比較してマップの情報が多いということも原因となっています。スーパーマリオブラザーズの場合は、「トークン種類数」×「マップの縦の長さ」×「マップの横の長さ」でマップを表すことができますが、Minecraftの場合はこれに加えて「マップの奥行」が必要となるため、より多くのGPUメモリが必要になります。

・優先度表の定義が必要

TOAD-GANでは、ダウンサンプリングを行うために優先度表の定義が必要になります。スーパーマリオブラザーズではトークンの種類がそれほど多くないため、優先度表の定義を人の手で行うことは難しくないですが、Minecraftのようにトークンの種類が多いゲームの場合、この表を人の手で設計することは難しいため、TOAD-GANをそのままMinecraftに適用するのは大変な作業になると考えられます。

提案手法

block2vec

上記の問題点を解決するために、著者らは自然言語処理のモデルである、word2vecの考え方を用いました。word2vecは、単語を入力して前後の文脈を予測するタスクを学習させたモデルの、最初の重みの行列を各単語の分散ベクトルとして考える方法です。この方法を用いれば、One hot encodingで表された自然言語が、分散ベクトルとして密な行列に情報を圧縮することができます。著者らは、このword2vecの考え方を、同じようにMinecraftのトークンに適用させ、その方法をblock2vecと命名しました。

・block2vecの学習

block2vecはword2vecとほとんど同じように学習させています。あるトークンを入力し、そのトークンの周囲にあるトークンを予測するタスクでモデルを学習させます。学習が終わったモデルの最初の重み行列を各トークンの分散ベクトルとして扱います。

・block2vecがなぜ問題を解決したか

block2vecを用いることで、各トークンを表現する方法が、One hot encodingから分散ベクトルになりました。なぜこれで問題が解決したのでしょうか。

GPU不足の解決

One hot encodingで各トークンを表現する場合、トークンの種類数分の次元を用意する必要があります。しかし、分散ベクトルはblock2vecを学習させる段階で重み行列の次元数を決めることができる(中間層のノード数を変える)ので、GPUメモリ容量に合わせて分散ベクトルの次元を調整することができます。

優先度表の定義が必要

block2vecを用いると、優先度表の定義もスキップすることができます。本論文では、ダウンサンプリングはバイリニア法を用いて行っています。

具体的には上の図のようにダウンサンプリングを行います。まず、注目領域にあるブロックを、分散表現で表します。分散表現はベクトルなので、平均化することができ、その平均化したベクトルに最も似た分散表現を持つブロックをその注目領域の代表値として扱います。

このようにダウンサンプリングを行うことによって、優先度表の定義を行うことなくダウンサンプリングを行うことができます。 

World-GAN

World-GANのアーキテクチャは下の図のようになっています。

TOAD-GANとアーキテクチャはほとんど同じです。相違点は、3Dの畳み込みを行っている点と、ダウンサンプリングの方法になります。

実験

ここからは提案手法の検証結果を見ていきます。 

生成例

ワールド生成を行った際の生成例をいくつか掲載します。

このように、基になるサンプルの雰囲気を保ったまま、自然な生成が行えていることが分かります。しかし、うまく生成が行えていない例もありました。

この例では村をサンプルとして生成を行っています。全体的な雰囲気としては概ね生成できていますが、建物の細かい部分はうまく生成できていないことが分かります。

TOAD-GANとの比較

TOAD-GANはもともと3Dマップ生成のモデルではありませんが、著者らがTOAD-GANの考え方をそのままに、3Dマップに拡張したモデルと、提案手法であるWorld-GANを比較します。

両者を比較すると、ほとんど同じように生成できていることが分かります。World-GANはTOAD-GAN 3Dと比較して、必要なGPUメモリが削減できている点と、優先度表の定義を必要としない点において優れているため、同じように生成できている場合、World-GANのほうが優れたモデルであると言えます。

次に、生成したマップのパターンが、基のサンプルとどの程度一致しているか、KLダイバージェンスを用いて検証します。基のサンプルと一致していればしているほど、KLダイバージェンスの値は小さくなります。

KLダイバージェンスの値が小さいほど、基のサンプルの雰囲気を表現できていると考えられます。

最後に、生成されたマップの独自性を評価します。この評価の指標として、本論文ではLevenshtein距離を用いています。この距離が大きいほど、ばらつきが大きいと考えられるため、生成されたマップの独自性が大きいと考えられます。

この結果を見ると、World-GANが最も生成されたマップの独自性が大きいと考えられます。

BERTによるトークンの分散表現

自然言語処理の中で有名なモデルに、BERTがあります。本論文で提案されたblock2vecによる分散表現と、BERTによる分散表現でマップの生成結果にどのような影響があるかを比較します。BERTは自然言語処理のモデルのため、トークンのOne hot encoding表現を入力することができません。そこで、この実験では、トークン記述(例:mossy stone bricks)を事前に訓練されたBERTモデルに入力し、最終層の出力をトークンの分散表現として使用します。

BERTによる埋め込み表現を利用して生成した例は上の図のようになります。block2vecの分散表現を使った場合と比較して、パターンが密にモデル化されていないことが分かります。これは、分散表現の次元数の高さに起因していると考えられます(著者らは768次元の分散表現を利用)。しかし、Minecraftで学習されていないのにもかかわらず、石造りの遺跡とその周りの草という一般的な構造が生成できていることが分かります。分散表現はテキストの記述のみで作成されているので、この実験はWorld-GANを自然言語に基づかせるという将来の研究の方向性を示しています。

まとめ

この論文は、Minecraftの世界を生成するGANである、World-GANを提案しました。トークンの表現方法をOne hot encodingからblock2vecを用いた分散表現に変えることで、MinecraftのようなゲームにTOAD-GANのアーキテクチャを利用できるようになりました。また、BERTを用いた埋め込み表現を利用すれば、将来的には自然言語でマップの特徴を記述し、それに従ったマップを生成できるようになるかもしれません。論文内ではここでは紹介しきれなかった他の実験が載っているので、興味があればチェックしてみてください。

記事の内容等について改善箇所などございましたら、
お問い合わせフォームよりAI-SCHOLAR編集部の方にご連絡を頂けますと幸いです。
どうぞよろしくお願いします。

お問い合わせする