卷积神经网络(CNN,Convolutional Neural Network)是一种专门用于处理具有网格拓扑数据(如图像、视频等)的深度学习模型,广泛应用于计算机视觉领域。与传统的全连接神经网络不同,CNN 通过卷积操作提取局部特征,能够有效减少参数数量,并提高模型在图像、语音等任务中的表现。
卷积神经网络
卷积神经网络四大要件:
- 卷积层(Convolution Layer)
卷积神经网络的核心是卷积层,它通过使用卷积操作来提取图像中的特征。卷积操作有助于捕捉局部信息,通过滑动窗口的方式在输入数据上进行滤波操作,从而生成特征图。 - 非线性激励层(Non-Linear Layer)/激活函数(Activation Function)
激活函数引入非线性性质,使得网络可以学习复杂的映射关系。常用的激活函数包括ReLU(Rectified Linear Unit)和其变体,它们在神经网络中广泛应用。 - 池化层(Pooling Layer)
池化层用于减小特征图的空间维度,同时保留最重要的信息。常见的池化操作包括最大池化和平均池化,它们分别选取池化窗口中的最大值或平均值作为输出,以降低计算复杂度和提高网络的鲁棒性。 - 输出层、全连接层(Fully-connected Layer)
全连接层用于将卷积和池化层提取的特征映射转换为最终的输出。在这一层中,每个神经元与前一层中的所有神经元连接,从而实现全局信息的整合。
卷积层(Convolution Layer)
卷积的主要工作是通过卷积操作提取输入数据中的特征。这一操作是基于卷积核(也称为滤波器)的滑动窗口运算。
具体来说,卷积层的工作包括以下几个步骤:
1、卷积操作: 卷积核是一个小的窗口或矩阵,它通过在输入数据上滑动进行卷积操作。在每个位置,卷积核与输入数据的相应部分进行逐元素相乘,然后将所有乘积的结果相加,形成输出特征图的一个元素。
2、特征映射: 卷积操作的结果生成了称为特征映射的输出。这些特征映射捕捉了输入数据中的局部特征,通过在不同位置应用卷积核,网络能够学习不同的特征,例如边缘、纹理等。
3、权重共享: 卷积操作中使用的卷积核在整个输入数据上共享权重。这样的权重共享减少了需要学习的参数数量,使得网络更加高效。
4、感受野: 感受野是指卷积层中每个输出单元对输入数据的局部区域的大小。随着网络深度的增加,感受野逐渐扩大,使网络能够捕捉更广泛的特征。
通过卷积操作,卷积层能够有效地提取输入数据的局部特征,使得卷积神经网络在图像处理任务中表现出色,如图像分类、目标检测等。
**卷积核(Convolutional Kernel)**:
1、同输入数据进行计算的二维(一维、三维)算子
2、大小(size)由用户定义,深度由输入数据定义
3、卷积核“矩阵值”:卷积神经网络的参数
4、卷积核初始值随机生成,通过反向传播更新
卷积核的关键参数:
卷积核大小:
- 奇偶选择:一般奇数,满足对称
- 大小选择:根据输入数据,根据图像特征
- 厚度确认:与输入数据一致
- 覆盖范围:根据输入数据,根据图像特征
步长(stride):对输入特征图的扫描间隔
边界扩充(pad):在卷积过程中,为了允许边界上的数据也能作为中心参与卷积运算,将边界假装延申。
- 假设卷积核的宽度为2i+1,则添加pad的宽度为i
非线性激励层(Non-linear activation layer):
引入非线性性质,使得网络可以学习复杂的映射关系。
relu函数:$f(x) = max(0,x)$
池化层(Pooling layer)
1、数据降维,方便计算和存储。降维有两种方法:max pooling/average pooling
2、池化过程中,每张特征图单独降维。
**归一化层(Normalization Layer) **
在训练过程中,每个批次的输入数据分布可能不同,导致网络每次看到的数据分布不一致。归一化层在每个批次中计算均值和方差,将输入数据归一化,有助于使不同批次的数据分布更加稳定,提高网络的鲁棒性。
归一化层必须放在非线性激励层之前。
归一化层主要有两种方式:批量归一化(Batch Normalization,BN)和近邻归一化(Local Response Normalization)
切分层(Slice Layer)
在某些应用中,希望独立对某些区域单独学习。
好处:学习多套参数,更强的特征和描述能力。
融合层(Merge Layer)
对独立进行特征学习的分支进行融合,构建高效而精简的特征组合。