AI人工智能与数学之美

【引用】卷积神经网络的运作原理

2020-05-05  本文已影响0人  KangSmit的算法那些事儿

引用链接:原文链接

在十分之九的情况下,当您听说深度学习突破了新的技术障碍时,就会涉及卷积神经网络。也称为CNN或ConvNet,它们是深度神经网络领域的主力军。他们学会了在某些情况下甚至比人类更好地将图像分类。如果有一种方法可以证明炒作的合理性,那就是CNN。

它们特别酷的地方在于它们易于理解,至少当您将它们分解为基本部分时。我会引导您完成。有一个视频详细介绍了这些图像。如果您在任何时候迷失了方向,只需单击图像,您将跳到视频的该部分。

X和O

image

为了帮助我们指导卷积神经网络的发展,我们将继续使用一个非常简化的示例:确定图像是X还是O。这个示例足够丰富,可以说明CNN背后的原理,但仍然足够简单避免陷入不必要的细节。我们的CNN有一份工作。每次我们给它一张照片时,它都必须确定它是X还是O。它假定总有一个或另一个。

[图片上传失败...(image-2425bd-1588660791312)]

解决此问题的幼稚方法是保存X和O的图像,并将每个新图像与我们的示例进行比较,看哪个更匹配。使这项任务棘手的是计算机是极其文字的。对于计算机,图像看起来像是二维像素阵列(认为是巨型棋盘),每个位置都有一个数字。在我们的示例中,像素值1为白色,而-1为黑色。比较两个图像时,如果任何像素值不匹配,则这些图像至少与计算机不匹配。理想情况下,即使它们移动,收缩,旋转或变形,我们也希望能够看到它们。这是CNN出现的地方。

特征

[图片上传失败...(image-b8ee9d-1588660791312)]

CNN逐段比较图像。它寻找的片段称为功能。通过在两幅图像中大致相同的位置找到粗糙的特征匹配,CNN在看到相似性方面要比全图像匹配方案好得多。

[图片上传失败...(image-48778a-1588660791312)]

每个功能都像一个微型图像-二维值的小型数组。功能与图像的常见方面匹配。对于X图像,由对角线和交叉组成的特征捕获了大多数X的所有重要特征。这些功能可能会与X的任何图像的手臂和中心相匹配。

卷积

[图片上传失败...(image-d9fff-1588660791312)]

当以新图像呈现时,CNN并不确切知道这些功能将在哪里匹配,因此它会在任何可能的位置到处尝试它们。在计算与整个图像的特征的匹配时,我们将其设为过滤器。我们用于执行此操作的数学称为卷积,卷积神经网络即以此命名。

卷积背后的数学原理不会使六年级学生感到不舒服。要计算特征与图像补丁的匹配度,只需将特征中的每个像素乘以图像中相应像素的值即可。然后将答案相加并除以特征中的像素总数。如果两个像素均为白色(值为1),则1 * 1 =1。如果两个像素均为黑色,则(-1)*(-1)=1。无论哪种方式,每个匹配的像素均得出1。不匹配为-1。如果特征中的所有像素都匹配,则将它们相加并除以像素总数得到1。类似地,如果特征中的所有像素均不匹配图像块,则答案为-1。

image

为了完成卷积,我们重复此过程,将功能与每个可能的图像补丁对齐。我们可以从每个卷积中得到答案,并根据每个补丁在图像中的位置,从中得出一个新的二维数组。此匹配图也是我们原始图像的过滤后版本。这是在特征中找到图像的位置的地图。接近1的值表示匹配强,接近-1的值表示匹配特征的负片,而接近零的值表示不匹配。

[图片上传失败...(image-8aa6aa-1588660791312)]

下一步是对其他每个功能重复整个卷积过程。结果是一组过滤的图像,每个过滤器一个。将整个卷积运算集合视为一个处理步骤很方便。在CNN中,这被称为卷积层,这暗示着它将很快添加其他层的事实。

可以很容易地看到CNN如何获得其作为计算猪的声誉。尽管我们可以在餐巾纸的背面画出CNN,但是加法,乘法和除法的数量却可以快速加起来。用数学语言来说,它们与图像中的像素数,每个要素中的像素数以及要素数呈线性比例关系。有这么多因素,很容易使这个问题扩大数百万倍而又不冒汗。难怪微芯片制造商现在正在制造专用芯片以努力满足CNN的需求。

汇集

[图片上传失败...(image-8a6380-1588660791312)]

CNN使用的另一个强大工具称为池化。合并是一种在保留最重要信息的同时拍摄大图像并缩小图像的方法。合并背后的数学最多是二年级的。它包括在图像上跨过一个小窗口,并在每一步中从该窗口获取最大值。在实践中,一个侧面2或3像素的窗口以及2像素的步长效果很好。

合并后,图像的像素约为开始时的四分之一。因为它保留了每个窗口的最大值,所以它保留了窗口内每个要素的最佳拟合。这意味着只要功能部件适合窗口内的某个位置,它就不太在乎功能部件的正确位置。这样的结果是CNN可以查找图像中是否存在特征,而不必担心其位置。这有助于解决计算机超文学的问题。

image

池化层只是对图像或图像集合执行池化的操作。输出将具有相同数量的图像,但每个图像将具有较少的像素。这也有助于管理计算负荷。将8百万像素的图像减小到2百万像素的图像,使下游的一切工作变得更加轻松。

整流线性单位

[图片上传失败...(image-d29279-1588660791312)]

