计算机如何学习如何出色地识别图像

2012年以来的重大科研工作改变了图像识别软件领域




例如,今天我可以打开Goog​​le相册,写“海滩”,然后查看过去十年来我在不同海滩上拍摄的一堆照片。 而且我从未对照片签名过-Google会根据它们的内容识别出海滩。 这个看似无聊的功能基于称为“深度卷积神经网络”的技术,该技术允许程序使用复杂的方法来理解图像,这是前几代人所无法访问的。

近年来,研究人员发现,随着他们建立更深的神经网络(NS)并在越来越大的数据集上进行训练,软件的准确性会越来越好。 这产生了对计算能力的无限满足,并丰富了Nvidia和AMD等GPU制造商。 几年前,谷歌为国民议会开发了自己的特殊芯片,而其他公司则试图跟上它。

例如,在特斯拉,深度学习专家Andrei Karpati被任命为Autopilot项目的负责人。 现在,汽车制造商正在开发自己的芯片,以在自动驾驶仪的未来版本中加快NS的工作。 或以苹果公司为例:A11和A12芯片是最新iPhone的核心,具有神经引擎“ 神经处理器 ”,可以加快NS的运行速度,并使图像和语音识别应用程序更好地运行。

我在本文中采访过的专家追踪了深度学习热潮的开始,即特定工作:AlexNet,以主要作者Alex Krizhevsky的名字命名。 “我相信2012年是AlexNet诞生的标志性一年,”国防专家,《 智能汽车的思考方式 》一书的作者肖恩·格里什(Sean Gerrish)说。

直到2012年,深度神经网络(GNS)在莫斯科地区的世界中还是有些死水。 但是随后,来自多伦多大学的Krizhevsky和他的同事参加了享有盛誉的图像识别竞赛,他们的程序在准确性方面大大超越了之前开发的所有内容。 几乎立即,STS成为图像识别领域的领先技术。 其他使用该技术的研究人员很快证明了识别准确性的进一步提高。

在本文中,我们将深入研究深度学习。 我将解释什么是NS,如何对其进行培训,以及为什么它们需要这种计算资源。 然后,我将解释为什么某种类型的NS(深度卷积网络)能很好地理解图像。 不用担心,会有很多图片。

一个神经元的简单例子


“神经网络”的概念在您看来似乎很模糊,所以让我们从一个简单的例子开始。 假设您希望国民议会根据绿色,黄色和红色交通信号来决定是否驾驶汽车。 NS可以用单个神经元解决此问题。



神经元接收输入数据(1-开,0-关),乘以适当的权重,然后将所有权重值相加。 然后,神经元添加一个偏移量,该偏移量定义了神经元“激活”的阈值。 在这种情况下,如果输出为正,则我们认为神经元已激活-反之亦然。 神经元等效于不等式“绿色-红色-0.5> 0”。 如果事实确实如此-也就是说,绿色亮着而红​​色没有亮着-那么汽车应该走了。

在真正的NS中,人工神经元又走了一步。 通过添加加权输入并添加偏移量,神经元使用了非线性激活函数。 通常使用S型S型函数,总是产生0到1的值。

使用激活功能不会改变我们简单的交通信号灯模型的结果(我们只需要使用0.5的阈值,而不是0)即可。 但是激活函数的非线性是必需的,以便NS可以对更复杂的函数建模。 如果没有激活功能,则每个任意复杂的NS都将简化为输入数据的线性组合。 线性函数无法模拟现实世界中的复杂现象。 非线性激活函数使NS可以近似任何数学函数

网络示例


当然,有很多近似函数的方法。 NS脱颖而出,因为我们知道如何使用一些代数,一堆数据和大量计算能力来“训练”它们。 代替程序员直接为特定任务开发NS,我们可以创建从一个相当普通的NS开始,研究大量标记示例,然后更改NS以便为尽可能多的示例提供正确标签的软件。 期望最终的NS将汇总数据并为以前不在数据库中的示例生成正确的标签。

实现这一目标的过程早在AlexNet之前就已开始。 1986年,三位研究人员发表了关于反向传播的里程碑式著作 ,这项技术使复杂的NS的数学学习成为现实。

