赶上最新的AI论文

用GAN生成一个Minecraft世界!

生成对抗网络(GAN)

三个要点
✔️使用GAN生成Minecraft世界
✔️用word2vec概念克服GPU内存不足的问题
✔️在未来,我们可能能够从自然语言中生成

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,它使用数据驱动的方法,从单一样本中使用机器学习来生成地图。我们克服了使用TOAD-GAN(一种使用GAN的2D地图生成方法)为Minecraft生成地图时出现的两个问题:缺乏GPU内存和需要定义每个token的优先级。我们已经成功地生成了一张3D地图。

相关研究

TOAD-GAN

TOAD-GAN是一个使用GAN的二维地图生成模型。 在TOAD-GAN的论文中,通过生成超级马里奥兄弟的地图来测试该模型的性能。TOAD-GAN的架构是基于SinGAN的架构,如上图所示。TOAD-GAN与SinGAN的不同之处在于它的降样方式,它为超级马里奥兄弟地图中的每个标记定义了一个优先级。在本文中,我们定义了一个像下面这样的优先级表。

下采样是通过用具有最高优先级的标志物替换感兴趣区域的标志物来进行的。

例如,考虑上图所示的感兴趣区域。在这种情况下,这个区域包含两种类型的代币:空代币和砖块的代币。如果我们想对这个区域进行下采样,那么从优先级表的定义来看,空符号的优先级(Hierarchy)为0,砖块的优先级(Hierarchy)为3,所以选择优先级高的砖块,下采样的结果为在TOAD-GAN中,这个下采样过程成功地利用了SinGAN架构的优势。

在Minecraft中使用TOAD-GAN的问题

由于TOAD-GAN是一个可以为超级马里奥兄弟生成地图的模型,在Minecraft中使用它似乎很容易。然而,这其中有两个主要问题。

  1. GPU内存不足
  2. 需要定义优先级表

GPU内存不足

在TOAD-GAN中,每个标记都由一个热编码来表示,因此,例如,如果有50个不同的标记,我们需要一个50维的向量。由于《Minecraft》中的代币比《超级马里奥兄弟》中的代币多,一热编码中向量的维度变得更大,更耗费内存。在《Minecraft》中,代币的数量比《超级马里奥兄弟》还要多。

这也是由于《Minecraft》是一张3D地图,这意味着地图上的信息比《超级马里奥兄弟》更多。而《超级马里奥兄弟》可以用代币的数量x地图的长度x地图的宽度来表示,由于地图的额外深度,《Minecraft》需要更多的GPU内存。

需要定义一个优先级表

为了在TOAD-GAN中进行下采样,需要定义一个优先级表。在《超级马里奥兄弟》中,代币的数量并不多,以至于很难手动定义优先级表,但在《Minecraft》这样拥有大量代币的游戏中,很难手动设计这个表,所以直接将TOAD-GAN应用于将TOAD-GAN直接应用于Minecraft将是一项艰巨的任务。

建议的方法

块2vec

为了解决上述问题,作者采用了word2vec的理念,这是一种自然语言处理的模型,它将权重的第一个矩阵视为模型中每个单词的方差向量,而这个模型的训练任务是预测单词输入前后的上下文。使用这种方法,用一种热编码表达的自然语言可以被压缩成一个密集的方差向量矩阵。作者将word2vec的相同理念应用于Minecraft标记,并将其方法命名为block2vec。

学习使用block2vec

block2vec的训练方式与word2vec基本相同。它将一个标记作为输入,并训练一个模型来预测该标记周围的标记的任务。训练好的模型的第一个权重矩阵被当作每个标记的方差向量。

为什么block2vec解决了这个问题

通过使用block2vec,表示每个标记的方式已经从一个热编码变成了一个分布式矢量。为什么这样就能解决问题?

解决GPU短缺的问题

当用一个热编码表示每个标记时,需要每种类型的标记的维数。然而,由于权重矩阵的维数可以在block2vec训练阶段确定(通过改变中间层的节点数),方差向量的维数可以调整以适应GPU的内存容量。

需要定义优先级表

使用block2vec,优先级表的定义也可以被跳过。在本文中,下采样是用双线性方法完成的。

具体来说,我们进行下采样,如上图所示。首先,我们用一个方差表示法来表示感兴趣区域的区块。由于方差表示法是一个矢量,它可以被平均化,方差表示法与被平均化的矢量最相似的区块被视为感兴趣区域的代表值。

以这种方式进行下采样,不需要定义优先级表就可以进行下采样。

世界-GAN

World-GAN的架构如下图所示。

该架构几乎与TOAD-GAN相同。差异在于三维卷积和下采样方法。

实验

现在我们来看看所提方法的验证结果。

生成的例子

以下是一些例子,说明你在做世界性的生成时可以生成什么。

正如你所看到的,我们已经能够实现自然生成,同时保持基础样本的氛围。然而,在一些情况下,这一代人并不那么成功。

在这个例子中,已经生成了一个村庄作为样本。总的来说,整体气氛生成得很好,但建筑的细节生成得不太理想。

与TOAD-GAN的比较

尽管TOAD-GAN原本不是生成3D地图的模型,但作者将所提出的方法World-GAN与一个保持TOAD-GAN的思想但将其扩展到3D地图的模型进行了比较。

比较这两个模型,可以看出它们几乎是相同的:World-GAN比TOAD-GAN 3D需要更少的GPU内存,而且不需要定义优先级表,所以如果它们是类似的生成,World如果它们是以同样的方式生成的,那么GAN就是更好的模型。

接下来,我们用KL发散法检查生成的地图的模式与基础样本的模式的匹配程度。与基础样本的匹配度越高,KL分歧的数值越小。

KL分歧的数值越小,越能代表基础样本的气氛。

最后,我们评估了生成的地图的唯一性。在本文中,我们使用Levenshtein距离作为这种评价的措施。这个距离越大,可变性越大,因此生成的地图的独特性也越大。

结果表明,World-GAN在生成的地图中具有最大的独特性。

通过BERT对令牌进行分布式表示

自然语言处理中最著名的模型之一是BERT。由于BERT是一个自然语言处理模型,它不允许输入一个热编码的标记表示。因此,在这个实验中,我们将一个标记描述(例如,长满苔藓的石砖)输入到一个预先训练好的BERT模型中,并使用最后一层的输出作为标记的分布式表示。

使用BERT嵌入生成的例子如上图所示,可以看出,图案的建模并不像使用block2vec分布式表示时那样稠密。这可以归因于方差表示的高维度(作者使用了768维的方差表示)。然而,我们可以看到,尽管没有在Minecraft中进行过训练,但石头废墟的一般结构和周围的草是可以生成的。由于分布式表示法是仅使用文本描述创建的,这个实验指向了未来基于自然语言制作World-GANs的工作。

摘要

本文提出了World-GAN,一个能生成Minecraft世界的GAN。通过使用block2vec将令牌表示法从一个热编码改为分布式表示法通过将令牌的表示方式从一种热编码改为使用block2vec的分布式表示,TOAD-GAN架构可以用于Minecraft等游戏中。另外,通过使用BERT的嵌入式表示法,将来可能会用自然语言描述地图的特征,并生成相应的地图。论文中还有其他的实验,我们没能在这里展示,如果你有兴趣,可以去看看。

  • メルマガ登録(ver
  • ライター
  • エンジニア_大募集!!

如果您对文章内容有任何改进建议等,请通过 "联系我们 "表格与爱学网编辑部联系。
如果您能通过咨询表与我们联系,我们将非常感激。

联系我们