Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

赵阳、张倩报道

用GPT生成《超级马里奥》游戏关卡,近9成关卡可玩

最近一年来,生成式 AI 在绘画、文本、代码等创作领域的表现越来越成熟,OpenAI 的聊天机器人 ChatGPT 更是将这一趋势推向舆论顶点。而 AIGC 在游戏领域的进展也备受关注,投资公司 a16z 不久前发表过一篇研究文章《AIGC 在游戏中的革命》,认为在所有娱乐类目中,游戏会是生成式 AI 影响最大的领域。

在之前的报道中,我们提到过 AIGC 在游戏音乐、剧情生成中的一些应用案例(见文末「相关阅读」)。此外,还有不少研究者专注于关卡生成方向。最近,来自哥本哈根信息技术大学等机构的研究者发表了一篇论文,介绍了他们如何应用一个名为 MarioGPT 的语言模型文本生成《超级马里奥》游戏关卡。

图片

论文链接:https://arxiv.org/pdf/2302.05981.pdf

这个研究方向从属于一个程序内容生成(PCG)的领域。PCG 是指可以自动创建游戏内容的技术,如创建关卡、地图或角色。程序内容生成的好处是可以增加游戏的可玩性,以及降低成本。

最近,PCG 和机器学习的发展已经开始以不同方式相互影响。一方面,程序化生成的环境成为评估 agent 的泛化能力的基准,Arcade 学习环境这样的非 PCG 基准成为过去,这种变化已经成为人们的共识。另一方面,PCG 研究人员已经开始将基于机器学习的方法纳入其系统当中。例如,最近的一些研究表明,生成对抗网络(GAN)等模型可以被用来生成各种游戏的关卡,如《毁灭战士》或《超级马里奥兄弟》,使用的关卡来自视频游戏关卡库。

然而,基于机器学习的程序内容生成(PCGML)在底层神经网络的隐空间中进行搜索的成本往往过于高昂。更为理想的方法是能够直接对生成器施加条件,使其创建具有某些属性的关卡,并且最好是用自然语言来完成

为了应对这些挑战,本文作者提出了 MarioGPT 模型(图 2)。这是一个经过微调的 GPT-2 模型,经过训练可以生成《超级马里奥》中的游戏关卡。该模型展示了大型语言模型是如何与 PCG 技术相结合的,最终能够通过自然语言下的 prompt 有效地创建新的、多样化的关卡。大规模语言模型(LLMs)是能够在多样化的语料库上训练的一类模型,如 GPT-n 系列模型,能够从语言的关联中捕捉人类行为的统计性关联关系。通过这个过程,GPT 获得了关于如何表示和预测复杂序列的知识。研究者利用这种知识为该模型提供了生成简单的游戏组件以及基于这些基础游戏组件生成更复杂的组件的能力。令人惊讶的是,MarioGPT 生成的关卡中,有很高的比例(88%)实际上是可以玩的

图片

此外,本文作者将 MarioGPT 与寻求多样性的算法 —novelty search 算法结合起来,以一种开放的方式不断地产生多样化的关卡。LLMs 与 novelty search 算法的结合为未来的研究开辟了许多有趣的新方向。研究者希望他们的工作能够为更灵活、更可控的 PCG 方法打开大门,使其能够生成复杂、多样和具备功能性的无尽的游戏内容。为了促进这一点,研究者表示将很快提供代码。

图片

通过大型语言模型生成开放式关卡

在论文第三章,作者介绍了通过 LLMs 生成开放式关卡的完整方法,该方法由两部分组成。首先,作者介绍了属于一种 prompt-conditioned 的模型 ——MarioGPT(图 2),它可以在给定的自然语言 prompt 下生成关卡(编码为文本)。接着,图 3 详细介绍了 MarioGPT 如何融入 novelty search 算法的进化循环,从而使该方法能够不断地产生不同的关卡

MarioGPT 模型

MarioGPT 是一种 prompt-conditioned 的单向语言模型,并且对长序列关卡的预测进行了优化。更确切地说,MarioGPT 的架构依赖于 GPT2 的蒸馏后的轻量级版本 ——DistilGPT2。与 novelty search 算法中采取的方法类似,研究者将这个蒸馏过的 GPT2 版本微调后,用于预测《超级马里奥》关卡中的 token。为了生成关卡,研究者将前 50 列的窗口串联成一个单一的向量,并将其送入 MarioGPT。利用 Transformer 的注意力机制,他们生成了质量更好,长度更长的关卡。

