PDF 物理页索引 130
文件中的第 131 页 · 印刷页码:未识别
第二部分
视觉识别<sub>:</sub>始终是<sup>“</sup>看<sup>”</sup>起来容易 <sup>“</sup>做<sup>”</sup>起来难
PDF 物理页索引 131
文件中的第 132 页 · 印刷页码:未识别
视觉识别的两次飞跃
1<sub>.</sub>ConvNets是当今计算机视觉领域深度学习革命的驱动力
尽管卷积神经网络(ConvNets)被广泛誉为人工智能领域的下一个大事件,但它早在20世纪80年代便由法国计算机科学家杨立昆提出,而他则是受到了福岛· 邦彦提出的神经认知机(Neocognitron)的启发。理解ConvNets对于了解当前计算机视觉,以及人工智能的其他方面的发展进程及其局限性是至关重要的。
2<sub>.</sub>ImageNet竞赛被看作计算机视觉和人工智能进步的关键标志
为了提高计算机的视觉识别能力,计算机视觉领域需要一个新的基准图像集,也就是一个具有更多类别和更多照片的集合。普林斯顿大学年轻的计算机视觉教授李飞飞尤其关注这一目标。李飞飞有一个新的想法—— 根据词网(WordNet)中的名词构建一个图像数据库,使其中每个名词都与大量包含该名词所表示事物的图像相关联,因此ImageNet的构想诞生了。然而,判定一张照片是否为某个特定名词所表示事物的图像,其实就是目标识别任务本身!并且计算机在这项任务上毫无可靠性可言,而这也正是研究者最初想要构建ImageNet的全部原因。
PDF 物理页索引 132
文件中的第 133 页 · 印刷页码:04
何人<sub>,</sub>何物<sub>,</sub>何时<sub>,</sub>何地<sub>,</sub>为何
观察图4-1,告诉我你看到了什么。你可能看到:一位女士在抚摸一条狗或者一名士兵在抚摸一条狗;或者是一条狗在欢迎一名刚从战场上回来的战士,还有鲜花和写有“欢迎回家”字样的气球,士兵的脸上表现出了复杂的情感,这条狗则开心地摇着尾巴。
这张照片是什么时候拍摄的呢?很可能是在过去的10年内。这张照片的场景在哪里?可能是在一个机场。为什么士兵在抚摸着这条狗?她可能已经离开了很长一段时间,经历了许多或好或坏的事情,非常想念她的狗,而且因为回到了家,所以特别开心。又或许,狗对她来说就象征了“家”的全部。在这张照片拍摄之前发生了什么呢?这名士兵可能下了飞机,然后穿过机场的安全通道,到达了接机口。她的家人或朋友用拥抱迎接了她,递给了她鲜花和气球,并松开了拴着狗的绳索。这条狗径直走到士兵身旁,士兵放下了她手中的东西并蹲下来,小心翼翼地将气球的绳子压在她的膝盖下防止气球飘走。接下来会发生什么呢?她可能会站起来,擦掉脸上的泪水,拿起鲜花、气球和笔记本电脑并牵起狗,和她的家人朋友一起走向行李领取区。
04
PDF 物理页索引 133
文件中的第 134 页 · 印刷页码:未识别
当你观察这张图片时,在最基本的层面上,你会观察到图片上的油墨,如果你看的是电子版,那么你会看到屏幕上的像素。不知为何,你的眼睛和大脑能够通过获取这些原始信息,在短短几秒钟内将其转化为一个包含活体生命、物体、关系、地点、情感、动机、过去和未来行为的详细的故事。我们观看、观察、理解,最重要的是,我们知道应该忽略哪些无关紧要的信息。照片中还有很多与我们提取出来的故事并不相关的因素:地毯上的图案、从士兵背包上垂下来的绳带、挂在背包肩带上的哨子,以及士兵头发上的发夹。
我们人类几乎可以在瞬间完成如此大量信息的处理,并且,我们很少会意识到我们正在做这些信息处理以及我们是如何做到的。除非一个人先天失明,否则视觉处理会在各种抽象层面上支配大脑。
当然,以这种方式来描述照片、视频或照相机中的实时视频流中内容的能力,也是我们要求通用的、人类水平的人工智
PDF 物理页索引 134
文件中的第 135 页 · 印刷页码:未识别
能所首先要具备的素质之一。
看与做
自20世纪50年代以来,人工智能领域的研究者一直致力于使计算机能够理解视觉数据。在人工智能研究的早期,要达到这一目标似乎相当简单直接。1966年,极力推广符号人工智能的麻省理工学院教授明斯基和佩珀特提出了“夏季视觉项目”,在这个项目中,他们安排本科生来从事名为“构建视觉系统的重要组成部分”的课题研究 <sup>1</sup> 。用一位人工智能史学家的话来说,“明斯基聘请了一名大一学生,要求他用一个夏季来解决这样一个问题:将一台摄像机连接至计算机,并让计算机描述它‘看’到的东西” <sup>2</sup> 。
这名本科生并没有取得太大的进展。尽管一个叫作计算机视觉(computer vision)的人工智能子领域在这个项目提出后的数十年中取得了显著的进展,但像人类那样去观看和描述的计算机程序看起来依然遥不可及。兼具观看和观察的视觉,原来是所有“容易”的事情里最难的。
描述视觉输入的一个先决条件是目标识别(objectrecognition),也就是将一张图像中的一组特定像素识别为一个特定目标类别,如“女士”“狗”“气球”或“笔记本电脑”。目标识别对我们人类来说是可以非常迅速和轻而易举就能完成的事情,所以,它看起来对计算机来说也不应该会是一个特别困难的问题,直到人工智能研究者真正试图让计算机去完成它,才发现事实恰恰相反。
PDF 物理页索引 135
文件中的第 136 页 · 印刷页码:未识别
目标识别的困难在哪儿呢?假设我们的问题是让计算机程序识别图片中的狗。图4-2阐释了其中的一些困难。如果输入的只是图像的像素,程序首先要弄清楚哪些是“狗”的像素,哪些是“非狗”的像素(如背景、阴影、其他物体等)。此外,不同的狗看起来会很不一样:它们可能具有不同的毛色、形状和尺寸;它们可能面朝不同的方向;图像之间的光线差异可能很大;狗的一部分可能被其他对象(围栏、人等)所遮挡。更重要的是,狗的像素组可能看起来会很像猫或其他动物的像素组。比如,在某些光照条件下,天空中的一朵云甚至都可能看起来非常像一条狗。
自20世纪50年代以来,计算机视觉领域一直在努力解决上述这些问题以及一些其他相关的问题。直到最近,开发能够识别目标对象之“不变特征”的专用图像处理算法,仍然是计算机视觉研究人员的一项主要的研究工作。这种图像处理算法使得它即便是面对如上图所描述的困难,也能确定目标对象所属的类别;但是,即便是有了复杂的图像处理算法,目标识别程序的相关能力仍然远不及人类。
PDF 物理页索引 136
文件中的第 137 页 · 印刷页码:未识别
深度学习革命<sub>:</sub>不是复杂性<sub>,</sub>而是层深
由于深度学习领域的进展,机器对图像和视频中物体的识别能力在21世纪第一个10年经历了一次质的飞跃。
深度学习简单来说是指用于训练DNN的算法,这里的DNN就是深度神经网络,指的是具有不止一个隐藏层的神经网络。回顾一下,隐藏层是指位于神经网络中输入层和输出层之间的网络层。网络的深度指的是隐藏层的数量。如我们在第02章中所看到的那样,一个“浅层”网络只有一个隐藏层;一个“深度”网络则有不止一个隐藏层。值得强调的是:深度学习中的“深度”并不是指神经网络所学习内容的复杂性,而仅仅是指网络本身的层数。
关于DNN的研究已经持续了几十年。它之所以能够掀起一场革命,是因为其近年来在许多人工智能任务上获得了成功。有趣的是,研究人员发现,最成功的DNN是那些模仿了大脑的视觉系统结构的网络。我在第02章中描述的传统的多层神经网络最初是受大脑启发,但是它们的结构却与大脑结构非常不同。与之相反,主导深度学习的DNN则是直接根据神经科学中关于大脑的相关研究发现进行建模的。
模拟大脑<sub>,</sub>从神经认知机到ConvNets
大约在明斯基和佩珀特提出视觉项目的时候,有两位神经科学家正处在一项长达数十年的研究中,这项研究从根本上重塑了我们对于人的视觉,尤其是目标识别的理解。这两位神经科学家就是:大卫·胡贝尔(David Hubel)和托尔斯滕·威塞尔(Torsten Wiesel)。他们后来因发现了猫和灵长类动物(包括人类)视觉系统中的层次化结构(hierarchicalorganization),以及解释了视觉系统如何将视网膜上的光线转换为人脑可辨识的信息而获得诺贝尔奖。
PDF 物理页索引 137
文件中的第 138 页 · 印刷页码:未识别
胡贝尔和威塞尔的发现启发了一位名叫福岛·邦彦的日本工 程 师 , 福 岛 在 20 世 纪 70 年 代 开 发 了 被 称 为 认 知 机(Cognitron)的最早的DNN之一,之后又在认知机的基础上进行了改良,开发了神经认知机。福岛在他的论文中 <sup>3</sup> 报道了一些训练神经认知机识别手写数字的成功案例(案例见第01章),但是福岛所使用的具体学习方法似乎并没有扩展到更复杂的视觉任务。即便如此,神经认知机还是对DNN领域后来出现的许多方法产生了重要影响,包括在今天最具影响力,且最被广泛使用的方法:卷积神经网络(ConvNets)。
ConvNets是当今计算机视觉领域正在进行的深度学习革命的驱动力,当然在其他领域也是如此。尽管它被广泛誉为人工智能领域的下一个大事件,但ConvNets实际上并不是很新,最初是在20世纪80年代由法国计算机科学家杨立昆提出,而他则是受到了福岛提出的神经认知机的启发。杨立昆是ConvNets之父,纽约大学终身教授,深度学习三巨头之一,杨立昆是他给自己起的中文名字。
下面我将花一些时间来描述ConvNets的工作机制,因为理解ConvNets对于了解当前计算机视觉,以及人工智能的其他方面的发展进程及其局限性是至关重要的。
PDF 物理页索引 138
文件中的第 139 页 · 印刷页码:未识别
ConvNets如何不将狗识别为猫
与神经认知机类似,ConvNets的设计基于胡贝尔和威塞尔在20世纪五六十年代发现的与大脑视觉系统相关的几个关键信息。当人的眼睛聚焦于一个场景时,眼睛接收到的是由场景中的物体发出或其表面反射的不同波长的光,这些光线激活了视网膜上的细胞,本质上说是激活了眼睛后面的神经元网格。这些神经元通过位于眼睛后面的纤长的视觉神经来交流彼此的激活信息并将其传入大脑,最终激活位于大脑后部视皮层的神经元(见图4-3)。视皮层大致是由一系列按层排列的神经元组成,就像婚礼蛋糕那样一层一层堆在一起,每一层的神经元都将其激活信息传递给下一层的神经元。
胡贝尔和威塞尔发现的证据表明,这种层次结构中不同层的神经元是响应视觉场景中出现的渐增复杂特征的“检测器”。如图4-4所示:初始层的神经元作为对物体边缘形状的响应得到激活,然后,能对由这些边缘构成的简单形状做出响应的神经元层会接收到这一激活反应,依此类推,经过更复杂的形状,最后到整个对象和特定的面孔。
PDF 物理页索引 139
文件中的第 140 页 · 印刷页码:未识别
注意,图4-4中的箭头表示一条自底向上或前向的信息流,代表信息从较低层神经元向较高层神经元传递。需要重点注意的是,视皮层中也会有自顶向下或反向的信息流,也就是信息从较高层向较低层传递,实际上,视皮层中反馈连接的数量约为前馈连接的10倍。尽管我们坚信我们的先验知识和预期应该是储存在更高层的大脑神经中的,并且会强烈地影响我们的感知,但神经科学家对这些反馈连接的作用仍然不甚了解。
与图4-4中所示的前向层次结构一样,ConvNets由一系列模拟神经元层组成,在这里,我还是将这些模拟神经元称为单元。每层中的单元为下一层的单元提供输入,正如我在第02章中描述的神经网络一样,当ConvNets处理一张图像时,每个单元都有一个特定的激活值——根据单元的输入及其连接权重计算所得的真实的数值。
为使这一讨论更加具体,假设一个具有4层神经元附加一个“分类模块”(classification module) <sup>4</sup> 的ConvNets,我们想要训练它来识别图像中的狗和猫。为了简单起见,每个输入图像中都只有一只猫或一条狗。图4-5表示的是ConvNets的结构,它有点复杂,我将逐步详细解释其工作原理。