构建安全的AI:规格、健壮性及保险机制

By Pedro A. Ortega, Vishal Maini, and the DeepMind safety team

Translated by Xiaohu Zhu and University AI safety team

建造一枚火箭很难。每个部件需要仔细斟酌和严格测试,而安全性和可靠性是设计的核心。火箭科学家和工程师共同设计从导航路径到控制系统,引擎和起落架的每个部件。一旦所有部分组装起来,系统测试完,我们就可以足够信心让宇航员登上火箭。

如果人工智能是一个火箭,那么我们将会在某天都拿到登机票。并且,就像在火箭上一样,安全性毫无疑问是人工智能系统的关键构成部分。确保安全性需要从基础开始仔细设计系统来保证不同部件能够按照设定工作,同时开发所有必要装置来监视系统在部署后的成功操作。

从高层次看,在 DeepMind 进行的安全性研究聚焦在设计出按照预想方式工作的同时发现和减少可能的近期和长期风险的系统。人工智能技术安全性是相对初期但是快速成长的研究领域,包括从高层及理论到实验及具体的内容。本文目标是推进该领域的发展,鼓励实质性参与技术想法的讨论,这样来提升对人工智能安全性的集体理解。

在这个启动文章中,我们讨论人工智能技术安全性的三个领域:规格健壮性保险机制。未来的文章将会更全面填充这里提出的框架。尽管我们观点的演变会不可避免,但我们认为这三个领域涵盖了充分宽广的内容,给出了一种对正在进行和未来研究内容的有用归类。

人工智能安全性问题的三个领域。每个框强调了某个代表性挑战和方法。这三个领域不是割裂的,而是在某种程度上有所交互。尤其,一个给定特定安全性问题可能会需要用到其他方面的问题解决方法。

规格:定义系统的目的

规格确保一个人工智能系统行为与操作者真实意图相符合。

你可能熟悉 King Midas 的故事和点石成金。古希腊神承诺 Midas 他可以得到自己希望要的任何奖赏,作为该国王对 Dionysus 的朋友展示出来的友善和慷慨的感激。作为回应,Midas 说我希望所有的触摸的东西都变成金子。他对自己的新技能非常满意:一个橡树枝、一个石头,花园中玫瑰都在他的触碰被变成黄金了。但很快他发现这个愿望的愚蠢之处了:甚至食物和饮品都变成金子的了。在某些版本中,甚至他女儿也成了这个诅咒的受害者。

这个故事解释了规格这个问题:如何描述我们想要的?规格的挑战就是确保一个人工智能系统行为按照设计者真实想法进行,而不是优化一个缺少考虑制定的目标或者错误的目标。严格地说,我们区分如下三种规格:

  • 理想规格(ideal specification)(愿望 wishes),对应于一个理想人工智能系统的假设描述(很难清楚)与人类操作者目的完全对齐
  • 设计规格(design specification)(蓝图 blueprint),对应于我们实际使用构建人工智能系统的规格,如:强化学习系统最大化的奖励函数
  • 显示规格(revealed specification)(行为 behaviour),这是最佳描述实际发生情况的规格,如:使用逆强化学习从观察系统行为逆向工程得到的奖励函数。这不同于由人类操作者提供的规格,因为人工智能系统不是最优优化器或者其他设计规格不可见后果。

一个规格问题理想规格显示规格出现不匹配时出现,即,当人工智能系统不去做我们希望它做的事情的时候。对人工智能技术安全性的规格问题的研究提出这个问题:如何设计更具原理性和通用性的目标函数,帮助智能体弄清楚目标什么时候错误指定的?导致理想规格和设计规格不匹配的问题出现在上面分类的设计(design)子类别中,而导致设计和显示规格的不匹配则是新生(emergent)子类别中。

例如,在我们的 AI Safety Gridworlds* 论文中,我们给予智能体需要优化的奖励函数,但是然后用对智能体隐藏的安全性性能函数进行实际行为的评测。这个设定对上面的区别进行了建模:安全性性能函数是理想规格,被不完美地设定成一个奖励函数(设计规格),然后由产生一个通过他们得到的策略进行的显示规格的智能体实现。

注意在我们 AI Safety Gridworlds 论文里,我们给出了和本文介绍的对规格和健壮性问题不同的定义

来自 OpenAI 的 Faulty Reward Functions in the Wild : 强化学习智能体发现了不曾预见的策略来达到更高分数

作为另一个案例,考虑汽艇大赛游戏 CoastRunners,见上图,这是由我们 OpenAI 的同事分析的。对大多数人来说,这个游戏的目标是快速抵达终点,并超过其他玩家 — — 这其实是理想规格。然而,将这个目标转译成一个精确的奖励函数非常困难,所以,CoastRunners 奖励玩家(设计规格)撞击航道上的目标。使用强化学习训练一个玩家产生了一个令人诧异的行为:智能体绕圈驾驶来获得重新出现的目标而出现重复碰擦着火而不是完成比赛。从这个行为,我们推断(显示规格)游戏在短期绕圈奖励和完全圈奖励之间的平衡某些地方出错了。还有更多案例 跟此处类似找到了目标规格的漏洞。

健壮性:设计可以抗扰动的系统

健壮性确保人工智能系统在扰动下持续在安全范围内操作

