Nature发文:深度学习系统为什么这么好骗?

新闻 深度学习
今天的人工智能系统经常会出现莫名其妙的 bug。最新一期《自然》杂志上的这篇文章向我们介绍了深度学习为什么如此容易出错,以及解决这些问题的研究方向。

几张贴纸就能「改变」交通标志识别结果,转个方向就看不出图中的动物种类,今天的人工智能系统经常会出现莫名其妙的 bug。最新一期《自然》杂志上的这篇文章向我们介绍了深度学习为什么如此容易出错,以及解决这些问题的研究方向。

一辆自动驾驶汽车在接近停止标志时非但没有停车,反而加速驶入了繁忙的十字路口。一份事故调查报告显示,该汽车之所以做出这种决策,是因为停止标志的表面贴了四个小矩形。这样一来,自动驾驶汽车就把停止标志识别为了「限速 45」。 

Nature发文:深度学习系统为什么这么好骗?

这种事件其实还没有在实际中发生,但蓄意破坏 AI 系统的可能却是真实存在的。在停止路牌上贴标签、在帽子和眼镜上贴贴纸都有可能成功欺骗自动驾驶系统和人脸识别系统,还有研究者用白噪音来欺骗语音识别系统。

这些案例都说明欺骗一个领先的 AI 模式识别系统(即深度神经网络)有多么容易。这些系统已经在我们生活中无处不在,但只要对这些系统的输入做一些微小的改动,最好的神经网络也会受到欺骗。

在寻找问题的过程中,研究人员发现了 DNN 失效的很多原因。「深度神经网络本质的脆弱性是无法修复的,」谷歌 AI 工程师 François Chollet 指出。Chollet 及其他研究者认为,为了克服这些缺陷,研究者需要借助其他力量来巩固模式匹配 DNN:例如,让 AI 能够自己探索世界、自己写代码并保留记忆。一些专家认为,这类系统将成为未来十年 AI 研究的主题。

接受现实的检验

2011 年,谷歌推出了一个能识别猫的系统,从此掀起了 DNN 分类系统的研究高潮。人们惊呼:计算机终于可以理解世界了!

但 AI 研究者知道,DNN 其实并不理解这个世界。它们粗略地模仿大脑结构,其实是一种由分布在很多层上的数字神经元组成的软件结构。每个神经元与其相邻层的神经元相连接。

其基本思想是,原始输入(如图像的像素)的特征进入底层,触发一些神经元,然后根据简单的数学规则将信号传到上层的神经元。训练一个 DNN 网络需要将其暴露在大量样本中,然后每次调整神经元的连接方式,最终由上层得出想要的答案,比如把某头狮子的图像识别为狮子,尽管 DNN 从未见过这一头狮子的照片。

对 DNN 进行的首次重大检验发生在 2013 年。当时,谷歌的研究者 Christian Szegedy 及其同事发表了一篇名为「『Intriguing properties of neural networks」的预印版论文。该团队表明,通过修改几个像素就能误导 DNN 将狮子识别为图书馆等其他物体。他们将修改后的图像称之为「对抗样本」(adversarial example)。

Nature发文:深度学习系统为什么这么好骗?

一年之后,Clune 等人组成的团队表明,让 DNN 看到不存在的物体也是可能的,如在波浪形线条中看到企鹅。「任何从事过机器学习研究的人都知道,这些系统经常会犯一些低级错误,」Yoshua Bengio 说道,「但这种错误令人惊讶,而且出人意料。」

新型错误层出不穷。去年,Nguyen 证明,简单地旋转物体就能淘汰一波当前最好的图像分类器。今年,Hendrycks 等人报告称,即使是未经篡改的自然图片也能骗到当前最好的分类器,使其将蘑菇识别为饼干。

Nature发文:深度学习系统为什么这么好骗?

这个问题不止在目标识别中出现:任何使用 DNN 对输入进行分类的 AI 都能被骗到,如使用强化学习的游戏 AI,在屏幕上随机添加几个像素就能让智能体输掉比赛。