为了想象反向传播的工作原理,让我们看一下迈克尔·尼尔森(Michael Nielsen)在其出色的在线GO教科书中描述的简单NS。 网络的目的是以28x28像素的分辨率处理手写数字的图像,并正确确定是否写入数字0、1、2等。

每个图像有28 * 28 = 784个输入量,每个输入量都是从0到1的实数,表示像素是亮还是暗。 尼尔森(Nielsen)创建了这种NA:



中心和右列中的每个圆圈都是一个神经元,类似于我们在上一节中检查的神经元。 每个神经元获取输入的加权平均值,添加偏移量,然后应用激活函数。 左侧的圆圈不是神经元;它们代表网络的输入数据。 尽管图片仅显示8个输入圆圈,但实际上有784个输入圆圈-每个像素一个。

右侧的10个神经元中的每一个都应该“触发”自己的编号:输入手写0时(只有在这种情况下),顶部的神经元应该打开;当网络看到手写1(且只有它)时,第二个神经元应该打开,依此类推。

每个神经元都感知到来自上一层的每个神经元的输入。 因此,中间的15个神经元每个接收784个输入值。 对于784个输入值中的每一个,这15个神经元中的每一个都有权重参数。 这意味着仅该层具有15 * 784 = 11760的权重参数。 类似地,输出层包含10个神经元,每个神经元都接收来自中间层所有15个神经元的输入,这又增加了15 * 10 = 150个权重参数。 此外,该网络具有25个位移变量-25个神经元中的每个变量。

神经网络训练


训练的目的是微调这11935个参数,以在网络提供手写数字图像时最大化所需输出神经元(只有它)被激活的可能性。 我们可以使用一组著名的图像MNIST来做到这一点,其中有60,000个标记的图像,分辨率为28x28像素。


来自MNIST的60,000张图像中的160张

Nielsen演示了如何使用74行常规python代码训练网络-无需任何MO库。 学习从为这11935个参数,权重和偏移量中的每一个选择随机值开始。 然后,程序将浏览图像示例,并分别经历两个阶段:
  1. 前向传播步骤基于输入图像和当前参数计算网络输出。
  2. 反向传播步骤从正确的输出数据中计算出结果的偏差,并更改网络参数,从而略微提高其在该图像中的效率。


一个例子。 假设网络收到以下图片:



如果校准良好,则引脚“ 7”应变为1,其他九个结论应变为0。但是,可以说,输出“ 0”处的网络的值为0.8。 太过分了! 训练算法更改负责“ 0”的神经元的输入权重,以便在下一次处理此图像时,它变得更接近于0。

为此,反向传播算法为每个输入权重计算误差梯度。 这是对于给定的输入重量变化,输出误差将如何变化的度量。 然后,该算法使用梯度来决定要更改每个输入权重的大小-梯度越大,变化越强。

换句话说,训练过程会“训练”输出层的神经元,使其较少注意那些将其推向错误答案的输入(中间层的神经元),而更多地关注了将其推向正确方向的那些输入。

该算法对所有其他输出神经元重复此步骤。 它降低了神经元“ 1”,“ 2”,“ 3”,“ 4”,“ 5”,“ 6”,“ 8”和“ 9”(而不是“ 7”)的输入权重,以降低这些值输出神经元。 输出值越高,输出误差相对于输入权重的斜率越大-并且其权重将减少得更多。

反之亦然,该算法增加了输出“ 7”的输入数据的权重,这使得神经元在下一次获得此图像时会产生更高的值。 同样,具有较大值的输入将增加更多的权重,这将使输出神经元“ 7”下次更加注意这些输入。

然后,该算法应对中间层执行相同的计算:朝着减少网络错误的方向更改每个输入权重-再次使输出“ 7”更接近1,其余使接近0。但是每个中间神经元都有一个连接全天休息10天,这使事情变得更加复杂了两个方面。

首先,每个平均神经元的误差梯度不仅取决于输入值,还取决于下一层的误差梯度。 该算法之所以称为反向传播,是因为网络较晚层的误差梯度沿相反方向传播,并用于计算较早层的梯度。

