文章目录
- 1、简介
- 2、核心概念
- 3、关键操作
- 4、常见架构
- 5、训练过程
- 6、重要概念图解⭐
- 6.1、卷积神经网络工作⭐
- 6.2、卷积核
- 6.3、全连接与卷积网络的对比
- 6.4、池化层
- 6.5、感受野和卷积堆叠
- 6.6、神经元计算和激活函数
- 7、卷积网络可以改进的地方
- 8、结论
🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹
1、简介
卷积神经网络(Convolutional Neural Network, CNN)理论知识
卷积神经网络(Convolutional Neural Network,简称CNN)是一种专门用于处理数据具有网格拓扑(如图像)的深度神经网络。
CNN广泛应用于计算机视觉任务,如图像分类、目标检测和图像分割等。
2、核心概念
- 卷积层(Convolutional Layer):
- 卷积层是CNN的核心组件。它使用卷积核(或称滤波器)在输入数据上进行滑动操作,提取特征。
- 卷积操作本质上是对局部区域进行加权和,这些权重由卷积核参数决定。
- 卷积层可以减少参数数量,因为卷积核在输入数据上共享参数。
- 池化层(Pooling Layer):
- 池化层用于减少数据的空间尺寸,降低计算量和防止过拟合。
- 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。
- 最大池化取池化窗口中的最大值,平均池化取池化窗口中的平均值。
- 激活函数(Activation Function):
- 激活函数用于引入非线性,使模型可以表示更复杂的函数。
- 常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh。
- 全连接层(Fully Connected Layer):
- 全连接层将前面层的输出展开为一维向量,并通过一个或多个线性层进行处理。
- 全连接层通常用于分类任务的最后几层,将特征映射到类别空间。
- 批量归一化(Batch Normalization):
- 批量归一化用于加速训练,稳定模型。它在每层之后对每个小批次的输出进行归一化,使其均值为0,方差为1。
- 正则化(Regularization):
- 正则化技术用于防止过拟合。
- 常用的正则化方法包括L2正则化(权重衰减)和Dropout(随机丢弃部分神经元)。
3、关键操作
- 卷积操作:
- 输入数据通常是一个多通道(如RGB图像有三个通道)的三维矩阵。
- 卷积核也是一个三维矩阵,它在输入数据上进行滑动,每次计算局部区域的加权和。
- 卷积操作的输出称为特征图(Feature Map)。
- 步幅(Stride):
- 步幅是卷积核在输入数据上滑动的步长。
- 较大的步幅可以减少特征图的尺寸。
- 填充(Padding):
- 填充是在输入数据的边缘添加额外的像素,通常为零值。
- 填充可以保持特征图的空间尺寸,使得边缘信息不丢失。
4、常见架构
- LeNet:
- LeNet是最早的CNN之一,最初用于手写数字识别。
- 结构简单,包括多个卷积层、池化层和全连接层。
- AlexNet:
- AlexNet在ImageNet竞赛中取得了突破性的成绩,推动了深度学习的发展。
- 采用较深的网络结构,引入了ReLU激活函数和Dropout正则化。
- VGGNet:
- VGGNet通过使用多个小卷积核(3x3)堆叠来增加网络深度。
- 结构统一,便于理解和实现。
- ResNet:
- ResNet引入了残差连接(Residual Connections),解决了深层网络训练困难的问题。
- 残差连接允许梯度直接通过跳跃层传播,有助于训练更深的网络。
- Inception:
- Inception网络通过并行的多尺度卷积核和池化操作提取特征。
- Inception模块有效地减少了计算量和参数数量。
5、训练过程
- 前向传播(Forward Propagation):
- 输入数据通过网络的每一层,逐层计算输出,直到得到最终的预测结果。
- 损失计算(Loss Calculation):
- 通过损失函数计算预测结果与真实标签之间的误差。
- 反向传播(Backward Propagation):
- 计算损失相对于每个参数的梯度,使用链式法则逐层传播梯度。
- 参数更新(Parameter Update):
- 使用优化算法(如SGD、Adam)更新模型参数,减小损失。
6、重要概念图解⭐
6.1、卷积神经网络工作⭐
这里以输入汽车数据为例子,输入层输入数据集之后,经由卷积层、池化层、全连接层之后,到达输出层,此时经过训练,完成汽车品牌分类。
上图的卷积层:
输入图片通过多个卷积核(滤波器),提取出特征图(红色矩形表示)。
卷积操作在图片的局部区域内滑动,并进行加权和运算,从而提取特征。
下图则强调了卷积操作在多尺度特征提取的作用。
卷积核(滤波器)在图片的不同局部区域滑动,提取出多种尺度的特征图
(红色和蓝色矩形表示不同尺度的特征图)
全连接层:
多尺度特征图被展开成一维向量,并传递到全连接层。
全连接层对这些多尺度特征进行组合和处理(绿色矩形表示全连接层)。
图中展示了从“局部”到“整体”的特征组合过程,强调了全连接层如何整合多尺度特征进行最终的分类。
6.2、卷积核
卷积核:
中间部分展示了三个不同的卷积核(滤波器):
- 第一个卷积核:用于提取边缘特征。具体的卷积核参数为
[[1, 2, 1], [0, 0, 0], [-1, -2, -1]]
,这类似于Sobel算子,用于检测垂直边缘。 - 第二个卷积核:用于提取不同方向的边缘特征。具体的卷积核参数为
[[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]
,这也是Sobel算子的一种,用于检测水平边缘。 - 第三个卷积核:用于模糊图像。具体的卷积核参数为
[[0.1, 0.1, 0.1], [0.1, 0.2, 0.1], [0.1, 0.1, 0.1]]
,这是一个简单的模糊滤波器。
卷积结果:
右边展示了通过这三个卷积核对原始图片进行卷积操作后的结果:
- 使用第一个卷积核提取出的垂直边缘特征图。
- 使用第二个卷积核提取出的水平边缘特征图。
- 使用第三个卷积核模糊处理后的图像。
下图则是演示滑动效果:
卷积操作:
中间部分展示了卷积操作的过程:
- 卷积核在输入图像上滑动,每次在局部区域进行加权和运算。
- 滑动窗口(卷积核)逐步覆盖输入图像的不同部分。
6.3、全连接与卷积网络的对比
全连接网络:
卷积网络:
对比分析:
- 连接方式:
- 全连接层:每个神经元与前一层的每个神经元相连,捕捉输入的全局信息。这种连接方式会产生大量的参数。
- 卷积层:每个神经元仅与前一层的局部区域相连,捕捉局部特征,并通过参数共享减少了参数数量。
- 参数数量:
- 全连接层:参数数量非常庞大,尤其是在处理高维输入数据时。
- 卷积层:通过参数共享和局部连接,参数数量显著减少,更加高效。
- 特征提取:
- 全连接层:对输入数据进行全局特征提取,适用于处理展平后的数据。
- 卷积层:对输入数据进行局部特征提取,保留空间结构和位置信息,适用于处理图像等具有空间结构的数据。
- 空间平移不变性:
- 全连接层:没有空间平移不变性,输入数据的微小变化可能导致输出的较大变化。
- 卷积层:具有空间平移不变性,输入图像的平移不会显著影响特征图。
总结:
- 全连接层:适用于对输入数据进行全局特征提取,参数较多,计算量较大。
- 卷积层:适用于对图像等具有空间结构的数据进行局部特征提取,参数较少,具有空间平移不变性。
6.4、池化层
池化层的优势——降低数据维度、减少训练参数、避免过拟合:
6.5、感受野和卷积堆叠
卷积操作:
感受野:
卷积堆叠:
总结:
- 卷积操作:
- 卷积操作通过卷积核在输入图像上滑动,提取局部特征。卷积核的值用于计算输入图像中每个感受野区域的加权和。
- 感受野:
- 感受野是卷积核作用的局部区域。通过不断滑动卷积核,可以覆盖整个输入图像,生成特征图。
- 多层卷积堆叠:
- 多层卷积的堆叠允许模型逐层提取特征,从低级特征(如边缘)到高级特征(如复杂形状和对象)。这种层次化的特征提取方式使得卷积神经网络能够处理复杂的视觉任务。
6.6、神经元计算和激活函数
神经元计算:
- 神经元接收多个输入特征,通过各自的权重加权,然后将结果相加,最后通过激活函数得到输出。
- 这种计算方式允许神经网络通过调整权重和偏置来学习数据中的模式。
激活函数的作用:
- 激活函数引入非线性,使得神经网络能够表示和学习复杂的非线性函数。
- ReLU是最常用的激活函数之一,具有计算简单和缓解梯度消失问题的优点。
ReLU激活函数:
- ReLU函数将输入中的负值全部变为0,正值保持不变,有助于提高模型的训练效率和性能。
- ReLU在特征图上的应用可以清楚地看到其对负值的抑制作用,这有助于提高模型的稀疏性和鲁棒性。
7、卷积网络可以改进的地方
①级联和初始化方法
②激活函数的改进
8、结论
卷积神经网络通过引入局部连接、参数共享和池化操作,有效地处理了高维数据(如图像)中的特征提取和分类任务。
其多层次的特征表示使得CNN在图像处理、语音识别和自然语言处理等领域取得了显著的成功。
理解CNN的基本概念和操作是进一步研究和应用深度学习的基础。