DNN 的弱点会给黑客接管 AI 系统提供可乘之机。去年,谷歌的一个团队表明,使用对抗样本不仅可以迫使 DNN 做出某种错误决策,也可能彻底改变程序,从而有效地将一个训练好的 AI 系统用于另一项任务。

许多神经网络理论上都能用来编码任何其他计算机程序。「理论上来说,你可以将一个聊天机器人转化为任何你想要的程序,」Clune 表示。在他的设想中,不远的将来,黑客就能够劫持云中的神经网络,运行他们自己的垃圾邮件躲避算法。

加州大学伯克利分校的计算机科学家 Dawn Song 认为,DNN 很容易受到攻击,但防守却非常困难。

能力越大越脆弱

DNN 非常强大,因为它们有很多层,也就意味着它们可以识别出输入的不同特征模式。经过训练,用于识别飞行器的 AI 算法有可能会找到诸如色块、纹理、背景等因素与预测目标具有关联性。但这也意味着输入内容的很小变化就可以让 AI 的识别结果出现明显的变化。

解决方法之一就是简单地给 AI 投喂更多数据,特别是多训练出错的情况以纠正错误。在这种「对抗性训练」的情况下,一个网络学会识别目标,另一个网络尝试修改第一个网络的输出,并制造错误。通过这种方法,对抗样本成为了 DNN 训练数据的一部分。

Hendrycks 等研究者建议测试 DNN 在各种对抗样本的性能,从而量化 DNN 对犯错的鲁棒性。他们表明,训练能抵御一种攻击的神经网络可能会削弱它对其他攻击的抵抗力,而鲁棒性的 DNN 不应该因其输入的微小扰动而改变其输出。这种因扰动而改变最终结果的属性,很可能是在数学层面上引入神经网络的,它限制了 DNN 学习的方式。

然而在当时,没有人可以解决所有 AI 都很脆弱这一问题。问题的根源,根据 Bengio 的说法,深度神经网络中没有一个很好的可以选择什么是重要的模型。当 AI 观察一个将狮子篡改为图书馆的图片,人类依然可以看到狮子,因为他们有一个思维模型,能够将动物视为更高级的特征——如耳朵、尾巴、鬃毛等。而其他低级别的细节则会被忽略掉。「我们知道从先验知识中学习什么特征是重要的,」Bengio 说,「而这来自于对结构化的世界的深度理解。」

解决此问题的一种尝试是将 DNN 与符号 AI 结合起来。符号 AI 也是机器学习之前,人工智能的主要方法。借助符号 AI,机器可以使用关于世界如何运作的硬编码规则进行推理,例如它包含离散的对象,之间以各种方式相互关联。一些研究人员,例如纽约大学的心理学家 Gary Marcus 说,混合 AI 模型是前进的方向。「深度学习在短期内非常有用,以至于人们对长期发展视而不见,」一直以来对当前深度学习方法持批评态度的马库斯说。

今年 5 月,他在加利福尼亚州帕洛阿尔托联合创立了一家名为 Robust AI 的初创公司,该公司旨在将深度学习与基于规则的 AI 技术相结合,以开发可以与人一起安全操作的机器人。公司正在做工作仍处于保密状态。

即使可以将规则嵌入到 DNN 中,这些规则的效果也只是能与学习一样好。Bengio 说,AI 智能体需要在更丰富的可探索环境中学习。例如,大多数计算机视觉系统无法识别一罐啤酒是圆柱形的,因为它们只在 2D 图像数据集上进行训练。这就是 Nguyen 等研究者发现我们可以通过不同角度的对象来愚弄 DNN 的原因。

但是,AI 的学习方式也需要改变。Bengio 说:「了解因果关系必须在现实世界做一些任务,智能体可以实验并探索现实世界。」另一位深度学习的先驱,Jürgen Schmidhuber 说,模式识别非常强大,足以使阿里巴巴、腾讯、亚马逊、Facebook 和 Google 等企业成为世界上最有价值的公司。他说:「但是将会有更大的浪潮,其涉及智能体操纵真实世界并通过自己的行动创建自己的数据。」

