一:CNN学习
首先对CNN(卷积神经网络)进行学习。
CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络-CSDN博客
https://blog.csdn.net/v_JULY_v/article/details/51812459?fromshare=blogdetail&sharetype=blogdetail&sharerId=51812459&sharerefer=PC&sharesource=2302_78225718&sharefrom=from_linkhttps://blog.csdn.net/v_JULY_v/article/details/51812459?fromshare=blogdetail&sharetype=blogdetail&sharerId=51812459&sharerefer=PC&sharesource=2302_78225718&sharefrom=from_link根据上述文章进行总结
1.1神经网络的知识
1.1.1 神经元
神经网络由大量的神经元相互连接而成。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。
基本wx + b的形式,其中
、
表示输入向量
、
为权重,几个输入则意味着有几个权重,即每个输入都被赋予一个权重
- b为偏置bias
- g(z) 为激活函数
- a 为输出
g(z) = g( *
+
*
+ b ),g表示激活函数,这里的b可以理解成 为更好达到目标而做调整的偏置项。
1.1.2 激活函数
常用的非线性激活函数有sigmoid、tanh、relu。前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层
sigmoid的函数表达式如下
sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0。
1.1.3 神经网络
单个神经元
输入层(Input layer),众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。
输出层(Output layer),讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息称为输出向量。
隐藏层(Hidden layer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。
上图中最左边的原始输入信息称之为输入层,最右边的神经元称之为输出层(上图中输出层只有一个神经元),中间的叫隐藏层。
1.2 卷积神经网络以及层结构
- 最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。
1.2.1卷积层以及激励层池化层的理解
1.2.1.1 卷积层(Convolutional Layer)
核心作用:提取局部特征,保留空间信息。
工作原理:通过可学习的卷积核(滤波器)在输入数据(如图像)上滑动,进行局部区域的乘积和求和运算,生成特征图(Feature Map)。
关键特性:
参数共享:同一卷积核在整个输入上共享权重,大幅减少参数量。
局部连接:每个神经元仅感受局部区域,模拟生物视觉的“感受野”。
层级特征提取:
浅层卷积核捕捉基础特征(如边缘、纹理);
深层卷积核组合低级特征,检测复杂模式(如物体部件)。
参数设置:卷积核尺寸(如3×3)、步长(Stride)、填充(Padding)影响特征图大小和信息保留。
1.2.1.2. 激励层(Activation Layer)
核心作用:引入非线性,增强模型的表达能力。
典型函数:ReLU(Rectified Linear Unit)最常用,因其计算高效且缓解梯度消失问题。公式:。
功能解析:
解决卷积层的线性局限性,使网络可拟合复杂的非线性函数。
稀疏性激活:ReLU抑制负值,仅保留显著特征,提高网络稀疏性。
其他激活函数:
Sigmoid和Tanh(易饱和,梯度消失,多用于输出层);
Leaky ReLU、ELU(缓解ReLU的“神经元死亡”问题)。
1.2.1.3. 池化层(Pooling Layer)
核心作用:降维与特征不变性,提升鲁棒性及计算效率。
常用方法:
最大池化(Max Pooling):取局部区域最大值,保留显著特征;
平均池化(Average Pooling):取局部区域均值,平滑特征。
核心优势:
平移不变性:特征的小位移不影响池化结果,增强模型泛化能力。
降维:缩小特征图尺寸(如2×2池化窗口将尺寸减半),减少后续计算量。
抗噪声:抑制局部微小噪声的影响。
权衡:池化可能丢失位置细节信息,常用于低层特征抽象。
协同工作流程
特征提取阶段:
卷积层提取局部特征 → 激励层引入非线性 → 池化层压缩空间维度。层级堆叠:
多层重复(如 Conv → ReLU → Pooling),逐级抽象(边缘 → 纹理 → 物体部件 → 整体结构)。全连接层前:
最终高级特征经过展平,输入全连接层进行分类或回归。示例与对比
无卷积层:模型无法捕捉空间相关性,需全连接处理图像,导致参数爆炸。
无激励层:网络退化为线性变换叠加,无法拟合复杂数据(如异或问题)。
无池化层:特征图尺寸过大,计算成本高,且缺乏平移鲁棒性,易过拟合。
1.2.1.4鲁棒性
鲁棒性(Robustness)是指系统、算法或模型在面对外部干扰、噪声、异常数据或不确定性时,仍能保持稳定性和有效性的能力。简单来说,鲁棒性衡量的是系统在不完美的条件下的耐受性和适应性。
1. 机器学习和深度学习
- 模型的鲁棒性:模型在面对输入数据中的噪声、缺失值、对抗样本或异常值时,仍能给出正确或合理的预测。
例子:图像分类模型在输入图像有噪声或部分遮挡时,仍能准确分类。 - 训练过程中的鲁棒性:模型对超参数选择、初始化方式等不敏感,能够稳定收敛。
1.3 卷积激励以及池化具体图
1.3.1卷积
输入图像跟滤波器做内积,相乘求和。中间红框为滤波器。
左边为图像数据信息,中间为神经元带有固定的权重。
不同权重展示的结果
下图为7*7*3 长宽 以及通道数3 两个滤波器也就是两个神经元。带有三个权重信息3个通道。
通道数设置:
- CNN的卷积核通道数 = 卷积输入层的通道数
- CNN的卷积输出层通道数(深度)= 卷积核的个数
多通道卷积的计算过程:将矩阵与滤波器对应的每一个通道进行卷积运算,最后相加,形成一个单通道输出,加上偏置项后,我们得到了一个最终的单通道输出。如果存在多个filter,这时我们可以把这些最终的单通道输出组合成一个总输出。
在深度学习中,一个卷积核(Convolutional Kernel)并不是一个神经元,但它们之间有一定的关联性。为了更好地理解这个问题,我们需要从卷积神经网络(CNN)的基本原理出发,逐步分析卷积核和神经元的关系。
1.3.1.2 卷积核是什么?
卷积核是卷积神经网络中的核心组件之一,它是一个小的权重矩阵(通常是 3x3、5x5 等大小),用于在输入数据(如图像)上滑动并提取特征。卷积核的作用是通过卷积操作,捕捉输入数据中的局部特征(如边缘、纹理、形状等)。
- 卷积核的权重:卷积核的每个元素是一个可学习的参数,这些参数在训练过程中通过反向传播优化。
- 卷积操作:卷积核在输入数据上滑动,计算局部区域的加权和,生成特征图(Feature Map)。
1.3.1.3 神经元是什么?
神经元是神经网络的基本单元,通常由一个加权求和和一个激活函数组成。在传统的全连接神经网络中,每个神经元会接收所有输入的加权和,并通过激活函数输出一个值。
- 神经元的作用:神经元通过学习输入之间的权重关系,提取数据中的非线性特征。
1.3.1.4. 卷积核与神经元的关系
虽然卷积核和神经元都可以看作是“提取特征”的工具,但它们的工作方式和层级结构不同:
(1)卷积核是局部连接的,神经元是全连接的
- 卷积核只与输入数据中的一个局部区域(如 3x3 的区域)连接,生成一个特征图。
- 神经元则与所有输入连接,计算全局的加权和。
(2)卷积核可以共享权重,神经元不共享权重
- 在卷积层中,一个卷积核在整个输入数据上共享权重,这意味着它可以在不同位置提取相同的特征。
- 在传统神经网络中,每个神经元的权重是独立的。
(3)一个卷积核对应多个神经元的输出
- 一个卷积核在输入数据上滑动时,会生成一个特征图,特征图中的每个元素可以被看作是一个“神经元”的输出。
例如,如果输入数据是 5x5 的图像,使用一个 3x3 的卷积核滑动后会生成一个 3x3 的特征图,这 9 个值可以被认为是 9 个神经元的输出。
(4)多个卷积核对应多个特征的提取
- 通常卷积层会使用多个卷积核,每个卷积核提取不同的特征。例如,一个卷积层可能有 32 个卷积核,每个卷积核会生成一个独立的特征图。
1.3.1.5. 总结:卷积核和神经元的区别
- 卷积核:是一个小的权重矩阵,用于在局部区域内提取特征。
- 神经元:是一个计算单元,接受输入并输出一个值。
常用的卷积计算公式
- 输入图片的尺寸:一般用n×n表示输入的image大小。
- 卷积核的大小:一般用f×f表示卷积核的大小。
- 填充(Padding):一般用p来表示填充大小。
- 步长(Stride):一般用s来表示步长大小。
- 输出图片的尺寸:一般用0来表示。
1.3.2 激励层
但实际梯度下降中,sigmoid容易饱和、造成终止梯度传递,且没有0中心化。咋办呢,可以尝试另外一个激活函数:ReLU,其图形表示如下
1.3.3 池化层
上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。