深度学习:卷积神经网络(CNN)基础知识
卷积神经网络(Convolutional Neural Networks, CNNs)是深度学习中用于处理具有网格结构数据(如图像)的一类神经网络。CNN通过卷积层来提取输入数据的特征,广泛应用于图像识别、视频分析、自然语言处理等领域。
1. 卷积层(Convolutional Layer)
- 目的:提取输入数据的特征。在图像处理中,卷积层能够识别图像中的边缘、纹理等特征。
- 工作原理:使用一组可学习的滤波器(或称为卷积核),在输入数据上滑动并进行局部区域的点积运算,生成特征图(feature maps)。
- 参数共享:每个卷积核的参数在整个输入数据上共享,减少了模型的参数数量,降低了计算复杂度。
- 局部连接:每个神经元只与输入数据的一个局部区域相连接,这使得网络能够捕捉到局部特征。
-
什么是卷积:对图像(不同的数据窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
1.卷积操作存在的问题?
a.步长stride:每次滑动的位置步长。
b. 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数。
c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑 倒末尾位置,通俗地讲就是为了总长能被步长整除。
2.卷积层计算
2. 激活函数(Activation Function)
- 目的:引入非线性,使得网络能够学习复杂的特征组合。
- 常用激活函数:ReLU(Rectified Linear Unit)、Sigmoid、Tanh等。
- 作用:ReLU函数因其计算简单、梯度不消失的优点而被广泛使用。
3. 池化层(Pooling Layer)
- 目的:降低特征图的空间维度,减少参数数量和计算量,同时使特征检测更加鲁棒。
- 工作原理:通常使用最大池化(Max Pooling)或平均池化(Average Pooling),在特征图上滑动一个固定大小的窗口,取窗口内的最大值或平均值作为输出。
-
常见的池化层:最大池化、平均池化、全局平均池化、全局最大池化。
- 池化层操作方法:与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。
4. 全连接层(Fully Connected Layer)
- 目的:在网络的最后几层,将卷积层和池化层提取的特征进行整合,用于分类或回归任务。
- 工作原理:每个神经元与前一层的所有激活值相连接,进行加权求和后通过激活函数。
5. 损失函数(Loss Function)
- 目的:评估模型的预测与真实值之间的差异,指导模型训练。
- 常用损失函数:交叉熵损失(Cross-Entropy Loss)用于分类任务,均方误差(Mean Squared Error, MSE)用于回归任务。
6. 反向传播(Backpropagation)
- 目的:根据损失函数计算梯度,更新网络权重,优化模型性能。
- 工作原理:利用链式法则计算损失函数对每个权重的偏导数,然后使用梯度下降或其他优化算法更新权重。
7. 优化算法(Optimization Algorithm)
- 目的:在训练过程中调整权重,以最小化损失函数。
- 常用算法:SGD(Stochastic Gradient Descent)、Adam、RMSprop等。