整流线性单元或ReLU是该过程中一个小而重要的角色。它的数学运算也非常简单-只要出现负数,就将其换成0。这可以使CNN保持学习值不会卡在0附近或爆炸成无穷大,从而在数学上保持健康。这是CNN的车轴润滑脂-并不是特别迷人,但是如果没有它,它们的作用就不会太远。

image

ReLU层的输出大小与放入其中的大小相同,只是消除了所有负值。

深度学习

image

您可能已经注意到,每层的输入(二维数组)看起来与输出(二维数组)非常相似。因此,我们可以像乐高积木一样堆叠它们。原始图像经过过滤,校正和合并,以创建一组缩小的,经过特征过滤的图像。这些可以被过滤并一次又一次地缩小。每次,功能都会变得更大,更复杂,并且图像也会变得更加紧凑。这使下层代表图像的简单方面,例如边缘和亮点。较高的图层可以代表图像的日益复杂的方面,例如形状和图案。这些往往易于识别。例如,在经过人脸训练的CNN中,最高层代表的图案显然很像脸。

[图片上传失败...(image-3e7500-1588660791312)]

全连接层

image

CNN的箭袋中还有一根箭。完全连接的图层将获取经过过滤的高级图像,并将其转换为投票。在我们的案例中,我们仅需在X和O这两个类别之间做出决定。完全连接的层是传统神经网络的主要构建块。不是将输入视为二维数组,而是将它们视为单个列表,并且将所有对象都相同。每个值都会对当前图像是X还是O拥有自己的投票权。但是,此过程并不完全民主。在了解图像何时为X时,有些值比其他值好得多,而在了解图像何时为O时,有些值尤其擅长。这些值比其他值大。这些投票表示为每个值和每个类别之间的权重或连接强度。

当新图像呈现给CNN时,它会渗透穿过较低的层,直到最终到达完全连接的层。然后举行选举。得票最多的答案将获胜,并被宣布为输入类别。

image

完全连接的图层(如其余图层)可以堆叠,因为它们的输出(投票列表)看起来与输入(值列表)非常相似。实际上,通常将几个完全连接的层堆叠在一起,每个中间层对幻像“隐藏”类别进行投票。实际上,每增加一层,网络就可以学习功能的越来越复杂的组合,从而有助于做出更好的决策。

反向传播

image

我们的故事写得很好,但仍然有一个巨大的漏洞-要素从何而来?以及如何在完全连接的层中找到权重?如果必须手动选择所有这些内容,那么CNN的受欢迎程度将大大低于它们。幸运的是,一些称为反向传播的机器学习魔术对我们有用。

为了利用反向传播,我们需要一个已经知道答案的图像集合。这意味着有些耐心的灵魂翻阅了数千张图像,并为其分配了X或O标签。我们将这些图像与未经训练的CNN一起使用,这意味着每个要素的每个像素和每个完全连接层中的每个权重都设置为随机值。然后,我们开始逐张地馈送图像。

CNN处理的每个图像都会产生一个投票。投票中的错误程度(错误)告诉我们,我们的功能和权重有多好。然后可以调整特征和权重以减少误差。将每个值调整得更高一点和更低一点,并且每次都计算新的误差。无论哪种调整都会减少误差。在对每个卷积层中的每个特征像素以及每个完全连接层中的每个权重进行此操作之后,新的权重给出的答案对该图像的效果会更好一些。然后,用该组标记图像中的每个后续图像重复此操作。单个图像中出现的怪癖很快就会被遗忘,但是许多图像中出现的模式却被烘焙到特征和连接权重中。如果您有足够的标签图像,

显而易见,反向传播是另一个昂贵的计算步骤,并且是专用计算硬件的另一个动机。

超参数

不幸的是,并非能够以如此简单的方式来学习CNN的每个方面。CNN设计人员必须做出的决策仍然很长。

除了这些,还需要制定更高层次的体系结构决策:每层包括多少层?以什么顺序?一些深度神经网络可以具有一千多个层,这提供了很多可能性。

具有如此众多的组合和排列,仅对一小部分可能的CNN配置进行了测试。CNN的设计往往是由积累的社区知识来驱动的,偶尔的偏差显示出令人惊讶的性能提升。尽管我们已经介绍了香草CNN的基本组成部分,但还尝试了许多其他有效的调整措施,例如新的图层类型以及将图层彼此连接的更复杂方法。

超越影像

[图片上传失败...(image-fdc657-1588660791311)]

虽然我们的X和O示例涉及图像,但CNN也可以用于对其他类型的数据进行分类。诀窍是,无论您以何种数据类型开头,都对其进行转换以使其看起来像图像。例如,可以将音频信号切成短时间块,然后将每个块分解为低音,中音,高音或更精细的频带。这可以表示为二维数组,其中每一列是一个时间块,每一行是一个频带。这张假照片中彼此靠近的“像素”密切相关。CNN在此方面工作良好。研究人员已经变得很有创造力。他们改编了用于自然语言处理的文本数据,甚至改编了用于药物发现的化学数据。

[图片上传失败...(image-ec8c0d-1588660791311)]

不适合这种格式的数据示例是客户数据,其中表中的每一行代表客户,每列代表有关客户的信息,例如姓名,地址,电子邮件,购买和浏览历史记录。在这种情况下,行和列的位置并不重要。可以重新排列行,可以重新排列列,而不会丢失数据的任何用处。相比之下,重新排列图像的行和列会使它在很大程度上无用。

经验法则:如果在相互交换任何列之后数据同样有用,那么您将无法使用卷积神经网络。

但是,如果您可以使问题看起来像在图像中找到图案,那么CNN可能正是您所需要的。

上一篇下一篇

猜你喜欢

热点阅读