我们已经通过可视化的方式来介绍卷积的概念,似乎大家都看懂了,然而卷积并不是我们的终点,所以,我们尝试往前一步走,也就是卷积神经网络,他是在卷积原理的基础上构建起来的神经网络框架,具备实现深度学习的能力。卷积神经网络具有跨时代意义,而且人们已经开展了很多具体工作,实现了令人惊叹的成就,特别计算机视觉领域,学好卷积神经网络为后面的 Transformer 做好铺垫。
建议复习一下卷积的概念。
计算机视觉领域的目标是让机器能够像人类一样观察世界,以类似的方式感知世界,甚至将知识用于图像和视频识别、图像分析和分类、媒体再创造、推荐系统、自然语言处理等多种任务。随着时间的推移,深度学习技术在计算机视觉领域的发展也日臻完善,这主要得归功于一个简单(相对)的算法--卷积神经网络。
1. 简介
对手写数字进行分类的 CNN 示例
卷积神经网络(ConvNet/CNN) 是一种深度学习算法,它可以接收输入图像,为图像中的不同对象分配重要性(可学习的权重和偏差),并能够将它们区分开来。与其他分类算法相比,ConvNet 所需的预处理要少得多。在原始方法中,滤波器(核)是手工设计的,而 ConvNet 则可以通过足够的训练来学习这些滤波器特征。
ConvNet 的结构类似于人脑中神经元的连接模式,其灵感来自视觉皮层的组织结构。单个神经元只对视野中被称为 "感受野"(Receptive Field)的有限区域内的刺激做出反应。这些区域重叠在一起,覆盖了整个视觉区域。
2. 为什么选择 ConvNets 而不是前馈神经网络?
将
图像矩阵扁平化为
向量
图像不过是像素值矩阵,那为什么不直接将图像扁平化(例如将 3x3 图像矩阵转化为 9x1 向量),然后将其输入多层感知器进行分类呢?
如果是基本的二值图像,该方法在进行类别预测时可能会显示出相对平庸的预测精度,但如果是具有像素依赖性的复杂图像,则准确率非常低。
ConvNet 能够通过应用相关滤波器,能够捕捉图像中的空间和时间依赖关系。由于参与参数数量的减少和权重的可复用性,该架构能更好地拟合图像数据集。换句话说,网络经过训练后可以更好地理解图像的复杂性。
3. 输入图像
4x4x3 RGB 图像
在图中,我们看到的 RGB 图像是由红、绿、蓝三个色彩平面分隔而成的。图像有许多这样的色彩空间--灰度、RGB、HSV、CMYK 等。
可以想象,一旦图像的尺寸达到 8K(7680×4320),计算将变得多么密集。ConvNet 的作用是将图像缩小到更易于处理的形式,同时不丢失对预测至关重要的特征。当我们要设计一个不仅能很好地学习特征,还能扩展到海量数据集的架构时,这种扩展是非常重要。
4. 卷积层 - 内核
用 3x3x1 内核卷积 5x5x1 图像,得到 3x3x1 卷积特征
图像尺寸 = 5(高)x 5(宽)x 1(通道数,如 RGB)
在上述演示中,绿色部分类似于我们的5x5x1 输入图像 I。卷积层第一部分中参与卷积操作的元素称为核/滤波器 K,用黄色表示。我们选择 **K 作为 3x3x1 矩阵。
Kernel/Filter, K =
1 0 1
0 1 0
1 0 1
选择 步长 = 1 的原因,内核会移动 9 次,每次都会在 K 和内核所悬停的图像部分 P 之间执行一次 elementwise 乘法运算(Hadamard Product)。
内核的移动
滤波器以一定的步长值向右移动,直到解析完整的宽度。接着,它会以相同的步长值跳到图像的起点(左侧),并重复这一过程,直到遍历整个图像。
使用 3x3x3 内核对 MxNx3 图像矩阵进行卷积运算
对于多通道图像(如 RGB),核的深度与输入图像的深度相同。在 Kn 和 In 栈之间执行矩阵乘法( ),并将所有结果与偏差相加,得到扁的单深度通道卷积特征输出。
步长 = 2 的卷积运算
卷积操作的目的是从输入图像中提取高层特征,如边缘。ConvNets 不必局限于只有一个卷积层。传统上,第一个卷积层负责捕捉低级特征,如边缘、颜色、梯度方向等。随着层数的增加,架构也会适应高级特征,从而使我们的网络对数据集中的图像有一个全面的了解,这与我们的理解方式类似。
该操作有两种结果,一种是卷积特征的维度与输入特征相比有所降低,另一种是维度有所提高或保持不变。前者通过应用Valid Padding来实现,后者通过应用 Same Padding来实现。
相同的填充:用 0 填充 5x5x1 图像,创建 6x6x1 图像
当我们将 5x5x1 图像增强为 6x6x1 图像,然后在其上应用 3x3x1 内核时,我们会发现卷积矩阵的尺寸为 5x5x1。 因此,我们将其命名为 相同填充Same Padding。
另一方面,如果我们在不使用填充的情况下执行同样的操作,我们会得到一个矩阵,其尺寸相当于内核(3x3x1)本身的尺寸-有效填充 Valid Padding 。
5. 池化层
对 5x5 卷积特征进行 3x3 汇集
与卷积层类似,池化层负责缩小卷积特征的空间尺寸。这样做的目的是通过降维降低处理数据所需的计算能力。此外,它还有助于提取旋转和位置不变的主要特征,从而保持模型的有效训练过程。
池化有两种类型:最大池化和平均池化。最大池化会从核覆盖的图像部分返回最大值。另一方面,平均池化会从内核覆盖的图像部分返回所有值的平均值。
最大池化还具有噪声抑制的功能。它可以完全摒弃噪声激活,还能在降维的同时进行去噪处理。另一方面,平均池化只是将降维作为一种噪声抑制机制。因此,我们可以说最大池化比平均池化要好得多。
卷积层和池化层共同构成卷积神经网络的第 层。根据图像的复杂程度,可以增加这种层的数量,以进一步捕捉低层次细节,但代价是需要更多的计算能力。
经过上述过程,我们已经成功地让模型理解了特征。接下来,我们将对最终输出进行扁平化处理,并将其送入常规神经网络进行分类。
6. 分类 - 全连接层(FC 层)
添加全连接层是(通常)学习卷积层输出所代表的高级特征的非线性组合的一种方便快捷方法。全连接层正在该空间中学习一个可能的非线性函数。
现在,我们已经将输入图像转换为适合多层感知器的形式,我们将把图像扁平化为列向量。扁平化后的输出被送入前馈神经网络,并在每次迭代训练中应用反向传播。在一系列的迭代过程中,该模型能够区分图像中的主要特征和某些低级特征,并使用Softmax技术对其进行分类。
目前有多种 CNN 架构,它们是构建算法的关键,在可预见的未来,这些算法将为整个人工智能提供动力。下面列出了其中一些:
1.LeNet 2.AlexNet 3.VGGNet 4.GoogLeNet 5.ResNet 6.ZFNet
CNN 识别手写数字(MNIST),准确率: 98.99% 。
感谢阅读,欢迎点赞关注。

