输入简单的关键字,就能给3A大作找Bug?
好,先来看看GTA5,输入A car flying in the air(空中汽车):
随手点开一个视频……这牛逼的物理引擎,不愧是你!
就用这种简单的方法,我们找到了荒野大镖客的空中飞马:
(打一枪还能变成真·马达)
还有老滚5的“桶中人”:
目前,Bug的搜索范围包括赛博朋克2077、巫师3、孤岛惊魂5等多个3大作在内的1873个游戏,共计26954个视频。
而且还不需要任何的视频标题和其他属性,只输入文字,AI就会基于视频内容进行搜索。
就是这么一个找Bug的AI,现在已经登上了MSR 2022,一个鼓励研究者开发建立新的数据集,并基于软件系统进行有趣的应用开发的会议。
所以这位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测试员并不是真的要来抢游戏测试的活儿,而是人力来测试实在是时间成本又高,还容易出错。
于是,业界早早就开始了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/
参考链接:
[1]https://asgaardlab.github.io/CLIPxGamePhysics/
[2]https://github.com/asgaardlab/CLIPxGamePhysics
[3]https://arxiv.org/abs/2103.13798
[4]https://mp.weixin.qq.com/s?__biz=MzIzNjc1NzUzMw==&mid=2247514447&idx=5&sn=ad3c5776f8562fe2ea353f7289add602&chksm=e8d00e3ddfa7872bfc456180d3be0c130b50a64718576712349c533329e07b9895b5ed66a4bf&token=2079333933&lang=zh_CN#rd