同样,每个中间神经元都是所有十天假的输入。 因此,训练算法必须计算误差梯度,该误差梯度反映了某个输入权重的变化如何影响所有输出的平均误差。

反向传播是一种爬坡算法:每次通过都会使输出值更接近给定图像的正确值,但只有一点点。 该算法查看的示例越多,越能爬上最高的参数集,从而正确分类最大数量的训练示例。 为了获得高精度,需要成千上万个示例,并且该算法可能需要循环遍历该集合中的每个图像数十次,然后图像的有效性才会停止增长。

Nielsen展示了如何在python中实现这74行。 出乎意料的是,经过这样简单程序训练的网络可以从MNIST数据库中识别出95%以上的手写数字。 通过进一步的改进,简单的两层网络可以识别98%以上的数字。

突破性的AlexNet


您可能会认为,反向传播主题的开发本应在1980年代进行,并在国民议会的基础上在MO中迅速发展-但这并未实现。 在1990年代和2000年代初期,有人从事这项技术的研究,但是直到2010年代初期,人们对国民议会的兴趣才开始兴起。

这可以追溯到ImageNet竞赛 ,它是由IT专家Stanford Fay Fay Lee组织的年度MO竞赛。 每年,为竞争对手提供一整套用于训练的图像,超过一百万张,每张图像都被手动标记超过1000种类别-从“消防车”,“蘑菇”到“猎豹”。 判断参与者的软件是否可以对不在集合中的其他图像进行分类。 一个程序可以给出一些猜测,并且如果前五个猜测中至少有一个与一个人给定的分数相符,则该程序的工作就被认为是成功的。

竞争于2010年开始,而深层的NS在最初的两年中并未发挥重要作用。 最好的团队使用了各种MO技术,并取得了相当平均的结果。 在2010年,车队赢得了28%的错误率。在2011年,错误率为25%。

然后是2012年。 多伦多大学的一个团队竞标 -后来被称为AlexNet,以纪念第一作者Alex Krizhevsky-远远落后于竞争对手。 使用深层NS,团队获得了16%的错误率。 对于最接近的竞争对手,这个数字是26。

文章中描述的用于手写识别的NS具有两层,即25个神经元和近12,000个参数。 AlexNet更大,更复杂:八个训练有素的层,65万个神经元和6000万个参数。

训练如此大的NS需要巨大的处理能力,AlexNet的设计目的是利用现代GPU可用的大规模并行化优势。 研究人员想出了如何将训练网络的工作分成两个GPU,从而使能力加倍。 而且,尽管进行了严格的优化,但网络培训仍在2012年可用的硬件上(在一对配备3 Gb内存的Nvidia GTX 580上)进行了5-6天的培训。

研究AlexNet的结果示例对于了解这一突破的严重性很有用。 这是一张科学论文的图片,其中按类别显示了图像示例和网络的前五个猜测:



AlexNet能够识别出第一张图中的刻度线,尽管它的角落只有一个很小的形式。 该软件不仅可以正确识别豹子,而且还提供其他接近选项-美洲虎,猎豹,雪豹,埃及毛。 AlexNet将角树照片标记为“ agaric”。 网络的第二个版本就是“蘑菇”。

“错误” AlexNet也令人印象深刻。 她在照片上用站在一堆樱桃后面的达尔马提亚狗标记为“达尔马提亚狗”,尽管官方标签是“樱桃”。 AlexNet认识到照片中有某种浆果-前五个选项是“葡萄”和“接骨木浆果”-它根本无法识别樱桃。 在一张马达加斯加狐猴坐在树上的照片中,AlexNet列出了生活在树上的小型哺乳动物的清单。 我认为很多人(包括我自己)都会在此处输入错误的签名。

作品的质量令人印象深刻,并证明了该软件能够识别各种方向和环境下的普通物体。 GNS迅速成为最受欢迎的图像识别技术,从那时起,MO的世界一直没有放弃它。

ImageNet的赞助商写道: “在2012年基于GO的方法获得成功之后,2013年竞赛的大多数参与者都转向了深度卷积神经网络。” 在接下来的几年中,这种趋势一直持续,随后获奖者在AlexNet团队首先应用的基本技术的基础上开展工作。 到2017年,竞争对手使用更深的NS来将错误率严重降低到不到三个。 考虑到任务的复杂性,计算机在某种程度上已经比许多人学会了更好地解决它。


不同年份图像分类中的错误百分比

卷积网络:一个概念


从技术上讲,AlexNet是卷积NS。 在本节中,我将解释卷积神经网络(SNA)的作用,以及为什么该技术对于现代模式识别算法变得至关重要。

先前讨论的用于笔迹识别的简单网络已完全连接:第一层的每个神经元都是第二层的每个神经元的输入。 这种结构在识别28x28像素图像中的数字的简单任务上效果很好。 但这并不能很好地扩展。

在MNIST手写数字数据库中,所有字符均居中。 这极大地简化了学习,因为,例如,七个将始终在顶部和右侧有几个暗像素,而左下角始终是白色。 零几乎总是在中间的白色斑点和边缘的深色像素处。 一个简单且完全连接的网络可以很容易地识别出这种模式。

但是,假设您要创建一个能够识别数字的NS,该数字可以位于较大图像上的任何位置。 完全连接的网络不能很好地完成此任务,因为它没有有效的方法来识别位于图像不同部分的表单中的相似特征。 如果在训练数据集中,大多数七个数字位于左上角,那么您的网络将比图像的任何其他部分在识别左上角的七个数字方面更好。

从理论上讲,可以通过确保您的集合在每个可能的位置上都有许多每个数字的示例来解决此问题。 但是实际上,这将浪费大量资源。 随着图像大小和网络深度的增加,链接的数量以及权重参数的数量将急剧增加。 您将需要更多的训练图像(和计算能力)以达到足够的精度。

当神经网络学会识别位于图像一个位置的形状时,它必须能够应用该知识来识别图像其他部分的相同形状。 SNA为这个问题提供了一个优雅的解决方案。

AI研究人员Jai Teng表示:“就像您将使用模板并将其附加到图像中的所有位置一样。” -您有带有狗的图片的模具,然后首先将其附加到图像的右上角以查看那里是否有狗?如果没有,您将稍微移动模板。因此,对于整个图像。狗的照片在哪里都没关系。模具将与她匹配。您不需要网络的每个部分来了解自己的狗分类。”

想象一下,我们拍摄了一张大图像并将其分成28x28像素的正方形。然后,我们将能够提供一个完全连接的网络的每个正方形,以识别我们之前研究过的笔迹。如果至少在一个正方形中激活了输出“ 7”,则这表示整个图像中有七个。这正是卷积网络所做的。

卷积网络在AlexNet中的工作方式


在卷积网络中,此类“模板”称为特征检测器,而它们研究的区域称为接收场。真实特征检测器的工作范围比边长为28像素的正方形小得多。在AlexNet中,第一卷积层中的特征检测器使用11x11像素大小的接收场。在随后的层中,感受野为3-5个单位宽。

在遍历期间,输入图像的符号检测器会生成一个符号图:二维晶格,在该网格上注意到检测器在图像的不同部分被激活的强度。卷积层通常具有一个以上的检测器,并且每一个都扫描图像以寻找不同的图案。 AlexNet在第一层有96个功能检测器,发出了96个功能卡。



为了更好地理解这一点,请在训练网络后考虑可视化表示96个AlexNet第一层检测器中的每个检测器所研究的模式。有些检测器在寻找水平或垂直线,从亮到暗的过渡,棋图案和许多其他形式。

彩色图像通常表示为像素图,每个像素具有三个数字:红色,绿色和蓝色的值。 AlexNet的第一层采用此视图,并使用96个数字将其转换为视图。该图像中的每个“像素”具有96个值,每个特征检测器一个。

在此示例中,96个值中的第一个值指示图像中的某个点是否与此模式匹配:



第二个值指示某个图像点是否与此类图案重合:



第三个值指示某个图像点是否与此类图案重合:



以此类推,对于第一个AlexNet层中的93个特征检测器。第一层给出了图像的新表示形式,其中每个像素都是96维的矢量(我将在后面解释该表示形式减少4倍)。

这是AlexNet的第一层。然后还有另外四层卷积层,每一层都将前一层的输出作为输入。

如我们所见,第一层揭示了基本模式,例如水平和垂直线,从明到暗的过渡以及曲线。第二级将它们用作识别稍复杂形式的基础。例如,第二层可以具有特征检测器,该特征检测器使用找到曲线的第一层的特征检测器的输出的组合来寻找圆。第三层通过组合第二层的特征来找到更复杂的形状。第四个和第五个发现更复杂的模式。

研究人员Matthew Zeiler和Rob Fergus在2014年发表了出色的著作,提供了非常有用的方法来可视化类似于ImageNet的五层神经网络识别的模式。

在他们工作的下一张幻灯片放映中,除第一张外,每张照片都有两半。在右侧,您将看到已强烈激活特定功能检测器的缩略图示例。它们收集在九个中-每个组对应于它自己的检测器。左侧是一张地图,准确显示了该缩略图中哪些像素最适合匹配。这在第五层上尤其明显,因为有些特征检测器会对狗,徽标,轮子等产生强烈的反应。


第一层-简单的图案和形状;


第二层-小型结构开始出现; 第三层的特征


检测器可以识别更复杂的形状,例如车轮,蜂窝状甚至人的轮廓


第四层可以区分复杂的形式,例如狗的脸或鸟的脚;


第五层可以识别非常复杂的形式;

通过查看图像,您可以看到随后的每一层如何识别日益复杂的模式。第一层识别出与众不同的简单模式。第二个识别纹理和简单形状。通过第三层,可以看到可识别的形式,例如轮子和橘红色的球体(西红柿,瓢虫等)。

在第一层中,感受野的一侧是11,在第二层中,感受野的一侧是3到5。但是请记住,较新的图层可以识别较早的图层生成的特征图,因此它们的每个“像素”代表原始图像的几个像素。因此,与先前的层相比,每一层的接收场都包括第一图像的更大部分。这是后面层的缩略图比以前层的缩略图看起来更复杂的部分原因。

网络的第五层,即最后一层,能够识别范围广泛的元素。例如,查看我从对应于第五层的图像的右上角选择的图像:



右边的九张图片可能不一样。但是,如果您查看左侧的九个热图,您会发现此特征检测器不会聚焦在照片前景中的对象上。取而代之的是,他将注意力集中在每个背景下的草地上!

显然,如果要尝试识别的类别之一是“草”,则草检测器很有用,但对于许多其他类别也可能有用。经过五层卷积后,AlexNet具有三层完全连接,就像我们用于手写识别的网络一样。这些层检查由五个卷积层发出的每个特征图,试图将图像分类为1000种可能的类别之一。

因此,如果背景中有草,则图像中很有可能会出现野生动物。另一方面,如果背景中有草,则不太可能成为房屋中家具的图像。这些和其他第五层特征检测器提供了大量有关照片可能内容的信息。网络的最后一层综合了此信息,以便提供有关事实的猜测,有关图片中通常所描绘的内容。

是什么使卷积层不同:常见的输入权重


我们看到卷积层上的特征检测器显示出令人印象深刻的模式识别,但是到目前为止,我还没有解释卷积网络实际上是如何工作的。

卷积层(SS)由神经元组成。像任何神经元一样,它们在输入端取加权平均值并使用激活函数。使用反向传播技术训练参数。

但是,与以前的NS不同,SS没有完全连接。每个神经元都从上一层神经元的一小部分接收输入。而且,重要的是,卷积网络神经元具有相同的输入权重。

让我们更详细地了解第一个AlexNet SS的第一个神经元。该层的感受野的大小为11x11像素,因此第一个神经元在图像的一个角上研究11x11像素的正方形。该神经元从这121个像素接收输入,每个像素具有三个值-红色,绿色和蓝色。因此,通常,神经元具有363个输入参数。像任何神经元一样,该神经元采用363个参数的加权平均值,并对它们应用激活函数。并且,由于输入参数为363,权重参数也需要363。

第一层的第二神经元与第一层相似。他还研究了11x11像素的平方,但是他的感受野相对于第一个像素移动了四个像素。这两个场有7个像素的重叠,因此网络不会忽略掉落在两个正方形交界处的有趣图案。第二个神经元还采用描述11x11平方的363个参数,将每个参数乘以权重,相加并应用激活函数。

