GameNGen 是第一个完全由神经模型驱动的游戏引擎。
谷歌在人工智能领域又一次取得了重大进展。
在最新发表的一篇论文中,研究者创建了一个神经网络,可以在不使用传统游戏引擎的情况下为经典射击游戏《毁灭战士》生成实时游戏画面。
这个名为 GameNGen 的系统标志着人工智能领域向前迈出了重要一步,它在一个芯片上以每秒 20 帧的速度生成可玩的游戏画面,每帧画面都由扩散模型进行预测。
可以说,这是第一个完全由神经模型驱动的游戏引擎,可以高质量地在长轨迹上与复杂环境进行实时交互。
这一成就标志着人工智能首次完全模拟了一款复杂的视频游戏,GameNGen 运行在单个张量处理单元 (TPU)(谷歌定制的人工智能加速器芯片)上,能够以惊人的效率处理《毁灭战士》复杂的 3D 环境和快节奏的动作,而且完全不需要游戏引擎的常规组件。
随着这项研究的发布,大家的讨论居高不下。
要知道,2018 年的画面还是模糊不清的:
现在无论从画面质量还是流畅度,都表现的更好:
很多人认为这项研究简直不可思议:
致力于将生成式人工智能集成到游戏引擎中的开发人员表示:「人们可能还不明白这有多疯狂,这项研究是构建虚拟事物的基础,他们现在有了一条清晰的技术路径,可以使用对世界的模拟来实现连贯、交互式的长篇生成。将来,这项技术可以推广到能够获取数据的任何视频游戏。随后很可能为尚不存在的游戏生成数据。因此会有新游戏诞生。这将变得更加疯狂。」
「未来,游戏中的每一个像素都将是生成的,而不是渲染的。」
「这太疯狂了,即使以目前的发展速度,我也没有预料到这一切会来得如此之快。」
不过,面对一众的好评,还是有人提出了相反的观点,比如这位网友表示:「虽然这项研究很有趣,但并没有解决任何问题。它没有创造任何新东西,它并不比其他任何研究更有效率,可以说是一个很好的实验,但你基本上不能用它做任何事情。」
不论大家对 GameNGen 的评价如何,这项研究具体如何实现的,我们接着往下看。
论文介绍
游戏想在电脑上运行起来,要跑通这个循环:(1)收集用户输入(2)更新游戏状态(3)渲染为屏幕像素。这个高帧率运行的游戏循环为玩家创造了一种交互式虚拟世界的体验。
我们玩的游戏大多是在普通的电脑上运行的,虽然现在也有人能用计算器玩《原神》,效果也很不错。然而,无论这些设备多么先进,它们实际上只是在做一件事情:按照游戏开发者事先编写的指令来运行游戏。此外,虽然游戏行业采用不同的引擎来制作游戏,但这些引擎在工作时,比如刷新游戏里 NPC 的位置,都在遵照开发者预设的代码或配置。
近年来,生成模型在图像和视频方面取得了重大进展,比如 Stable Diffusion、Dall-E。我们可以想象,模拟电子游戏的交互世界似乎与视频生成类似。然而,交互世界模拟不仅仅是非常快速的视频生成,还要求在整个生成过程中以可用的输入动作流为条件,这打破了现有扩散模型架构的一些假设。
因此,人们自然会问:神经模型能否高质量地实时模拟复杂游戏?
本文,来自谷歌、特拉维夫大学的研究者给出了肯定的答案。
具体来说,他们展示了一款复杂的视频游戏《DOOM》(毁灭战士),可以在神经网络上(Stable Diffusion v1.4 的增强版本)实时运行,同时实现与原始游戏相当的视觉质量。虽然不是精确的模拟,但神经模型能够执行复杂的游戏状态更新,例如计算弹药、攻击敌人、破坏物体、打开门等。
人类玩家在 GameNGen 上以 20 FPS 的速度玩《毁灭战士》。
研究者提出了 GameNGen,这是第一个完全由神经模型驱动的游戏引擎,能够在长轨迹上高质量的与复杂环境进行实时交互。GameNGen 可以在单个 TPU 上以每秒 20 帧以上的速度交互模拟经典游戏《毁灭战士》。下一帧预测实现了 29.4 的 PSNR,与有损 JPEG 压缩相当。
GameNGen 的训练分为两个阶段:(1) RL 智能体学习玩游戏并记录训练过程;(2) 训练扩散模型以根据过去帧和动作的顺序生成下一帧。条件增强功能可在长轨迹上实现稳定的自回归生成。
方法介绍
GameNGen 是一种生成式扩散模型。在收集训练数据的过程中,研究人员首先利用一个教师模型来训练一个独立模型,使其能与游戏环境交互。
GameNGen 包含智能体和生成式两个模型,它们依序训练。如图 3 所示,在训练过程中,智能体的所有操作和观察数据都将保留在语料库中,并在第二阶段作为生成式模型的训练数据集。
训练生成式扩散模型
研究人员首先训练了一个生成式扩散模型,作为一个智能体,它负责收集「玩游戏」时的所见所闻。
他们采用了 Stable Diffusion v1.4 这个预先训练好的文生图扩散模型。他们以轨迹,即动作序列且观察(帧)作为模型的条件,同时去除了所有文本条件。具体来说,为了以动作为条件,他们根据每个动作(例如按左键控制人物向左走)学习一个嵌入,记为一个 token,并用这一系列编码后的动作替换了文本的交叉注意力机制。
对于以观察为条件的部分,他们采用自动编码器 ϕ 将过去的帧转换到潜在空间,并将其与噪声潜在向量在潜在通道维度上进行合并,这一过程如图 3 所示。此外,研究人员尝试了使用交叉注意力机制来处理过去的观察数据作为条件,但并未发现明显的改进效果。
模型的 loss 计算公式如下所示:
其中,
使用噪声增强减轻自回归偏差
如图 4 所示,训练时使用了教师强制与自回归采样两种方法。然而,这两种方法的转换不可避免地引发了误差累积,进而导致样本质量迅速下降。为了避免这种偏差,研究人员在训练时向编码帧添加了不同量的高斯噪声来破坏上下文帧,同时将噪声水平作为输入提供给模型。
为了做到这一点,他们均匀地采样了一个最大值内的噪声水平 α,将其离散化,并针对每个噪声区间训练一个嵌入向量。这种方法能让模型学会如何在有干扰的情况下,如何纠正之前帧中的错误信息。在推理过程中,可以控制输入的噪声水平,达到最优的训练效果。在推理阶段,通过调节输入的噪声水平,可以优化模型输出的质量。值得注意的是,即便在不添加额外噪声的情况下,这种方法也能显著提升结果的表现。
微调潜在解码器
由于 Stable Diffusion v1.4 的预训练自动编码器会将 8x8 像素块压缩成 4 个潜在通道,导致模型在预测游戏帧时会产生伪影。这些伪影会让一些小细节变得不够完美,比如游戏界面底部的那些小图标。针对这个问题,研究人员仅对自动编码器的潜在解码器部分进行了微调,采用 MSE(均方误差)作为目标帧像素的损失函数。
值得注意的是,这个微调过程完全独立于 U-Net,且不会对自回归生成过程产生影响。研究人员的操作仅限于潜在变量层面,而非像素层面。
实验
总体来说,就图像质量而言,本文方法在长轨迹上实现了与原始游戏相当的模拟质量。
图像质量:图 5 显示了模型预测的图像和相应的真实图像之间的对比。
视频质量:如图 6 所示,预测的轨迹在内容和图像质量方面与实际游戏相似。
人类评估:研究者向 10 位人类评分员提供了 130 个随机短片(长度分别为 1.6 秒和 3.2 秒),并将模拟的游戏与真实游戏并列播放。评分员的任务是识别真实游戏。在这些测试中,评估者选择真实游戏而非模拟的比例分别为 58% 和 60%
为了消除噪声增强的影响,该研究训练了一个没有添加噪声的模型。图 7 中报告了每个自回归步骤的平均指标值,总共 64 帧。
文章来源于“机器之心”
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner