卷积神经网络1-从全连接层到卷积层:理解卷积神经网络的基本原理

610 阅读6分钟

1. 全连接层的局限性

在深度学习的世界中,我们通常从全连接层(Fully Connected Layer,简称FC层)开始讨论。全连接层适用于处理表格数据,其中每行表示一个样本,每列代表一个特征。在处理这些数据时,网络尝试从中发现潜在的规律。对全连接层来说,每个输入特征都会与每个神经元连接,意味着网络可以学习特征之间的复杂关系。

然而,针对高维感知数据(如图像)的处理,全连接层的局限性变得非常明显。假设你正在使用一百万像素的图像进行猫狗分类,每个像素都要作为一个特征输入到网络中。这将导致网络参数数量极其庞大,几乎不可能在没有大量计算资源和数据的情况下进行有效训练。

卷积神经网络(CNN) 通过巧妙地利用图像的结构特征,提供了一种更高效的解决方案。卷积神经网络能够通过减少参数数量,同时保留图像中的重要信息,从而解决全连接层在图像处理中的问题。

2. 不变性与局部性的概念

2.1 平移不变性

假设我们要从一张图像中找到某个物体。直观地说,物体在图像中的位置不应该影响我们是否能够识别它。例如,在“沃尔多在哪里”的游戏中,无论沃尔多出现在哪个位置,我们都能够通过他的装束来识别他。这个特性在计算机视觉中被称为平移不变性,即无论目标物体出现在图像的哪个位置,神经网络的反应应该是一样的。

卷积神经网络正是基于这一原则,通过扫描整个图像并对每个局部区域进行相同的处理,来实现平移不变性。这使得网络可以学习到不依赖于物体位置的特征,从而有效地进行物体识别。

2.2 局部性

局部性(Locality) 则意味着神经网络应该集中处理图像的局部区域,而不是试图一次性分析整个图像。通过仅关注图像的局部区域,卷积神经网络能够更高效地捕捉图像的局部特征(例如边缘、角点、纹理等)。

例如,当我们用卷积核扫描图像时,网络并不关心像素间远距离的关系,而是仅关注邻近像素的关系。这种局部处理方式降低了网络的复杂性,同时保留了图像中的有用信息。

3. 多层感知机的限制

对于一张二维图像,多层感知机将其展平为一维向量,然后通过全连接层进行处理。这种做法虽然在某些任务中有效,但在图像处理上却显得力不从心。

  • 空间结构:图像本身具有明确的空间结构,像素之间存在着相对位置的关系。将图像展平成一维向量会丧失这些空间信息,导致无法有效学习到图像的局部特征。

  • 参数数量庞大:对于大规模图像,使用全连接层的参数数量将变得极其庞大,导致训练难度大大增加。

为了解决这些问题,卷积神经网络提出了利用局部连接的方式,通过卷积核来提取局部特征,从而大幅减少参数数量。

4. 卷积层的引入

4.1 卷积的数学定义

我们知道,卷积在数学中是一种操作,用来结合两个函数或信号,计算它们的重叠部分。在深度学习中,卷积被用来处理图像,帮助计算机从图像中提取有用的特征。那卷积到底是怎么一回事呢?我们通过一个简单的例子来理解。

4.1.1 卷积是什么?

想象一下,你有一张照片,照片上有很多的细节,比如边缘、纹理、颜色等等。卷积操作就是一种扫描过程,它像一个“探测器”一样,在图像上滑动,在每个位置检查图像的局部区域,并计算它们的“加权和”。这个加权和的结果就构成了新的特征图。

我们可以用一个简单的例子来说明这个过程:

  • 假设你有一个小小的“窗口”(称为卷积核),它是一个矩阵,比如 3x3 的小矩阵。这个窗口会在图像上滑动,依次查看图像中的每个小区域。

  • 每当窗口停下来时,它会与这个小区域进行点乘(即每个对应位置的数值相乘,然后加起来),得到一个结果。

  • 然后,窗口继续滑动到下一个位置,重复这个过程,直到扫描完整张图片。