但是,第二个神经元不是使用单独的363个权重集,而是使用与第一个相同的权重。第一个神经元的左上像素使用与第二个神经元的左上像素相同的权重。因此,两个神经元都在寻找相同的模式。它们的接收场仅相对于彼此移动了4个像素。

自然地,有两个以上的神经元:在55x55的晶格中有3025个神经元。它们每个都使用与前两个相同的363个权重集。所有神经元一起形成一个特征检测器,该特征检测器“扫描”图片以查找所需的图案,该图案可以位于任何位置。

请记住,第一AlexNet层具有96个特征检测器。我刚才提到的3025个神经元构成了这96个检测器之一。其余的95个中的每个都是3025个神经元的独立组。每组3025个神经元使用一组通用的363个权重-但是,对于95个组中的每个,它都有自己的权重。

使用与全连接网络相同的反向传播训练HF,但是卷积结构使学习过程更加有效。

“使用卷积确实有帮助-参数可以重复使用,”防御和授权专家Sean Gerrish说。这极大地减少了网络必须学习的输入权重的数量,从而使它可以用更少的训练示例来产生更好的结果。

在图像的一部分上学习可以改善对图像其他部分中相同图案的识别。这使网络可以在更少的训练示例上实现高性能。

人们很快意识到了深度卷积网络的强大功能。


AlexNet的工作在莫斯科地区的学术界引起了轰动,但它的重要性很快在IT行业中得到了理解。 Google对她特别感兴趣。

2013年,Google收购了由作家AlexNet创立的初创公司。 该公司使用这项技术为Google相册添加了新的照片搜索功能。 Google的Chuck Rosenberg写道:“我们接受了先进的研究,并在六个多月后将其投入运营。”

同时,在2013年,描述了Google如何使用GSS识别Google街景照片中的地址。 作者写道:“我们的系统帮助我们从这些图像中提取了近1亿个物理地址。”

研究人员发现,NS的有效性随着深度的增加而增长。 Google Street View团队写道:“我们发现,这种方法的有效性随着SNA的深入而提高,而我们所训练的最深的架构显示出了最好的结果。” “我们的实验表明,更深的体系结构可以产生更高的精度,但效率会下降。”

因此,在AlexNet之后,网络开始变得更深。 Google团队在2014年的竞赛中出价-距AlexNet在2012年获胜仅两年。它也是基于深层SNA,但Goolge使用了更深的22层网络来实现错误率达到6.7%-与AlexNet的16%相比,这是一个重大改进。

但是,与此同时,更深层次的网络只有在拥有更多训练数据集的情况下才能更好地工作。 因此,Gerrish说,ImageNet数据集和竞争对SNA的成功起了重要作用。 回想一下在ImageNet竞赛中,为参赛者提供了一百万张图像,并要求他们将它们分类为1,000个类别。

“如果您有一百万张要训练的图像,那么每个班级都包含1,000张图像,” Gerrish说。 他说,如果没有这么大的数据集,“您将有太多选择来训练网络。”

近年来,专家越来越专注于收集大量数据以训练更深,更准确的网络。 这就是为什么开发机器人汽车的公司专注于在公共道路上行驶的原因-这些行程的图像和视频被发送到总部,并用于培训公司的NS。

计算深度学习热潮


发现更深层的网络和更大的数据集可以提高NS性能的事实引起了对越来越大的计算能力的无限满足。 AlexNet成功的主要要素之一是在NS训练中使用矩阵训练的想法,可以在可很好并行化的GPU上有效地执行矩阵训练。

MO研究人员Jai Ten说:“ NS的并行性很好。” 显卡-为视频游戏提供巨大的并行处理能力-已证明对NS有用。

十说:“ GPU工作的核心部分,即非常快的矩阵乘法,被证明是国民议会工作的核心部分。”

所有这一切对于GPU,Nvidia和AMD的领先制造商都是成功的。 两家公司都开发了专门针对MO应用程序需求而量身定制的新芯片,现在AI应用程序已占据了这两家公司GPU销售的很大一部分。