从某种意义上来讲,使用强化学习在人工环境中搞定计算机游戏的方式已经是这样了:通过反复试错,智能体以规则允许的方式操纵屏幕上的像素点,直到达成目标为止。然而,真实世界要比当今大多数 DNN 训练所依据的模拟环境或数据集要复杂得多。

即兴表演的机器人

如下图所示,在加州大学伯克利分校 (University of California, Berkeley) 的一个实验室里,一只机器人手臂在杂物中翻找。它拿起一个红色的碗,然后用它把一只蓝色的烤箱手套向右推几厘米。它放下碗,拿起一个空的塑料喷射器,然后估量着平装书的重量和形状。经过连续几天的筛选,机器人开始对这些陌生的物体有了感觉,知道它们各自用来做些什么。

机器人手臂正在使用深度学习来教自己使用工具。给定一盘物体,它依次捡起并观察每一个物体,观察当它移动它们并将一个物体撞向另一个物体时会发生什么。

当研究人员给予机器人一个目标,例如向它展示一张几乎空的托盘图像,并指定机器人安排物体来匹配状态。这样,机器人可以与其之前未见过的物体交互并即兴做出行动,例如用海绵将桌子上的物体抹干净。机器人还能意识到,用塑料水壶清理掉挡道的物体要比直接拿起它们要快。

伯克利实验室的研究员 Chelsea Finn 认为,一般而言,这种学习可以使得 AI 更深入地了解物体和世界。如果你曾经只在照片上见过水壶或海绵,则或许能够在其他图像中识别出它们。但是,你不会真正地理解它们是什么或它们用来做什么。因此,Finn 表示,只有你真正地与它们接触才可以更深入地了解它们。

但是,这种学习过程很慢。在模拟环境中,AI 可以非常快速地浏览示例。例如,2017 年,DeepMind 的 AlphaZero 自学习游戏软件接受训练在围棋、国际象棋和日本象棋领域大杀四方。那时,AlphaZero 针对每场赛事进行了 2000 多万场训练游戏。

AI 机器人学习这种能力很慢。AI 和机器人公司 Ambidextrous 联合创始人 Jeff Mahler 表示,在深度学习领域,几乎所有的结果都极度依赖大量数据。他说道:「在单个机器人上收集数以千万计的数据点将需要连续数年的执行时间。」此外,数据或许不可靠,因为传感器校准会随时间出现变化,硬件也会退化。

因此,大多数涉及深度学习的机器人工作仍然使用模拟环境来加速训练。亚特兰大佐治亚理工学院机器人专业的博士生 David Kent 认为,你能学到什么取决于模拟器有多好。模拟器一直在改进,研究人员也正在把从虚拟世界学到的经验更好地转移到现实世界。然而,这样的模拟仍然无法应对现实世界的复杂性。

Finn 认为,使用机器人学习最终要比使用人工数据学习更容易扩展。她制作的会使用工具的机器人花了几天时间学会了一项相对简单的任务,但不需要大量的监控。她说:「你只要运行这个机器人,每隔一段时间就需要检查一下。」她想象着有一天,世界上有很多机器人可以使用自己的设备,昼夜不停地学习。这应该是可能的——毕竟,这是人们理解世界的方式。「小孩不能通过从 Facebook 下载数据来学习,」Schmidhuber 说。

从较少的数据中学习

需要指出的一点是,一个小孩也可以通过一些数据点识别出新的物体:即使他们之前从来没有见过长颈鹿,但依然可以在看过它们一两次后识别出来。识别如此之快的部分原因是,这个小孩已经看过很多除长颈鹿之外的其他生物,所以熟悉了这些生物的显著特征。

将这些能力赋予 AI 的一个统称术语是迁移学习:即将之前通过训练获得的知识迁移到其他任务上。实现迁移的一种方法是在新任务训练时将所有或部分预训练任务再次用作起点(starting point)。例如,再次使用已经被训练用来识别一种动物(如识别基本体型的层)的部分 DNN 可以在学习识别长颈鹿时为新网络带来优势。

