1. 全连接层的局限性
在深度学习的世界中,我们通常从全连接层(Fully Connected Layer,简称FC层)开始讨论。全连接层适用于处理表格数据,其中每行表示一个样本,每列代表一个特征。在处理这些数据时,网络尝试从中发现潜在的规律。对全连接层来说,每个输入特征都会与每个神经元连接,意味着网络可以学习特征之间的复杂关系。
然而,针对高维感知数据(如图像)的处理,全连接层的局限性变得非常明显。假设你正在使用一百万像素的图像进行猫狗分类,每个像素都要作为一个特征输入到网络中。这将导致网络参数数量极其庞大,几乎不可能在没有大量计算资源和数据的情况下进行有效训练。
卷积神经网络(CNN) 通过巧妙地利用图像的结构特征,提供了一种更高效的解决方案。卷积神经网络能够通过减少参数数量,同时保留图像中的重要信息,从而解决全连接层在图像处理中的问题。
2. 不变性与局部性的概念
2.1 平移不变性
假设我们要从一张图像中找到某个物体。直观地说,物体在图像中的位置不应该影响我们是否能够识别它。例如,在“沃尔多在哪里”的游戏中,无论沃尔多出现在哪个位置,我们都能够通过他的装束来识别他。这个特性在计算机视觉中被称为平移不变性,即无论目标物体出现在图像的哪个位置,神经网络的反应应该是一样的。
卷积神经网络正是基于这一原则,通过扫描整个图像并对每个局部区域进行相同的处理,来实现平移不变性。这使得网络可以学习到不依赖于物体位置的特征,从而有效地进行物体识别。
2.2 局部性
局部性(Locality) 则意味着神经网络应该集中处理图像的局部区域,而不是试图一次性分析整个图像。通过仅关注图像的局部区域,卷积神经网络能够更高效地捕捉图像的局部特征(例如边缘、角点、纹理等)。
例如,当我们用卷积核扫描图像时,网络并不关心像素间远距离的关系,而是仅关注邻近像素的关系。这种局部处理方式降低了网络的复杂性,同时保留了图像中的有用信息。
3. 多层感知机的限制
对于一张二维图像,多层感知机将其展平为一维向量,然后通过全连接层进行处理。这种做法虽然在某些任务中有效,但在图像处理上却显得力不从心。
-
空间结构:图像本身具有明确的空间结构,像素之间存在着相对位置的关系。将图像展平成一维向量会丧失这些空间信息,导致无法有效学习到图像的局部特征。
-
参数数量庞大:对于大规模图像,使用全连接层的参数数量将变得极其庞大,导致训练难度大大增加。
为了解决这些问题,卷积神经网络提出了利用局部连接的方式,通过卷积核来提取局部特征,从而大幅减少参数数量。
4. 卷积层的引入
4.1 卷积的数学定义
我们知道,卷积在数学中是一种操作,用来结合两个函数或信号,计算它们的重叠部分。在深度学习中,卷积被用来处理图像,帮助计算机从图像中提取有用的特征。那卷积到底是怎么一回事呢?我们通过一个简单的例子来理解。
4.1.1 卷积是什么?
想象一下,你有一张照片,照片上有很多的细节,比如边缘、纹理、颜色等等。卷积操作就是一种扫描过程,它像一个“探测器”一样,在图像上滑动,在每个位置检查图像的局部区域,并计算它们的“加权和”。这个加权和的结果就构成了新的特征图。
我们可以用一个简单的例子来说明这个过程:
-
假设你有一个小小的“窗口”(称为卷积核),它是一个矩阵,比如 3x3 的小矩阵。这个窗口会在图像上滑动,依次查看图像中的每个小区域。
-
每当窗口停下来时,它会与这个小区域进行点乘(即每个对应位置的数值相乘,然后加起来),得到一个结果。
-
然后,窗口继续滑动到下一个位置,重复这个过程,直到扫描完整张图片。
4.1.2 数学公式是怎么表示的?
卷积的操作可以通过下面的数学公式来表示:
这个公式的意思是:
- 代表图像在位置 处的像素值;
- 代表卷积核在位置 处的权重;
- 代表卷积操作后的结果,也就是你在位置 处得到的输出。
让我们更具体地理解这个公式。
4.1.3 一个生动的例子
假设你有一张 5x5 的小图像:
并且你有一个 3x3 的卷积核(或滤波器):
这里,卷积核的作用是检测图像中的边缘,因为它的结构可以帮助检测左右边界的变化。我们来看看卷积是如何工作的:
- 卷积核从图像的左上角开始,覆盖住图像的前三个像素(就是一个 3x3 的区域):
-
然后,卷积核与这个 3x3 区域进行“点乘”,即每个位置的数值相乘后相加:
结果为:
-
接下来,卷积核滑到图像的下一个位置,重复这个过程,直到扫描完整张图像。
最终,卷积操作会得到一个新的图像(也叫特征图),其中每个位置的数值都代表了该位置附近区域的特征。
4.1.4 为什么要做卷积?
卷积操作的关键在于它能够帮助我们提取图像中的局部特征。比如,图像中的边缘、角落、纹理等特征。卷积核通过扫描整个图像,逐步提取这些局部特征,然后通过多个卷积层,逐渐建立起对整个图像的理解。
通过卷积操作,我们不需要给网络提供每个像素的所有信息,而是只需要给它提供一些局部信息,网络能够通过这些信息来识别图像中的重要特征。更重要的是,卷积核的权重是共享的,这意味着无论卷积核在图像中的哪个位置,它的计算方式和参数都是相同的。这大大减少了需要训练的参数数量,也提高了计算效率。
4.1.5 总结
卷积操作是卷积神经网络(CNN)的核心,它能够有效地帮助计算机从图像中提取有用的特征。通过滑动卷积核并进行点乘,卷积操作将图像中的局部信息提取出来,并转化为新的特征图。这样,网络就能够逐步从低层的边缘、纹理等简单特征,学习到更高级的物体、场景等复杂特征。
简单来说,卷积就像是一个“扫描器”,它帮助我们从图像中提取出有意义的局部特征,让计算机能更聪明地“看懂”图像。
4.2 卷积核的作用
卷积核是一个小的权重矩阵,用于提取图像中的局部特征。例如,一个3x3的卷积核可能能够识别图像中的边缘、纹理等。卷积操作的优点是,它可以通过在不同位置应用相同的卷积核,从而减少参数数量,并有效地保留图像中的局部信息。
4.3 卷积操作的特点
-
平移不变性:卷积操作使得图像中同一物体的位置不会影响到特征提取的结果,这就实现了平移不变性。
-
局部性:卷积核通过只关注图像的局部区域,确保了局部特征能够被有效提取。
5. 卷积神经网络的结构
卷积神经网络(CNN)是一种特别擅长处理图像数据的神经网络结构。CNN的设计灵感来源于生物视觉系统的工作方式,它能够从简单的局部特征(如边缘、角落)逐步构建更复杂的高层次特征(如物体、面孔、风景等)。理解CNN的结构,我们需要从以下几个关键部分来分析:卷积层、池化层、全连接层。
5.1 卷积层:特征提取器
卷积层就像是一个“过滤器”,它的任务是从输入的图像中提取重要的局部特征。想象一下你用一个小的窗口(即卷积核)在图像上滑动,每当窗口覆盖一个区域时,它会与该区域进行“点乘”并计算出一个数值,这个数值代表了该区域的特征。
例如,如果卷积核能够识别图像中的边缘,那么卷积层会帮助计算机识别图像中不同部分的边缘,形状,甚至纹理。
每次卷积核滑动时,它都会计算该区域的加权和,从而得到一个新的图像(即特征图)。
5.2 池化层:降维与压缩
池化层的作用是减少图像的空间维度,同时保留最重要的特征。池化常用两种方式:最大池化和平均池化。
- 最大池化:选择每个小区域中的最大值。这样可以保留最显著的特征,避免信息丢失。
- 平均池化:计算每个小区域的平均值,适合于较为平滑的特征提取。
假设有一个 4x4 的特征图,使用 2x2 的最大池化:
经过最大池化后,得到:
池化层的作用就是通过降维减少计算量,同时保留最关键的特征。
5.3 全连接层:决策层
全连接层位于卷积网络的末端,作用类似于传统的多层感知机。经过卷积和池化层的处理后,图像已经被转化为一个高维的特征向量。在全连接层中,每个神经元与前一层的每个神经元都有连接,它将这些特征融合在一起,进行分类或其他任务。全连接层会对这些特征进行加权和,通过激活函数决定最终输出的结果。
5.4 卷积神经网络的整体流程
综合来看,卷积神经网络的结构就像一个逐层提炼图像特征的过程:
- 输入图像:通过卷积层提取局部特征(如边缘、角落)。
- 卷积层:不断从局部到整体提取越来越复杂的特征。
- 池化层:通过降维保留最关键的特征,减少计算量。
- 全连接层:将提取的特征进行融合,用于最终的分类或回归。
卷积神经网络的结构简洁而强大,能够自动地从原始图像中提取特征。通过卷积、池化和全连接层的协同作用,CNN可以将简单的局部特征逐步融合为复杂的高层特征,进而实现分类、检测等任务。简而言之,卷积神经网络像是一个“特征提炼机器”,它能够有效地理解和分析图像中的信息。
6. 小结
卷积神经网络(CNN)通过利用图像的平移不变性和局部性,成功地解决了全连接层在处理图像时的局限性。卷积操作能够通过减少参数数量、提高计算效率来有效提取图像特征,成为计算机视觉领域的核心技术。
- 平移不变性:图像中的物体位置不会影响卷积神经网络的识别能力。
- 局部性:卷积神经网络专注于图像的局部区域,以便提取有效的局部特征。
- 权重共享:卷积核在整个图像中共享相同的权重,减少了模型的参数数量。
卷积神经网络在许多视觉任务中取得了显著成功,从图像分类到目标检测,成为了现代深度学习应用的基础。