2016年,Google宣布创建一种专用于Tensor处理单元(TPU)的特殊芯片,旨在在国民议会上运作。 一位公司代表去年写道: “尽管Google早在2006年就考虑了创建专用集成电路(ASIC)的可能性,但这种情况在2013年就变得迫在眉睫。” “那时我们意识到国民议会对计算能力的快速增长的要求可能会要求我们将现有的数据中心数量增加一倍。”

最初,只有Google自己的服务可以访问TPU,但后来公司允许所有人通过云计算平台使用该技术。

当然,谷歌并不是唯一从事AI芯片开发的公司。 仅举几个例子:在最新版本的iPhone芯片中, 有一个针对神经网络操作进行了优化 “神经核”。 英特尔正在开发自己的针对GO优化的芯片产品线。 特斯拉最近宣布拒绝Nvidia的芯片,转而使用自己的NS芯片。 也有传言称亚马逊正在开发其AI芯片。

为什么很难理解深度神经网络


我解释了神经网络如何工作,但没有解释为什么它们如此好。 目前尚不清楚大量的矩阵计算如何使计算机系统区分美洲豹和印度豹,以及接骨木和醋栗。

国民议会最杰出的素质也许就是他们没有。 卷积可以让NS理解连字号-他们可以判断图像右上角的图像是否类似于另一幅图像左上角的图像。

但是与此同时,SNA并不了解几何。 如果将两张图片旋转45度或加倍,它们将无法识别两张图片的相似性。 SNA不会尝试了解对象的三维结构,也无法考虑不同的照明条件。

但是同时,NS可以识别从正面和侧面拍摄的狗的照片,并且狗只占图像的一小部分还是大图像都没有关系。 他们是如何做到的? 事实证明,如果有足够的数据,则采用直接枚举的统计方法可以应付任务。 SNA并非设计为可以“想象”特定图像从不同角度或在不同条件下的外观,但是具有足够数量的标记示例,它可以通过简单的重复学习图像的所有可能变化。

有证据表明人们的视觉系统以类似的方式工作。 看几张照片-首先仔细研究第一张,然后打开第二张。


第一张照片

第二张照片



图像的创建者拍摄了某人的照片,然后将他的眼睛和嘴巴上下颠倒了。 当您上下颠倒看照片时,它看起来是相对正常的,因为人类视觉系统习惯于在此位置看到眼睛和嘴巴。 但是,如果以正确的方向观看图片,您会立即看到脸部异常扭曲。

这表明人类视觉系统基于与NS相同的原始模式识别技术。 如果我们观察在一个方向上几乎总是可见的东西(人眼),我们可以在其正常方向上更好地识别它。

NS使用所有可用的上下文很好地识别图像。 例如,汽车通常在道路上行驶。 衣服通常穿在女人身上或挂在壁橱里。 飞机通常是在空中射击或在跑道上统治。 没有人专门教过NS这些相关性,但是有了足够数量的带有标记的示例,网络本身就可以学习它们。

2015年,来自Google的研究人员试图更好地理解NS,“让它们倒退”。 他们使用训练有素的NS来更改图片,而不是使用图片来训练NS。 例如,他们从包含随机噪声的图像开始,然后逐渐对其进行更改,以使其强烈激活NS的输出神经元之一-实际上,他们要求NS“画出”一个被教导识别的类别之一。 在一个有趣的情况下,他们强迫NS生成激活NS的图片,并训练它们来识别哑铃。



谷歌研究人员写道:“当然,这里有哑铃,但是没有一个肌肉发达的肌肉举起哑铃,似乎没有一个哑铃的完整图像。”

乍一看,它看起来很奇怪,但实际上与人们所做的并没有太大不同。 如果在图片中看到一个小的或模糊的物体,我们会在其周围寻找线索以了解在那里可能发生的情况。 人们显然是通过对周围世界的复杂概念理解来谈论图片的。 但是最后,STS能够很好地识别图像,因为它们充分利用了图像上描述的整个上下文,并且与人们的操作方式并没有太大不同。

Source: https://habr.com/ru/post/zh-CN455331/


All Articles