架构:MarioGPT 的架构与 DistilGPT2 的架构相同,区别在于交叉注意力的权重被用在了 prompting 上。尽管 DistilGPT2 支持大小为 1024 的上下文长度,但 MarioGPT 的上下文长度限制在了 700,因为研究者发现增加长度对提高性能没有什么作用。MarioGPT 总共有 9600 万个参数(8600 万个原始 DistilGPT2 的参数和 1000 万个交叉注意力权重)。研究者对 MarioGPT 进行了 5 万次 step 的训练,在每次迭代中随机抽取 4 个关卡,并使用 Adam 优化器对模型进行优化。总的来说,MarioGPT 使用了 200,000 个训练样本。由于该模型相对较小,它可以使用单个 Nvidia 2080ti GPU 进行训练

关于 Prompting 的细节:为了包含 Prompt,研究者微调了注意力层的交叉注意力权重,如图 2 所示。Prompt 通过冻结权重的预训练语言模型 BART 进行编码生成。Prompt 通过权重冻结的语言模型传递,经过正向传递的隐状态被平均化为单个向量。随后,这个平均化的隐状态被输入到 GPT2 架构的交叉注意层中,并与被传入模型的实际关卡相结合。

图片

Prompt 表示为特定特征(例如管道、敌人、街区、立面)和定量关键词的组合:

例如,“没有管道,很多敌人,低海拔” 或 “许多管道,许多敌人,许多障碍” 都是可能的 Prompt。关键字 “no”、“little”、“some”、“many” 是根据相应计数的分位数(在 50 列窗口内)计算的,如表 2 所示。“低” 和 “高” 高程由水平段中最高不可破碎的石块的高度确定。

图片

基于 Novelty Search 算法的开放式马里奥关卡生成

在 PCG 领域,重要的是不仅要生成具有不同物理特征的关卡,而且要生成让玩家能觉得有趣的关卡。在创建马里奥关卡时,重点就成为了,能够让玩家采取不同的路径来完成该关卡。这对许多之前的算法来说是一个挑战,需要使用外部 agent 进行评估。然而,有了 MarioGPT,就有可能生成多样化和可控制的关卡,这些关卡接近于现实的玩家路径,减少了对外部 agent 的需求,并产生可以直接玩的关卡。

为了鼓励生成关卡的多样性,研究者将 MarioGPT 整合到一个基于 Novelty Search 增强的遗传算法(NS-MarioGPT)中,其中语言模型扮演着变异算子的角色。如图 3 所示,NS-MarioGPT 从生成的关卡档案中反复采样和变异,这些关卡由在 MarioGPT 样本中随机选取的大小为 1400(100 列)的 Prompt 的初始化生成。

图片

Novelty Search 算法:变异的关卡只有在比以前的最优解有更高的的 Novelty 分数时才会被储存在种群中。新颖性得分是以关卡的行为特征向量与种群中最接近的 k 个元素的行为特征向量之间的平均距离来衡量的(使用 K-means 算法)。

研究者在关卡生成中的目标是创建能让玩家行为多样化的路径,因此其使用预测的玩家路径作为行为特征的基础。更具体地说,研究者对预测路径的相对模式感兴趣。例如,如果一个玩家角色在高处的积木块上直线移动,研究者希望该路径的特征在行为空间中与在低处直线移动的路径相近。为了达到这个目的,研究者将行为特征表示为预测路径坐标的归一化平均值,从而使路径的特征变得平滑(图 4)。因此,单一块之间的差异的重要性被降低了,变异后的关卡更难被添加到种群中。这是研究者所希望的,这是因为种群库中不应该充斥着与种群中现有关卡仅有微小差别的关卡。

在研究者基于 novelty search 算法的实验当中,他们使用一个大小为 4 的小邻域,产生维度为 100 的行为特征。研究者用少量的关卡(30 个)初始化种群,这是因为他们发现单靠变异就足以产生一个多样化的关卡集,并不需要一个大的起始种群。

图片

变异:本文介绍的基于 LLM 的变异操作(图 3)在随机 prompt 的引导下,将一个随机挑选的关卡切片(40-80 列之间的切片)与一个新的 MarioGPT 预测进行转换。就其本身而言,MarioGPT 能够通过变异,产生各种具有不同 agent 路径的关卡。然而,由于 MarioGPT 是一个单向的模型,不能保证新生成的路径与关卡的其他部分一致。为了进一步提高路径的一致性,研究者在 Bert 架构的基础上加入了一个微调的 mask 预测模型(称之为 MarioBert)。BERT 语言模型是一个双向的 LLM,在 mask 预测的任务中的表现十分惊艳。这种能力对于现在的情况来说是非常理想的,MarioBert 被用来在采样的图像片段的内部进行绘制,以平滑地连接变异的片断和关卡中其余的画面。这可以在图 3 的 "变异过程" 的第二步中观察到。

