奎克的藏经阁 · MinerU 解析内容

AI 3.0(畅销书《复杂》作者、复杂系统前沿科学家梅拉妮·米歇尔,历经10年思考,厘清人工智能与人类智能的全新力作,全景式地展现了人工智能的...

491 个 PDF 物理页 · 本页显示文件第 141–150 页

PDF 物理页索引 140

文件中的第 141 页 · 印刷页码:未识别

ConvNets的输入是一幅图像,即与图像每个像素的颜色和亮度一一对应的一个数值组。 <sup>5</sup> 它的最终输出是网络对于每种类别(狗或猫)的置信度(0~100%)。我们的目标是让网络学会对输入图像所属的正确类别输出高置信度,对其他类别输出低置信度。这样,网络将了解输入图像的哪些特征对完成这项任务最有帮助。

注意在图4-5中每层网络由一组重叠起来的三个矩形表示,这些矩形代表的是激活特征图(activation maps),它受到了大脑视觉系统中类似的“映射”的启发。胡贝尔和威塞尔发现,处于视皮层更下层的神经元是以物理形式排列的,因此它们形成了一个大致的“网格”,网格中的每个神经元只会对视野中相应的一小块区域做出响应。想象一下,你在夜晚乘坐飞机飞过洛杉矶上空并拍了一张照片,照片中的灯光就形成了一幅对这个灯火通明的城市的粗略映射。同样的道理,视皮层中的每一个网格中神经元的激活形成了对视觉场景中重要特征的一个粗略映射。现在假设你有一个非常特殊的相机,可以为建筑物的灯光、汽车的灯光以及其他各种光线拍摄单独的照片,这就类似于视皮层所做的:每个重要的视觉特征都有各自的神经映射。这些映射的组合就是唤起我们对场景产生感知的关键所在。

PDF 物理页索引 141

文件中的第 142 页 · 印刷页码:未识别

与视皮层中的神经元一样,ConvNets中的单元是重要视觉特征的探测器,每个单元会在视野的特定部分寻找其指定特征。ConvNets中的每一层包括由这些单元组成的多个网格,每个网格形成一个具有特定视觉特征的激活特征图,这也与视皮层中的结构有一点相似。

ConvNets中的单元应检测哪些视觉特征呢?首先让我们看下大脑是如何做的。胡贝尔和威塞尔发现视皮层更下层的神经元可作为边缘检测器,其中“边缘”指的是两个对比明显的图像区域之间的边界。每个神经元接收对应于视觉场景中特定小区域的输入,这个区域被称为该神经元的感受野(receptive field)。只有当其感受野包含一种特定的边缘时,神经元才会变得活跃。

事实上,这些神经元对自己要响应哪一种边缘非常明确。有些神经元,只有当其感受野中包含垂直边缘时,才会变得非常活跃;有些神经元只响应水平边缘;还有一些神经元则只对某些特定角度的边缘做出响应。胡贝尔和威塞尔最重要的发现之一是:人类视野中的每个小区域对应着许多不同的作为边缘检测器的神经元的感受野,也就是说,在视觉处理的低层次上,神经元在试着弄清楚场景中的每一组成部分的边缘方向,作为边缘检测器的神经元再将这一信息向视皮层的更高层进行传递。 <sup>6</sup>

PDF 物理页索引 142

文件中的第 143 页 · 印刷页码:未识别

与之类似,我们假设的ConvNets的第1层由边缘检测单元组成。图4-6给出了ConvNets的第1层的详解图。该层由三个激活特征图组成,每个激活特征图都是由单元组成的一个网格。激活特征图中的每个单元对应着输入图像的类似位置,并且每个单元从该位置周围的一小块区域即它的感受野内获得输入,通常邻近单元的感受野会相互重叠。每个单元都会计算一个激活值,这个值用于测量图中区域与该单元首选的边缘方向之间的“匹配度”,其中,边缘方向有垂直、水平和倾斜三种。

图4-7详细地展示了图4-6中激活特征图1的单元是如何来计算其激活值的,主要是检测垂直边缘的那些单元。输入图像中的白色小方块代表两个不同单元的感受野。这些感受野内的图像块在放大时体现为像素阵列。此处为简单起见,我将每个图像块展示为一个3×3的像素集。每个单元将其感受野中的像素强度作为输入,然后,单元将每个输入乘以其权重,并对结果求和以求得该单元的激活值。

PDF 物理页索引 143

文件中的第 144 页 · 印刷页码:未识别

例如,图4-7中上方的感受野的权重卷积为:$\left( \begin{array} { c c c c c c c c } { { 2 0 0 \times 1 } } \end{array} \right) + \left( \begin{array} { c c c c c c } { { 1 1 0 \times 0 } } \end{array} \right) + \left[ \begin{array} { c c c c c } { { } } & { { 7 0 \times } } & { { ( \begin{array} { c c c } { { - 1 } } \end{array} ) } } \end{array} \right]$ $\left. \begin{array} { c c c c c c c c c } { { + } } & { { ( } } & { { 1 9 0 \times 1 } } & { { ) } } & { { + } } & { { ( } } & { { 9 0 \times 0 } } & { { ) } } & { { + \left[ } } & { { 8 0 \times } } & { { ( ~ - 1 ~ ) } } & { { \right] } } & { { } } \end{array} \right.$ $ ( 2 2 0 \times 1 ) + ( 7 0 \times 0 ) + [ 5 0 \times ( - 1 ) ] = 4 1 0$ ,这个结果就是该单元的激活值。

当感受野中存在由明到暗的垂直边缘即输入图像块的左右两侧存在鲜明对比时,图4-7中所示的权重会使其产生一个高激活值。上方的感受野包含了一个垂直的边缘:狗的亮色皮毛紧挨着暗草坪,这反映在其高激活值(410)上。下方的感受野不存在这样的边缘,只有深色的草坪,其激活值(-10)则接近于0。需要注意的是:从暗到明的垂直边缘将产生一个“高”负值(即一个与0距离很远的负值)。

将感受野中的每个像素强度乘以其对应的权重,然后对结果求和的计算过程叫作卷积(convolution),这就是“卷积神经网络”这一名称的由来。我在前文中提到过,在一个ConvNets中,一层激活特征图是与整幅图像上的感受野相对应的单元网格。在一个给定的激活特征图中,每个单元都使用相同的权重来计算其感受野的卷积。想象一下,使用图4-7中的权重,如果输入图像中有一些垂直边缘,结果会如图4-7中的激活特征图 <sup>7</sup> 所示:这些边缘上一个单元的感受野的中心像素会显示为白色,因为其激活值是由较大的正值和绝对值较小的负值求和得出的。激活值越接近0,显示出的颜色就越接近黑色;激活值越远离0,显示出的颜色就越接近白色。可以看到,白色的区域突显了垂直边缘所在的位置。图4-6中激活特征图的图2和图3是以相同的方式创建的,但是分别使用的是能够突出水平和倾斜边缘的权重。总体来说,第1层中边缘检测单元的激活特征图为ConvNets提供了对输入图像的不同区域中特定边缘的表示,类似于一个边缘检测程序输出的内容。

PDF 物理页索引 144

文件中的第 145 页 · 印刷页码:未识别

我们现在讨论一下map(地图)这个词。在日常使用中,map指的是对地理区域的空间表示,如城市地图。比如说,巴黎的道路图,展示了这个城市的一些特征——其街道、大路和小巷的布局,但又不包括这个城市的一些其他特征,如建筑物、房子、灯柱、垃圾桶、苹果树、鱼塘等的分布。还有一些呈现其他特征的地图,比如你可以找到标注巴黎的自行车道、素食餐厅、允许遛狗的公园的地图。无论你感兴趣的内容是什么,都极有可能存在一张那样的地图,可以帮你找到想要的东西。如果你想向一位从未去过巴黎的朋友讲解巴黎的风貌,一种不错的办法可能就是:向你的朋友展示包含一系列特别景点的城市地图。

PDF 物理页索引 145

文件中的第 146 页 · 印刷页码:未识别

像大脑一样,ConvNets同样将视觉场景表示为一系列能够反映一组特定检测器的“兴趣”的地图。在图4-6的示例中,这些兴趣指的是不同的边缘方向,而这个“地图”就是由ConvNets中的所有的激活特征图组成的。正如我们接下来将看到的,在ConvNets中,网络自己学习其兴趣(即检测器),这取决于其受训的具体任务。

创建激活特征图不仅仅局限于ConvNets的第1层。如你在图4-5中能够看到的,一个类似的结构可适用于所有的神经网络层:每一层都有一组检测器,每个检测器都会创建自己的激活特征图。ConvNets之所以能够成功,关键就在于这些激活特征图是层次化的:第2层中单元的输入是第1层的激活特征图,第3层中单元的输入是第2层的激活特征图,依此类推。在我们假设的网络中,第1层中的单元响应边缘;第2层中的单元会对边缘的特定组合很敏感,如棱角、“T”形等;而第3层中的检测器会对边缘组合的组合敏感。越往这个结构的上层走,检测器就会对越复杂的特征敏感,这和胡贝尔、威塞尔以及其他学者在人的大脑中观察到的结果一样。

我们假设的这个ConvNets有4层,每层有3个激活特征图,但在现实世界中这些网络可以具有更多层,有时多达数百层,每层具有不同数量的激活特征图。确定ConvNets结构的这些特征以及其他一些方面的特征,是将这些复杂的神经网络应用于特定任务的关键。在第03章中,我阐述了古德对未来“智能爆炸”的看法,目前我们还未发展到这一阶段。就目前而言,要使ConvNets工作得更好,仍需结合人类的聪明才智。

PDF 物理页索引 146

文件中的第 147 页 · 印刷页码:未识别

激活对象特征<sub>,</sub>通过分类模块进行预测

ConvNets 中 的 第 1 层 到 第 4 层 被 称 为 “ 卷 积 层 ”(convolutional layers),每一层都对前一层进行卷积,其中第1层对输入进行卷积。给定一个输入图像,每一层连续进行计算,最后在第4层,ConvNets产生一组关于相对复杂特征的激活特征图。这些特征可能包括眼睛、腿部、尾巴形状,以及网络学到的任何其他可用于对训练对象进行分类的内容。此时,分类模块使用这些特征来预测图像的内容。

ConvNets中的分类模块实际上是一个完全传统的神经网络(即一个隐藏层),类似于我在第02章中描述的示例。分类模块的输入是来自最高卷积层的激活特征图。模块的输出是一组百分比值,其中一个值对应一种类别的可能性,对输入图像的类别(在我们的例子中,是狗或猫)的置信度打分。

这里我简要说明下ConvNets:受胡贝尔和威塞尔关于大脑视皮层的研究发现的启发,一个ConvNets将输入图像通过卷积转换为一组特征渐趋复杂的激活特征图。最高卷积层的激活特征图被输入到一个传统的神经网络(分类模块),该网络输出其对已知的对象类别的置信度。 <sup>8</sup> 具有最高置信度的对象类别被输出为网络对于该图像的分类。

你想测试一下经过良好训练的ConvNets的能力吗?只需拍摄某个物体的一张照片并将其上传到谷歌的“按图搜索”引擎<sup>9</sup> 。谷歌将运行ConvNets来分析你上传的图像,并根据该系统对数千种可能的对象类别的置信度,告诉你它对该图像的“最佳判断”。

PDF 物理页索引 147

文件中的第 148 页 · 印刷页码:未识别

不断从训练样本中学习<sub>,</sub>而非预先内置正确答案

我们所假设的ConvNets是在第一层包含边缘检测器,但在现实情况中,ConvNets的边缘检测器并不是内置的,相反,ConvNets从训练样本中学习其每一层应该检测的特征,以及如何在分类模块中设置权重,从而能对正确答案生成较高的置信度。与传统的神经网络一样,对于所有的权重,ConvNets都可以通过我在第02章所描述的反向传播算法,从数据中学习获取。

更具体地说,如何训练ConvNets来识别一张给定的图像是狗还是猫?首先,收集许多狗和猫的图像样本,这些图像样本被称为“训练集”,同时,创建一个对每张图像打了标签的文件夹,这个文件夹中的每一张图片都已被正确地命名为“狗”或“猫”。对于这个步骤更好的做法可能是,听取计算机视觉研究人员的建议:聘请一名研究生为你做这些标注的工作。如果你是研究生,那么就招一名本科生,因为没人喜欢这项琐碎的工作!你的训练模型将把网络中所有的权重设置为随机值,然后让程序开始训练:一个接一个地,每张图像作为输入传给网络,网络逐层进行计算,最后输出对“狗”和“猫”的置信度。对于每张图,训练模型都将其输出值与正确值进行对比,例如,如果图像中是狗,那么狗的置信度应为100%,而“猫”的置信度应该为0。然后训练模型将使用反向传播算法来细微地调整贯穿于网络的权重,使得该神经网络下次再见到这幅图像时,输出的置信度更接近正确数值。

PDF 物理页索引 148

文件中的第 149 页 · 印刷页码:未识别

ConvNets按照“输入图像,计算输出误差,然后改变权重”这样的步骤,在训练集中的每张图像上进行训练,这个过程被称为训练的一次迭代周期。训练一个ConvNets需要经过多个周期,在此期间网络一遍又一遍地处理每幅图像。最初,网络辨别狗和猫等类别的表现会很差,但慢慢地,随着其在多次迭代周期中对权重进行反复调整,它在该任务上的表现将越来越好。最后,网络会在某个点上“收敛”,即权重从一个周期迭代到下一个周期时不再变化了,从原则上讲,此时网络已经非常擅长识别训练集图像中的狗和猫了,但是我们并不能确定该网络是否真正擅长完成这项任务,除非它能将识别图像过程中学到的知识应用到训练集之外的图像上。非常有趣的是,尽管ConvNets并未被程序员限制去学习检测任何特定的特征,但在大量真实的图像数据集上进行训练时,ConvNets似乎确实演化出了一种类似于胡贝尔和威塞尔在大脑视觉系统中所发现的检测器的分层结构。

在下一章,我将叙述ConvNets在机器视觉领域是如何从相对冷门的地位离奇地转向近乎完全占主导地位的,这其实是由同期的一项技术革命促成的一个转变,这一技术革命,就是大数据。

PDF 物理页索引 149

文件中的第 150 页 · 印刷页码:未识别

本章要点

04 从大脑识别到ConvNets识别

大脑识别模式<sub>:</sub> 当人的眼睛聚焦于一个场景时,眼睛接收到的是由场景中的物体发出或其表面反射的不同波长的光,这些光线激活了视网膜上的细胞,本质上说是激活了眼睛后面的一个神经元网格。这些神经元通过位于眼睛后面的纤长的视觉神经来交流彼此的激活信息并将其传入大脑,最终激活位于大脑后部视皮层的神经元。视皮层大致是由一系列按层排列的神经元组成,就像婚礼蛋糕那样一层一层堆在一起,每一层的神经元都将其激活信息传递给下一层的神经元。

ConvNets识别模式<sub>:</sub> ConvNets由一系列模拟神经元层组成,在这里,我还是将这些模拟神经元称为单元。每层中的单元为下一层的单元提供输入,当一个ConvNets处理一张图像时,每个单元都有一个特定的激活值—— 根据单元的输入及其连接权重计算所得的真实的数值。ConvNets的输入是一幅图像,即与图像每个像素的颜色和亮度一一对应的一个数值组。它的最终输出是网络对于每种类别(狗或猫)的置信度(0~100%)。我们的目标是让网络学会对输入图像所属的正确类别输出高置信度,对其他类别输出低置信度。这样,网络将了解输入图像的哪些特征对完成这项任务最有帮助。