4.1.2 数学公式是怎么表示的?

卷积的操作可以通过下面的数学公式来表示:

y(i,j)=mnx(i+m,j+n)w(m,n)y(i, j) = \sum_m \sum_n x(i+m, j+n) w(m, n)

这个公式的意思是:

  • x(i,j)x(i, j) 代表图像在位置 (i,j)(i, j) 处的像素值;
  • w(m,n)w(m, n) 代表卷积核在位置 (m,n)(m, n) 处的权重;
  • y(i,j)y(i, j) 代表卷积操作后的结果,也就是你在位置 (i,j)(i, j) 处得到的输出。

让我们更具体地理解这个公式。

4.1.3 一个生动的例子

假设你有一张 5x5 的小图像:

x=(12345678910111213141516171819202122232425)x = \begin{pmatrix} 1 & 2 & 3 & 4 & 5 \\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 \\ 16 & 17 & 18 & 19 & 20 \\ 21 & 22 & 23 & 24 & 25 \end{pmatrix}

并且你有一个 3x3 的卷积核(或滤波器):

w=(101101101)w = \begin{pmatrix} 1 & 0 & -1 \\ 1 & 0 & -1 \\ 1 & 0 & -1 \end{pmatrix}

这里,卷积核的作用是检测图像中的边缘,因为它的结构可以帮助检测左右边界的变化。我们来看看卷积是如何工作的:

  1. 卷积核从图像的左上角开始,覆盖住图像的前三个像素(就是一个 3x3 的区域):
[123678111213]\begin{bmatrix} 1 & 2 & 3 \\ 6 & 7 & 8 \\ 11 & 12 & 13 \end{bmatrix}
  1. 然后,卷积核与这个 3x3 区域进行“点乘”,即每个位置的数值相乘后相加:

    1×1+0×2+(1)×3+1×6+0×7+(1)×8+1×11+0×12+(1)×131×1+0×2+(−1)×3+1×6+0×7+(−1)×8+1×11+0×12+(−1)×13

    结果为:

    (13+68+1113)=6(1−3+6−8+11−13)=−6

  2. 接下来,卷积核滑到图像的下一个位置,重复这个过程,直到扫描完整张图像。

最终,卷积操作会得到一个新的图像(也叫特征图),其中每个位置的数值都代表了该位置附近区域的特征。

4.1.4 为什么要做卷积?

卷积操作的关键在于它能够帮助我们提取图像中的局部特征。比如,图像中的边缘、角落、纹理等特征。卷积核通过扫描整个图像,逐步提取这些局部特征,然后通过多个卷积层,逐渐建立起对整个图像的理解。

通过卷积操作,我们不需要给网络提供每个像素的所有信息,而是只需要给它提供一些局部信息,网络能够通过这些信息来识别图像中的重要特征。更重要的是,卷积核的权重是共享的,这意味着无论卷积核在图像中的哪个位置,它的计算方式和参数都是相同的。这大大减少了需要训练的参数数量,也提高了计算效率。

4.1.5 总结

卷积操作是卷积神经网络(CNN)的核心,它能够有效地帮助计算机从图像中提取有用的特征。通过滑动卷积核并进行点乘,卷积操作将图像中的局部信息提取出来,并转化为新的特征图。这样,网络就能够逐步从低层的边缘、纹理等简单特征,学习到更高级的物体、场景等复杂特征。

简单来说,卷积就像是一个“扫描器”,它帮助我们从图像中提取出有意义的局部特征,让计算机能更聪明地“看懂”图像。

4.2 卷积核的作用

卷积核是一个小的权重矩阵,用于提取图像中的局部特征。例如,一个3x3的卷积核可能能够识别图像中的边缘、纹理等。卷积操作的优点是,它可以通过在不同位置应用相同的卷积核,从而减少参数数量,并有效地保留图像中的局部信息。

