卷积神经网络 (CNN)

卷积神经网络 (CNN)

卷积神经网络 (CNN) 起源于对大脑视觉皮层的研究,自 1980 年代以来一直用于图像识别。最近,由于计算能力的提高和训练数据的可用性。 CNN 为自动驾驶汽车、图像搜索服务等提供动力。 CNN 不仅限于视觉感知,还可以用于语音识别和自然语言处理。

这篇博文包含:

· CNN的起源

· CNNs的架构

· 如何在 TensorFlow 2 和 Keras 中实现 CNN。

· 著名的 CNN 架构

视觉皮层的架构

David H. Hubel 和 Torsten Wiesel 在 1950 年代对猫进行的一系列实验,对视觉皮层的结构提供了重要见解。他们表明,视觉皮层内的许多神经元具有小的局部感受野,即它们仅对位于视野有限区域内的视觉刺激作出反应。感受野可能会重叠,并将它们拼凑在一起,形成整个视野。

还表明,一些神经元只对水平线的图像有反应,而另一些神经元则专门对不同方向的线作出反应。具有相同感受野的两个神经元可能对不同方向的线做出反应。然而,一些神经元具有更大的感受野,并对更复杂的模式做出反应,这些模式是低级模式的组合。这导致了更高层次的神经元基于相邻的低层次神经元的输出的想法,如图所示 图1 .这种架构可以检测视野中任何区域的复杂模式。

图 1 - 模式识别层

图片来源(Geron,2019)

一个重要的里程碑发生在 1998 年,当时 Yann LeCun 发表了著名的 LeNet-5 架构。除了使用全连接层和 sigmoid 激活函数外,LeNet-5 还引入了两个新组件, 卷积层池化层 .

卷积层

CNN 的关键组件是 卷积层 .第一个卷积层中的每个神经元都没有连接到输入图像中的每个像素。相反,神经元连接到其感受野中的像素。第二个卷积层中的每个神经元只连接到位于第一层感受野内的神经元,如图所示 图 2 .

在这种架构中,第一个卷积层从输入中识别低级特征,并将它们传递给第二个卷积层,第二个卷积层将它们组合成更高级别的特征。该过程通过网络中的每个卷积层继续进行。

CCN 在图像识别方面非常有效,因为层次结构是现实世界图像的共同特征。具有完全连接(密集)层的神经网络可以在小图像上工作,但由于参数的数量,在大图像上会崩溃。 100 x 100 像素的图像包含 10,000 个像素。如果网络的第一层仅包含 1000 个神经元,则意味着总共有 1000 万个连接。 CNN 通过使用部分连接的层克服了这个问题。

图 2 - 卷积层

图片来源(Geron,2019)

在 CNN 中,每一层都以 2D 表示。给定层中的神经元,位于行中 一世 , 柱子 j 与行中的神经元相连 一世我+fh-1 和列 jj+fw-1 上一层的。在哪里 调频固件 是感受野的高度和宽度。

为了让一个层具有与前一层相同的高度和宽度,通常在输入周围添加零。这被称为 零填充, 如图所示 图 3 .

图 3 - 零填充

