一句话就能让 AI 找到 3A 游戏 Bug?准确率达 86%,Demo 在线可玩
输入简单的关键字,就能给 3A 大作找 Bug?
好,先来看看《GTA5》,输入 A car flying in the air(空中汽车):
随手点开一个视频…… 这牛逼的物理引擎,不愧是你!
就用这种简单的方法,我们找到了《荒野大镖客》的空中飞马:
(打一枪还能变成真・马达)
还有《上古卷轴 5》的"桶中人":
目前,Bug 的搜索范围包括《赛博朋克 2077》《巫师 3》《孤岛惊魂 5》等多个 3A 大作在内的 1873 个游戏,共计 26954 个视频。
而且还不需要任何的视频标题和其他属性,只输入文字,AI 就会基于视频内容进行搜索。
就是这么一个找 Bug 的 AI,现在已经登上了 MSR 2022,一个鼓励研究者开发建立新的数据集,并基于软件系统进行有趣的应用开发的会议。
输入关键字就能给出 Bug 视频的 AI
所以这位 AI 游戏测试员到底是如何工作的?
要开发 AI 模型自然少不了数据集,研究团队收集了 reddit 社区中 GamePhysics 版块里的 2 万多个视频,首次建立了一个游戏 Bug 数据集。
抓取工具则是他们基于 Reddit API 和 PushShift.io API 自己开发了的一个爬虫软件。
其中 PushShift.io API 用来获取论坛中每个提交内容的高级信息,而 Reddit API 则用来更新内容得分和其他元数据。
基于上面的数据集,研究团队提出了一种以对比性语言-图像预训练模型 CLIP 为基础的方法。
这一模型由 OpenAI 在去年推出,能够判别文本与图像是否相关,其 zero shot 效果堪比 ResNet50。
因此,团队便依靠 CLIP 模型的零次迁移学习(Zero-shot Transfer Learning),在不需要任何数据标签和训练的情况下,以英文文本查询为输入,从上面的游戏 Bug 数据集中检索相关视频。
整体架构如下,主要分为三步。
首先,对视频帧和文本查询进行编码。
这一步会从每个视频中提取所有帧,将一段视频当做一种"图像的合集",然后使用 CLIP 模型将输入的文本和视频帧转化为第嵌入向量表示。
然后是计算嵌入向量的相似性。
这里使用余弦相似度来衡量成对的嵌入向量的相似度,通过穷举式搜索计算输入的与视频帧的相似性得分。
最后,将每个视频帧的得分汇总起来。
研究团队提供了两种汇总方法:
一种是选取一段视频所有的帧里与输入文本的相似性得分最高的帧,根据这一帧来对视频进行排名,这种方法是高度敏感的。
另一种则是将视频所有的帧与输入文本的相似度分数进行排序,然后根据池大小的超参数,在所有视频中选择一个排名最高的帧。
团队选择了基于上述 AI 系统的两种架构:RN101 和 ViT-B / 32,然后分别测试了其在不同情况下的准确率。
首先是简单查询,比如输入文本只有单个物体:飞机、汽车、猫、狗等等,在这种情况下,模型检索出来的前五名视频准确率分别为 76% 和 86%:
将单个物体与一些场景组合起来,进行复合查询时,模型检索出来的前五名视频准确率也能达到 78% 和 82%:
如此看来,CLIP 不仅掀起多模态学习的新一波浪潮,从驱动图像生成到为游戏找 Bug,应用领域上也在不断拓展。
那些专找 Bug 的 AI 测试员们
像这篇论文里的这种,专为(游戏)程序找 Bug 的 AI 测试员并不是真的要来抢游戏测试的活儿,而是人力来测试实在是时间成本又高,还容易出错。
于是,业界早早就开始了 AI 测试的研究。
早在 2018 年的时候,育碧就曾经推出过一款叫做 Commit Assistant 的 AI 助手。
这款 AI 测试员会利用深度学习和大数据分析已有的 Bug 并进行标注,然后在 Bug 再次出现时为程序员们提供最快的修复方案,甚至还能依据已有的经验提前触发警报。
不过当时就有粉丝怀疑,知名土豆服务器厂商做出来的抓 Bug 的 AI,会不会自己先出了 Bug,然后变成两群 Bug 之间的混战……
往近处说,EA 在去年还推出了一款能够在给定的测试场景中进行自动探索的 AI,基于强化学习的智能体会像真的测试工程师一样,在探索中发现并收集 Bug:
微软也曾在 2021 年推出过一款叫做 BugLabs 的 AI 助手,通过 GAN 检测并修复代码中的错误:
这样看起来,有一个任劳任怨的 AI 测试员来兢兢业业地遍历玩家社区搜集 Bug、或者一遍又一遍地玩游戏找问题、甚至直接从代码层面揪出问题…… 这多是一件美事啊!
甚至,这些负责测试的 AI 还能搭配那些会玩游戏的 AI【加链接】,一个肝游戏,一个从游戏录像里找 Bug……
那或许这种场面,就不会再出现了【狗头】。
论文:
https://arxiv.org/abs/2203.11096
在线试玩:
http://165.232.141.160:50001/
2022-05-06 01:23:05