广泛的环境
在追求人工通用智能(AGI)的过程中,我们致力于创建能够在广泛的环境中实现目标的代理。随着我们的代理掌握了我们创建的环境,我们必须不断创建新的环境来探索尚未测试过的认知能力。
游戏一直是人工智能(AI)研究的挑战,最著名的是棋盘游戏,如双陆棋、国际象棋和围棋。近年来,视频游戏,如太空侵略者、地震III竞技场、Dota 2和星际争霸II,也越来越受到AI研究的关注。游戏是理想的研究对象,因为它们有明确的成功度量标准,可以通过实证评估进展,并直接与人类进行基准比较。
随着AGI研究的进展,研究界对更复杂的游戏也越来越感兴趣。与此同时,将单个视频游戏转化为研究环境所需的工程工作变得难以管理。越来越多的通用游戏引擎成为创建各种交互环境的最可扩展的方式。
通用游戏引擎
许多AGI研究已经在游戏引擎中进行,例如基于Minecraft的Project Malmo,基于Doom的ViZDoom,以及基于地震III竞技场的DeepMind Lab。这些引擎可以通过脚本快速创建新的环境,并且由于许多引擎是为旧硬件编写的,它们在现代硬件上运行非常快,消除了环境作为性能瓶颈的问题。
但是这些游戏引擎缺少一些重要的功能。例如,DeepMind Lab非常适合学习导航,但对于学习物体如何移动和相互作用等常识概念而言效果较差。
Unity
在DeepMind,我们使用Unity,一款灵活且功能丰富的游戏引擎。Unity的逼真物理模拟使代理能够更接近真实世界的环境。现代渲染流水线提供更细微的视觉线索,如逼真的光照和阴影。Unity脚本使用易于阅读的C#编写,并且与自定义引擎不同,提供对所有游戏引擎功能的访问权限。多平台支持使我们可以在家中的笔记本电脑上或在Google的数据中心上运行环境。最后,随着Unity引擎的不断发展,我们可以未雨绸缪,而无需花费大量的工程时间。
Unity包含一个名为ML-Agents的即用机器学习工具包,专注于简化将现有游戏作为学习环境的过程。DeepMind致力于构建各种异构环境,并在规模上运行它们,因此我们使用dm_env_rpc(见下文)。

与传统游戏的区别
传统视频游戏实时渲染:屏幕上的一秒等于模拟中的一秒。但对于AI研究人员来说,游戏只是一系列数据流。游戏通常可以比实时更快地处理,并且游戏速度在不同时刻变化很大也没有问题。
此外,许多强化学习算法可以扩展到多个实例。也就是说,一个AI可以同时玩数千场游戏,并从中学习。
因此,我们优化吞吐量而不是延迟。也就是说,我们尽可能多地更新我们的游戏,并不担心以一致的速率生成这些更新。我们在单台计算机上运行多个游戏,每个处理器核心一个游戏。由于垃圾回收等功能引起的停顿-传统游戏制作中的常见问题-对我们来说不是一个问题,只要游戏通常运行得很快。
容器化和dm_env_rpc
游戏输出图像、文本和声音供玩家观看和听到,并从某种游戏控制器接收输入命令。这些数据的结构对于AI研究人员非常重要。例如,文本通常是单独呈现而不是绘制到屏幕上。由于这种数据格式的灵活性非常重要,我们创建了一个名为dm_env_rpc的新开源库,它在环境和代理之间起到边界的作用。
通过使用dm_env_rpc,我们可以将我们的环境容器化并公开发布。容器化意味着使用Docker等技术来打包预编译的环境二进制文件。容器化使我们的研究能够得到独立验证。这比公开源代码更可靠和方便,因为公开源代码可能会受到编译器或操作系统差异的干扰。有关如何将环境容器化的更多详细信息,请参阅我们在dm_memorytasks上的工作。