图片来源(Geron,2019

一个大的输入层可以通过间隔感受野连接到一个较小的卷积层。从一个感受野到下一个感受野的转变称为 大步 并显着降低模型的复杂性。在图 X 中,稍后的 5 x 7 输入(加上零填充)连接到 3 x 4 层,使用 3 x 3 感受野,步长为 2。

笔记: 在此示例中,两个方向的步幅相同,但这不是必需的。

位于上层第 i 行第 j 列的神经元从行连接到前一层神经元的输出 ix sh + fh-1 和列 jx sw 到 jx sw + fw-1。其中 sh 和 sw 是垂直和水平步幅,如图所示 图 4 .

图 4 — 步幅

图片来源(Geron,2019)

过滤器

神经元的权重可以表示为感受野大小的小图像。 图 5 显示了两组可能的权重(称为过滤器或卷积核)。第一个表示为中间有一条白线的黑色方块。它是一个 7 x 7 的 0 矩阵,除了中间一列全是 1。使用这些权重的神经元将忽略其感受野中除了中央垂直线之外的所有内容,因为所有其他输入都将乘以 0。第二个过滤器是一个黑色正方形,中间有一条水平白线,使用这些权重的神经元将忽略除了中央水平线之外,它们的感受野中的所有东西。

如果一层中的所有神经元都使用相同的垂直线滤波器和相同的偏置项。在底部的图像中喂食 图 5 如在输入图像中将输出左上角的图像。在这个输出图像中,垂直的白线被增强了,其余的被模糊了。如果所有神经元使用相同的水平线滤波器,右上角的图像显示了输出。一个充满神经元的层使用相同的过滤器输出一个特征图,该图突出显示图像中激活该特征最多的区域。

过滤器不必手动定义。在训练过程中,卷积层将自动学习对其任务最有用的过滤器,并且上面的层将学习将它们组合成更复杂的模式。

图 5 - 垂直和水平线特征图

图片来源(Geron,2019

堆叠多个特征图

为简单起见,每个卷积层都表示为 2D 层。实际上,卷积层使用多个过滤器,每个过滤器输出一个特征图。卷积层更准确的表示是 3D(如图所示) 图 6 )。 3D 之后的每个特征图中每个像素都有一个神经元,给定特征图中的所有神经元共享相同的参数(权重和偏差),不同特征图的神经元使用不同的参数。神经元的感受野如前所述,但延伸到前一层的特征图。卷积层同时将多个可训练滤波器应用于其输入,并且可以检测多个

由于特征图中的所有神经元共享相同的参数,因此模型中的参数数量大大减少。一旦 CNN 学会识别一个位置的模式,它就可以在任何其他位置识别它。相比之下,一旦深度神经网络学会在某个位置识别模式,它就只能在该特定位置识别它。

输入图像也由多个子层组成,每个颜色通道一个。通常有三种:红色、绿色和蓝色 (RGB)。灰度图像只有一个颜色通道。某些图像(例如捕获额外光频率(例如红外线)的卫星图像)可能有更多。

图 6 - 多个特征图

图片来源(Geron,2019)

池化层

池化层对图像进行二次采样(缩小)以减少计算负载、内存使用和参数数量,从而最大限度地降低过度拟合的风险。类似地,对于卷积层,池化后的每个神经元都连接到前一层中选定数量的神经元的输出,这些神经元由矩形感受野定义。

池化神经元没有权重,它只是使用聚合函数(例如最大值或平均值)聚合输入。 图 7 说明了一个最大池化层,使用 2x2 池化内核,步幅为 2,无填充。稍后仅将每个感受野的最大输入传输到网络,所有其他输入都被丢弃。

由于步幅为 2,因此输出图像是输入图像宽度和高度的一半(向下舍入,因为没有使用填充)。

图 7 — 稍后使用 2x2 池化内核进行最大池化。

图片来源(Geron,2019)

除了减少参数数量和计算负载之外,最大池化层还增加了小平移的不变性。如果我们假设暗像素比亮像素具有更高的值,并考虑三个图像通过最大池化层(A,B,C),如图所示 图 8 .图像 B 和 C 与 A 相同,但向右移动了一个和两个像素。 A 和 B 的最大池输出相同,显示平移不变性。图像 C 向右移动一个像素,具有 50% 的不变性。

通过在 CNN 中每隔几层插入一个最大池化层,就有可能在更大的范围内获得某种程度的平移不变性。此外,最大池化提供了少量的旋转不变性和轻微的尺度不变性。这种不变性(即使它是有限的)在预测不应该依赖于这些细节的情况下很有用,例如在分类任务中。

图 8 - 最大池不变性

图片来源(Geron,2019

最大池化有缺点。步幅为 2 的非常小的内核 (2 x 2) 将产生长度和宽度小两倍的输出,从而产生原始大小的四分之一的区域。这是极具破坏性的,会丢失 75% 的输入值。不变性也不总是可取的,例如在语义分割中,任务是根据每个像素所属的对象对其进行分类。

CNN 架构

CNN 通常堆叠几个卷积层,每个卷积层都有 ReLU 激活,然后是池化,然后是更多的卷积层,另一个池化层等等。随着图像在网络中的传播,它变得越来越小。由于卷积层,它也变得越来越深(即,具有更多特征图)。在堆栈的末尾,添加了一个规则的前馈网络,其中包含一些密集层(使用 ReLU 激活)和一个最终输出层。一个典型的 CNN 架构如图所示 图 9 .

图 9——典型的 CNN 架构

图片来源(Geron,2019

一个常见的错误是使用过大的内核。最好将两个卷积层与 3x3 内核堆叠起来,而不是稍后将单个卷积层与 5 x 5 内核堆叠在一起。它们将使用更少的参数并需要更少的计算。一个例外是第一个卷积层通常可以具有大内核(例如 5 x 5)和 2 或更大的步幅。这将减少图像的空间维度,而不会丢失太多信息。

一个简单的 CNN 可以在 TensorFlow 中实现为:

数据增强

数据增强是一种正则化技术,旨在通过生成每个训练图像的许多真实变体来人为地增加训练集的大小来减少过度拟合。增强数据应该尽可能真实,人类不应该能够判断给定图像是否被增强。

增强示例(显示在 图 10 ) 包括将训练集中的每张图片移动、旋转和调整大小,并将结果图片添加到训练集中。这使得模型更加健壮,并且能够容忍测试图像的大小、位置和方向的变化。

为了使模型更能适应不同的光照条件,可以生成具有各种对比度的图像。不包含文本的图像也可以水平翻转。结合这些转换可以大大增加训练集的大小。

图 10 - 数据增强示例

图片来源(Geron,2019)

参考

Geron, A. (2019) 使用 Scikit-Learn、Keras 和 TensorFlow 进行机器学习:构建智能系统的概念、工具和技术 . Sebastopol:O'Reilly Media,Incorporated。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/33130/25321308

posted @ 2022-09-13 08:26  哈哈哈来了啊啊啊  阅读(192)  评论(0编辑  收藏  举报