实验结果

为了评估 MarioGPT 生成多样化和可玩性关卡的能力,研究者觉得可以从以下几个维度去思考:(1)MarioGPT 与其他 baseline 在验证集上对 tile 的预测准确性方面的比较;(2)MarioGPT 生成的关卡是否能通关?(3) MarioGPT 是否会记忆?

为了衡量 MarioGPT 在生成关卡方面的熟练程度,研究者选择 LSTM,以及从头开始训练的 MarioGPT(不使用预训练的 GPT2 权重)作为 baseline,并比较了预测准确性,结果如表 3 所示。

图片

为了测试可玩性,研究者在 250 个关卡中部署了 Robin Baumgarten 的 A* agent。研究者发现,所有 MarioGPT 生成的关卡中,88.33% 可以由 agent 完成,因此可以判定为是可通关的。此外,研究者发现这些可以通关的关卡中只有一个需要使用 A* agent 再次运行一次。研究者进一步地测试模型生成的路径是否与 A* agent 的路径匹配,以评估其可行性。表 4 分别显示了可通关和不可通关关卡中,建议的路径和实际 A* agent 选择的路径之间的平均绝对误差(MAE)。

图片

为了进一步研究生成的路径的质量,研究者可视化了具有最大、最小和中值重叠的路径(即与高度平均绝对误差的最大值、最小值和中值相对应的关卡)以及图 6 中两个有趣的手动选择的示例。

图片

在训练 transformer 架构时,LLM 的动态记忆能力仍然是一个悬而未决的问题,并且许多工作对其进行了探索。虽然 LLMs 的功能非常强大,但它们有时会过度拟合,最终会反噬给训练数据。缓解这个问题的一个流行方法是在预测中加入一些随机性,即可调整的 热力学 "温度" 参数。为了评估 MarioGPT 是否产生了与训练集相同的关卡,我们用不同的温度参数进行采样,并与训练数据集中最接近的关卡进行比较。



通过简单的 prompting,本文能够引导 MarioGPT 走向可控和多样化的关卡生成。研究者通过使用各种 prompt 组合生成 1000 个样本,以实验的方式评估了 MarioGPT 的 prompt 能力,并检查生成的关卡对 prompt 描述的准确性。结果表明,MarioGPT 可以在大多数情况下生成与给定 prompt 匹配的关卡(表 5)

图片

研究者还对系统进行了可视化评估,在图 5 中显示了选定的即时条件下的生成结果。

图片

凑巧的是,在这篇论文发布的当天,来自纽约大学坦登工程学院等机构的研究者也发布了一篇主题类似的论文,只不过生成的是《推箱子》游戏关卡。感兴趣的同学可以合并阅读。

图片

论文地址:https://arxiv.org/pdf/2302.05817.pdf

相关阅读:
理论游戏AIGC超级马里奥
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

卡方技术

卡方常常与卡方分布和卡方检验联系在一起: 卡方分布(chi-square distribution)是常用于概率论和统计检验中的一种概率分布;卡方检验是(chi-square test)是一种基于卡方分布的常用的统计检验,其统计量在原假设(null hypothesis)成立时服从卡方分布。

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

遗传算法技术

遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。 遗传算法通常实现方式为一种计算机模拟。对于一个最优化问题,一定数量的候选解可抽象表示为染色体,使种群向更好的解进化。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

文本生成技术

文本生成是生成文本的任务,其目的是使人类书写文本难以区分。

GPT-2技术

GPT-2是OpenAI于2019年2月发布的基于 transformer 的大型语言模型,包含 15 亿参数、在一个 800 万网页数据集上训练而成。据介绍,该模型是对 GPT 模型的直接扩展,在超出 10 倍的数据量上进行训练,参数量也多出了 10 倍。在性能方面,该模型能够生产连贯的文本段落,在许多语言建模基准上取得了 SOTA 表现。而且该模型在没有任务特定训练的情况下,能够做到初步的阅读理解、机器翻译、问答和自动摘要。

生成对抗技术

生成对抗是训练生成对抗网络时,两个神经网络相互博弈的过程。两个网络相互对抗、不断调整参数,最终目的是使判别网络无法判断生成网络的输出结果是否真实。

推荐文章
暂无评论
暂无评论~