GameNGen 是第一个完全由神经模型驱动的游戏引擎。
论文地址:https://arxiv.org/pdf/2408.14837 项目主页:https://gamengen.github.io/ 论文标题:DIFFUSION MODELS ARE REAL-TIME GAME ENGINES 方法介绍 GameNGen 是一种生成式扩散模型。在收集训练数据的过程中,研究人员首先利用一个教师模型来训练一个独立模型,使其能与游戏环境交互。 GameNGen 包含智能体和生成式两个模型,它们依序训练。如图 3 所示,在训练过程中,智能体的所有操作和观察数据都将保留在语料库中,并在第二阶段作为生成式模型的训练数据集。 训练生成式扩散模型 研究人员首先训练了一个生成式扩散模型,作为一个智能体,它负责收集「玩游戏」时的所见所闻。 他们采用了 Stable Diffusion v1.4 这个预先训练好的文生图扩散模型。他们以轨迹,即动作序列且观察(帧)作为模型的条件,同时去除了所有文本条件。具体来说,为了以动作为条件,他们根据每个动作(例如按左键控制人物向左走)学习一个嵌入,记为一个 token,并用这一系列编码后的动作替换了文本的交叉注意力机制。 对于以观察为条件的部分,他们采用自动编码器 ϕ 将过去的帧转换到潜在空间,并将其与噪声潜在向量在潜在通道维度上进行合并,这一过程如图 3 所示。此外,研究人员尝试了使用交叉注意力机制来处理过去的观察数据作为条件,但并未发现明显的改进效果。 模型的 loss 计算公式如下所示: 其中, 是模型的预测输出,noise schedule是线性的。 使用噪声增强减轻自回归偏差 如图 4 所示,训练时使用了教师强制与自回归采样两种方法。然而,这两种方法的转换不可避免地引发了误差累积,进而导致样本质量迅速下降。为了避免这种偏差,研究人员在训练时向编码帧添加了不同量的高斯噪声来破坏上下文帧,同时将噪声水平作为输入提供给模型。 为了做到这一点,他们均匀地采样了一个最大值内的噪声水平 α,将其离散化,并针对每个噪声区间训练一个嵌入向量。这种方法能让模型学会如何在有干扰的情况下,如何纠正之前帧中的错误信息。在推理过程中,可以控制输入的噪声水平,达到最优的训练效果。在推理阶段,通过调节输入的噪声水平,可以优化模型输出的质量。值得注意的是,即便在不添加额外噪声的情况下,这种方法也能显著提升结果的表现。 微调潜在解码器 由于 Stable Diffusion v1.4 的预训练自动编码器会将 8x8 像素块压缩成 4 个潜在通道,导致模型在预测游戏帧时会产生伪影。这些伪影会让一些小细节变得不够完美,比如游戏界面底部的那些小图标。针对这个问题,研究人员仅对自动编码器的潜在解码器部分进行了微调,采用 MSE(均方误差)作为目标帧像素的损失函数。 值得注意的是,这个微调过程完全独立于 U-Net,且不会对自回归生成过程产生影响。研究人员的操作仅限于潜在变量层面,而非像素层面。 实验 总体来说,就图像质量而言,本文方法在长轨迹上实现了与原始游戏相当的模拟质量。 图像质量:图 5 显示了模型预测的图像和相应的真实图像之间的对比。 视频质量:如图 6 所示,预测的轨迹在内容和图像质量方面与实际游戏相似。 人类评估:研究者向 10 位人类评分员提供了 130 个随机短片(长度分别为 1.6 秒和 3.2 秒),并将模拟的游戏与真实游戏并列播放。评分员的任务是识别真实游戏。在这些测试中,评估者选择真实游戏而非模拟的比例分别为 58% 和 60% 为了消除噪声增强的影响,该研究训练了一个没有添加噪声的模型。图 7 中报告了每个自回归步骤的平均指标值,总共 64 帧。