4.3 卷积操作的特点

  • 平移不变性:卷积操作使得图像中同一物体的位置不会影响到特征提取的结果,这就实现了平移不变性。

  • 局部性:卷积核通过只关注图像的局部区域,确保了局部特征能够被有效提取。

5. 卷积神经网络的结构

卷积神经网络(CNN)是一种特别擅长处理图像数据的神经网络结构。CNN的设计灵感来源于生物视觉系统的工作方式,它能够从简单的局部特征(如边缘、角落)逐步构建更复杂的高层次特征(如物体、面孔、风景等)。理解CNN的结构,我们需要从以下几个关键部分来分析:卷积层、池化层、全连接层

5.1 卷积层:特征提取器

卷积层就像是一个“过滤器”,它的任务是从输入的图像中提取重要的局部特征。想象一下你用一个小的窗口(即卷积核)在图像上滑动,每当窗口覆盖一个区域时,它会与该区域进行“点乘”并计算出一个数值,这个数值代表了该区域的特征。

例如,如果卷积核能够识别图像中的边缘,那么卷积层会帮助计算机识别图像中不同部分的边缘,形状,甚至纹理。

卷积核.jpeg

每次卷积核滑动时,它都会计算该区域的加权和,从而得到一个新的图像(即特征图)。

5.2 池化层:降维与压缩

池化层的作用是减少图像的空间维度,同时保留最重要的特征。池化常用两种方式:最大池化平均池化

  • 最大池化:选择每个小区域中的最大值。这样可以保留最显著的特征,避免信息丢失。
  • 平均池化:计算每个小区域的平均值,适合于较为平滑的特征提取。

假设有一个 4x4 的特征图,使用 2x2 的最大池化:

[13245678910111213141516]\begin{bmatrix} 1 & 3 & 2 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \\ 13 & 14 & 15 & 16 \end{bmatrix}

经过最大池化后,得到:

[681416]\begin{bmatrix} 6 & 8 \\ 14 & 16 \end{bmatrix}

池化层的作用就是通过降维减少计算量,同时保留最关键的特征。

5.3 全连接层:决策层

全连接层位于卷积网络的末端,作用类似于传统的多层感知机。经过卷积和池化层的处理后,图像已经被转化为一个高维的特征向量。在全连接层中,每个神经元与前一层的每个神经元都有连接,它将这些特征融合在一起,进行分类或其他任务。全连接层会对这些特征进行加权和,通过激活函数决定最终输出的结果。

5.4 卷积神经网络的整体流程

综合来看,卷积神经网络的结构就像一个逐层提炼图像特征的过程:

  1. 输入图像:通过卷积层提取局部特征(如边缘、角落)。
  2. 卷积层:不断从局部到整体提取越来越复杂的特征。
  3. 池化层:通过降维保留最关键的特征,减少计算量。
  4. 全连接层:将提取的特征进行融合,用于最终的分类或回归。

输入图像卷积层激活函数池化层卷积层池化层全连接层输出输入图像 → 卷积层 → 激活函数 → 池化层 → 卷积层 → 池化层 → 全连接层 → 输出

卷积神经网络的结构简洁而强大,能够自动地从原始图像中提取特征。通过卷积、池化和全连接层的协同作用,CNN可以将简单的局部特征逐步融合为复杂的高层特征,进而实现分类、检测等任务。简而言之,卷积神经网络像是一个“特征提炼机器”,它能够有效地理解和分析图像中的信息。

6. 小结

卷积神经网络(CNN)通过利用图像的平移不变性和局部性,成功地解决了全连接层在处理图像时的局限性。卷积操作能够通过减少参数数量、提高计算效率来有效提取图像特征,成为计算机视觉领域的核心技术。

  • 平移不变性:图像中的物体位置不会影响卷积神经网络的识别能力。
  • 局部性:卷积神经网络专注于图像的局部区域,以便提取有效的局部特征。
  • 权重共享:卷积核在整个图像中共享相同的权重,减少了模型的参数数量。

卷积神经网络在许多视觉任务中取得了显著成功,从图像分类到目标检测,成为了现代深度学习应用的基础。