在人工智能系统工作的真实场景设定中存在风险、不可预测和波动性。人工智能系统必须对会损伤和操纵这样的系统的未见事件和对抗攻击有抵抗力。对人工智能系统的健壮性的研究聚焦于确保我们的智能体不管处于什么条件下都在安全限度中。这是可以通过避免风险(阻止 prevention)或者自我稳定和雅性降解(恢复 recovery)。由分布漂移(distributional shift)、对抗输入(Adversarial inputs)和不安全探索(unsafe exploration)导致的安全性问题可以被分类成健壮性问题。

为了解释 分布漂移 的挑战,考虑一个家庭清理机器人的典型无宠物环境的场景。机器人被部署到有宠物的办公室了,在清理过程中遇到了一只宠物。这个机器人从来没有见过一只宠物,所以直接为宠物上肥皂清洗,导致不想要的后果了 (Amodei and Olah et al., 2016)。这是一个健壮性问题的例子,出现在测试时遇到的数据分布从训练时的分布漂移。

来自 AI Safety Gridworlds。在训练期间,智能体学会避开红色熔岩;但是当我们在熔岩位置发生变化的新情况下进行测试时,它无法泛化并直接进入熔岩。

对抗输入是分布漂移的特例,其中人工智能系统的输入被设计为通过特定设计的输入来欺骗系统。

一个对抗输入,覆盖在一幅图片上,可以导致分类器将一个树懒误分类成赛车了。两幅图像只是在每个像素上有至多 0.0078 差。第一幅以超过 99%的几率分类为树懒,第二幅则是以 99% 几率分类成赛车。

不安全探索是从不考虑它在环境中学习和探索时不在探索时违背的安全性保证下最大化其性能和达到目标的系统诞生。一个例子就是家庭清理机器人在学习最优清理策略的时候将湿拖把放在插座上 (García and Fernández, 2015Amodei and Olah et al., 2016).

保险机制:监控和控制系统活动

保险机制确保我们在操作过程中可以理解和控制人工智能系统

尽管仔细的安全性工程可以排除很多安全性风险,但是从开始就全部正确是很难的。一旦人工智能系统被部署,我们需要工具来连续地监控并调整它们。我们最后的类别,保险机制从两个角度(监控 monitoring强制 enforcing)解决这些问题。

监控包含所有查看系统的方法来分析和预测他们的行为,通过人类查看(总结统计信息)和自动查看(扫描大量的活动记录)。强制,则是包含设计控制和限制系统的行为的机制。诸如可解释性 interpretability可终端性 interpretability这样的问题分别对应于监控和强制。

人工智能系统从两个方面不太像人类:构成和处理数据的方式。这导出了可解释性问题;非常良好的设计度量工具和协议可以去评测人工智能系统的决策质量 (Doshi-Velez and Kim, 2017)。例如,一个医疗智能系统理想情况是产生一个诊断并带有一个它如何得到结论的解释。这样医生可以在核准前查看这个推理过程 (De Fauw et al., 2018)。另外,为了理解更为复杂的人工智能系统我们可能甚至需要引入自动方法使用 Machine theory of mind(Rabinowitz et al., 2018) 来构建行为的模型。

ToMNet discovers two subspecies of agents and predicts their behaviour (from “Machine Theory of Mind”)

最后,我们想要能够在必需时候关闭人工智能系统。这就是可中断性问题。设计看一个可以来的关闭开关是非常有挑战性的:例如,因为奖励最大化人工智能系统一般有很强的动机去阻止这个发生 (Hadfield-Menell et al., 2017);并且因为这样的中断,尤其是频繁发生时,最终会改变原始任务,使得人工智能系统得出错误的结论 (Orseau and Armstrong, 2016)。

带有中断的问题:人类干涉 (如按下停止按钮)可以改变任务。在途中,中断给 MDP 加上了一个红色的转移改变了黑色的原任务. 参考 Orseau and Armstrong, 2016.

展望未来

我们在构建技术基础将会对很多重要的应用很有帮助。值得注意的是,当技术被广泛使用时,在部署时对安全至关重要的设计决策仍然会产生很大的影响。尽管当时方便,一旦这些设计选择已经被不可逆地集成到重要的系统中了,我们可能会发现他们导致不完全重设计无法解决的问题。

程序设计发展中两个例子包括空指针 — — Tony Hoare 将其作为十亿美元错误 和 C 语言中的 gets() 例程。如果早期程序设计语言在设计时考虑了安全性,那么发展过程可能是更慢但是计算机安全性可能会处在更加强的位置。

有了仔细考虑和规划,我们可以避免产生类似问题和漏洞。我们希望本文的分类会成为按照这种方式进行方法论规划的有用的框架。我们的目标是确保未来人工智能系统不仅仅希望安全,而是健壮的,可验证的安全 — — 因为我们按照这样的方式构建了它们!

我们希望看到在这些领域中与更宽泛的人工智能社区紧密合作持续产生令人兴奋的贡献,并且我们鼓励来自各个学科的个人考虑进入或者为人工智能安全性研究做出贡献。

如果你对和我们在本文中给出的领域中共同工作,我们正在招募!查看这里。在申请时候注明自己的兴趣。我们很高兴听取研究者和非研究人员的意见。

下面列出了其他文章、议程和分类,这些内容代表了关于人工智能技术安全性问题我们的思考或者给出了有用的另外的观点:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s