一、卷积神经网络
卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,它在图像和视频识别、分类和分割等任务中表现出色。CNN的设计灵感来源于生物的视觉皮层机制,特别是它如何响应图像边缘和纹理等局部特征。
1.卷积神经网络的应用领域
卷积神经网络(CNN)主要应用在以下几个领域:
- 图像识别:识别照片中的物体,比如猫、狗等。
- 面部识别:用于手机解锁或安全系统。
- 医学图像:帮助医生分析X光片或MRI图像。
- 自动驾驶:帮助汽车识别道路和行人。
- 视频分析:在监控视频中识别特定行为或事件。
2.卷积神经网络和传统神经网络的区别
传统神经网络主要区别就是从二维到三维的转变,传统神经网络输入层输入的是一列特征,卷积神经网络输入层输入的是三维数据。
3.卷积神经网络的整体架构
卷积神经网络(CNN)的整体架构通常包含以下几个主要的层级结构:
-
输入层(Input Layer):
-
接收原始输入数据,通常是图像数据。
-
-
卷积层(Convolutional Layer):
-
包含多个卷积核(或滤波器),用于提取输入数据的特征。
-
卷积操作在输入数据上滑动,生成特征图(Feature Maps)。
-
-
激活层(Activation Layer):
-
通常使用非线性激活函数,如ReLU(Rectified Linear Unit),增加网络的非线性表达能力。
-
-
池化层(Pooling Layer):
-
用于降低特征图的空间维度,减少计算量,增强特征的不变性。
-
常见的池化操作有最大池化(Max Pooling)和平均池化(Average Pooling)。
-
-
归一化层(Normalization Layer)(可选):
-
用于归一化特征图,减少内部协变量偏移。
-
-
全连接层(Fully Connected Layer):
-
也称为密集层,将特征图展平并连接到全连接的神经网络层。
-
通常在网络的末端,用于分类或回归任务。
-
-
输出层(Output Layer):
-
最后一层,输出网络的最终结果,如分类标签或回归值。
-
-
连接和正则化(Connections and Regularization):
-
可能包括Dropout层以减少过拟合,以及Batch Normalization层以加速训练。
-
-
损失函数和优化器(Loss Function and Optimizer):
-
损失函数用于评估模型的预测与真实值之间的差异,如交叉熵损失。
-
优化器用于更新网络权重,如SGD(随机梯度下降)或Adam。
-
一个典型的CNN架构可能包含多个卷积层、激活层、池化层和全连接层的组合,具体层数和配置取决于任务的复杂性和数据的特性。
4.卷积
卷积是一种数学运算,它在信号处理、图像处理、机器学习等领域中非常重要,尤其是在卷积神经网络(CNN)中。卷积操作涉及两个函数:一个输入信号(或图像)和一个卷积核(或滤波器),通过这种运算可以提取输入信号的特征。
1)卷积的作用
卷积的主要作用就是特征提取,将一个区域的特征值通过权重参数(即卷积核)进行计算,提取特征。
2)图像颜色通道
常见的图像颜色通道是一个三维的,即RGB颜色,其他的也有二维的颜色通道,例如灰度通道等。
前面说过,卷积是一个多维的过程,在进行卷积时,是三个颜色通道单独进行卷积,最后将特征值进行相加,得到最后的特征图。
3)卷积特征值计算
如图,卷积核Filter分别单独对三个通道进行卷积(点积计算),每次卷积后都会提取一个特征值,三个特征值相加再加上偏置即得到最终的特征值。
以第一个为例,第一个卷积核和第一个通道进行卷积,得到特征值0,第二个卷积核和第二个通道进行卷积,得到特征值2,第三个卷积核和第三个通道进行卷积,得到第三个特征值0,三个特征值相加,加上偏置1,得到最后的结果特征值3。
卷积时选择多种特征值,得到多个特征图,使得特征得到丰富、捕获不同特征、增加深度和复杂性。
4) 卷积层涉及的参数
5)步长和卷积核
-
特征图尺寸(Output Dimension):
- 步长直接影响特征图的尺寸。较大的步长会导致输出特征图的尺寸减小,而较小的步长则会使输出特征图的尺寸增大。
- 卷积核大小也会影响输出特征图的尺寸。较大的卷积核可能会覆盖更多的输入区域,从而影响特征图的细节和尺寸。
-
特征提取(Feature Extraction):
- 步长较大的卷积操作可能会丢失一些细节信息,但可以提取更全局的特征;步长较小的卷积操作可以提取更多的细节特征,但计算量增加。
- 卷积核大小决定了感受野的大小,即神经元可以“看到”的输入图像区域。小卷积核可以捕捉局部细节,而大卷积核可以捕捉更广泛的特征。
6)边缘填充
-
控制输出尺寸:
- 通过在输入数据的边缘添加额外的像素,可以控制卷积层输出的特征图(Feature Map)的尺寸。例如,如果使用
padding=1
与一个3x3
的卷积核,输出的特征图尺寸将与输入图像的尺寸相同。
- 通过在输入数据的边缘添加额外的像素,可以控制卷积层输出的特征图(Feature Map)的尺寸。例如,如果使用
-
减少边界效应:
- 边缘填充有助于减少边界效应,即在图像边缘的像素由于卷积核无法完全覆盖而丢失信息的问题。适当的填充可以确保边缘像素也能被充分考虑。
7)特征图尺寸计算
例如输入数据时32*32*3的图像,用10个5*5*3的filter来进行卷积操作,指定步长s为1,边界填充p为2,最终输出规模计算为:
长度:H=(32 - 5 - 2*2)/1 + 1 = 32,宽度也一样,故选择这样的卷积核进行卷积后,尺寸不变。
8)感受野
在卷积神经网络(CNN)中,感受野(Receptive Field)是指网络中某一层的神经元对输入图像的哪些区域是敏感的。换句话说,它描述了网络中一个神经元或卷积核能够“看到”或影响输入图像的区域大小和位置。
9)参数共享
卷积参数共享是卷积神经网络(CNN)中的一个核心概念,它指的是在卷积层中,同一个卷积核(或滤波器)的参数在整个输入数据上是共享的。这意味着无论输入图像有多大,每个卷积核的权重都保持不变,并且在整个图像上滑动时使用相同的参数。
-
减少参数数量:
- 由于参数在整个输入上共享,这大大减少了模型需要学习的参数总数。例如,一个具有100万个参数的全连接层可能需要一个具有相同数量参数的卷积层,但后者的参数数量会显著减少,因为每个卷积核的参数在整个图像上重复使用。
-
提高计算效率:
- 参数共享减少了模型的参数数量,从而降低了模型的计算复杂度,使得卷积操作可以更快地进行。
-
实现平移不变性:
- 参数共享使得CNN对输入图像的小平移不敏感。如果一个特征在图像的一个区域被检测到,那么在另一个区域也能被相同的卷积核检测到,因为它们共享相同的参数。
-
增强泛化能力:
- 由于卷积核学习到的特征是在整个输入空间上共享的,这有助于模型学习到更加泛化的特征表示,而不是过度依赖于特定位置的特征。
5.池化
池化(Pooling)是卷积神经网络(CNN)中的一种结构,它跟在卷积层之后,用于降低特征图(Feature Maps)的空间维度,同时保留重要的特征信息。池化操作通常包括以下几种类型:
-
最大池化(Max Pooling):
- 最大池化会在给定的池化窗口内选择最大值作为输出。这种方法能够捕捉局部区域中最显著的特征,并且对小的位置变化具有不变性。
-
平均池化(Average Pooling):
- 平均池化会计算池化窗口内所有值的平均数作为输出。这种方法能够提供局部区域的统计信息,但不如最大池化对极端值敏感。
二、经典卷积神经网络架构
1.VGG
VGG(Visual Geometry Group)网络是由牛津大学的视觉几何小组提出的,它在2014年的ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比赛中取得了分类任务第二名的成绩。VGG网络的主要特点是其简单而深的架构,它证明了增加网络深度能够在一定程度上提升网络的性能。
1)VGG网络的主要结构:
-
卷积层:VGG网络中的所有卷积层都使用3x3的卷积核,这与AlexNet中使用的较大卷积核(11x11,7x7,5x5)不同。VGG通过连续几个3x3的卷积核代替大卷积核,这样做的好处是在保持相同感受野的前提下,增加了网络深度,并且减少了参数数量。
-
池化层:VGG网络中的池化层都使用2x2的池化核,步长为2,用于降低特征图的空间维度。
-
全连接层:VGG网络在卷积层之后有3个全连接层,用于分类任务。
2)VGG网络的两种常见配置:
- VGG16:包含16个隐藏层(13个卷积层和3个全连接层)。
- VGG19:包含19个隐藏层(16个卷积层和3个全连接层)。
3)VGG网络的特点:
- 小卷积核:VGG网络全部使用3x3的小卷积核,这有助于减少参数数量并保持特征图的空间维度。
- 深网络:VGG网络通过增加网络深度来提升性能,VGG16和VGG19分别有16层和19层。
- 参数共享:由于卷积核在整个输入数据上共享,这减少了模型的参数数量。
- 数据增强:VGG在训练时使用多尺度数据增强,提高了模型的泛化能力。
4)VGG网络的优缺点:
- 优点:结构简单,性能强大,被广泛用于图像识别和分类任务,尤其在迁移学习中表现突出。
- 缺点:参数量较大,需要更多的存储空间和计算资源
2.Resnet
在VGG网络架构之中,出现了一个问题,随着深度的增加,error不降反增,深度学习进入低谷,在后面的研究之中,出现了ResNet残差网络“保底思想”,,就火了深度学习。
ResNet(残差网络)是一种深度学习中的卷积神经网络架构,由微软研究院提出,其核心创新点在于引入了残差学习(residual learning)和残差连接(skip connections)。
优点:
- 解决梯度消失问题:通过残差块的恒等映射,ResNet允许梯度直接流向前面的层,有效缓解了梯度消失问题。
- 提高训练效率:ResNet允许使用更大的学习率和更深层次的网络,从而加快了收敛速度。
- 强大的特征提取能力:ResNet通过深层网络学习到更复杂的特征表示,提升了图像分类、目标检测等任务的性能。
- 良好的泛化能力:即使网络非常深,ResNet也能保持良好的泛化能力,不会发生过拟合。