一种极端形式的迁移学习旨在通过向新网络展示少量示例(有时甚至只有一个示例)来训练它。此类已知的 one-shot 或 few-shot 学习极度依赖预训练的 DNN。举例而言,如果你想要构建一个能够识别出犯罪数据库中人的人脸识别系统,则利用包含数以百万计人脸(并不一定是数据库中的那些人)的 DNN 可以帮助该识别系统了解主要特征,如鼻子和下巴的形状。

所以,拥有此类预训练记忆可以帮助 AI 在未见过大量模式的情况下识别出新示例,这样可以加速机器人的学习速度。但是,如果面临一些它们经验范围外的任务,此类 DNN 或许依然表现不佳。这些网络能够实现多大程度的泛化也依然不清楚。

例如,DeepMind 的 AlphaZero 等最成功的 AI 系统所拥有的专业知识也极其有限。AlphaZero 虽然可以接受训练来下围棋和国际象棋,但无法同时进行。

学会如何学习

AlphaZero 在游戏领域的成功不仅仅归功于有效的强化学习,还要得益于一种算法(用到了蒙特卡洛树搜索技术的一种变体),这种算法可以帮助 AlphaZero 缩小下一步的选择范围。换言之,AI 学习如何以最好的方式从环境中学习。Chollet 认为,AI 的下一步重大进展将是赋予 DNN 编写各自算法的能力,而不仅仅是使用人类提供的代码。

Chollet 还说道,为基础的模式匹配补充推理能力将使得 AI 能够在它们的舒适区(comfort zone)外更好地处理输入。计算机科学家们多年来一直都在研究程序合成(program synthesis),让一台计算机自动生成代码。所以,在他看来,将这一领域与深度学习相结合可以生成更接近人类所使用的抽象心智模型的 DNN 系统。

例如,在机器人领域,Facebook AI 研究所(FAIR)的计算机科学家 Kristen Grauman 正在教机器人自身如何最有效地探索新环境。

该领域的研究人员表示他们在修复深度学习缺陷方面取得了一些进展,但他们也在探索一些新技术来使得 DNN 不那么脆弱。Song 认为,深度学习背后没有太多的理论可遵循。如果出了故障,则很难找出原因。整个领域依然以实证为主,所以研究人员必须亲自尝试着解决。

目前,尽管科学家们意识到了 DNN 的脆弱性以及他们对数据的过度依赖,但大多数人认为 DNN 技术将继续存在和发展。需要承认的一点是,近十年来,与大量计算资源相结合的神经网络可以在接受训练的情况下很好地识别模式。但遗憾的是,Clune 认为,没有人真正知道如何改进 DNN 技术。 

 

责任编辑:张燕妮 来源: 机器之心
相关推荐

2021-03-08 11:28:59

人工智能深度学习Python

2015-07-15 11:15:54

LinuxGNOME

2020-04-16 11:19:55

深度学习神经网络网络层

2019-12-31 13:01:28

物联网智能家居网络安全

2022-03-28 11:51:00

深度学习机器学习模型

2018-08-20 07:54:15

AI算法数据

2016-12-27 15:13:12

系统

2022-01-19 06:43:18

Windows 11操作系统

2020-02-27 21:03:30

调度器架构效率

2022-06-13 21:52:02

CDN网络节点

2018-08-16 08:03:21

Python语言解释器

2020-02-27 15:44:41

Nginx服务器反向代理

2022-06-02 08:03:19

PyCharmPython代码

2013-03-04 10:10:36

WebKit浏览器

2019-08-30 14:58:47

JavaScript程序员编程语言

2024-02-26 21:15:20

Kafka缓存参数

2020-09-27 08:12:09

Nginx反向代理负载均衡

2024-01-10 17:04:13

通信模块通信技术通信模组

2017-01-23 13:08:46

大数据客户画像技术

2020-11-10 22:53:54

oracle数据库
点赞
收藏

51CTO技术栈公众号