深度学习---(2)卷积神经网络

前言

卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,特别适合处理图像和视频等数据。它通过模拟生物视觉皮层的工作方式,能够有效提取图像中的特征。

1. 卷积运算

卷积(Convolution)是一种数学运算,它通过把一个小的滤波器(或称卷积核)在输入数据上滑动并计算加权和,来提取局部特征。CNN能够通过多层卷积自动提取从简单到复杂的特征表示,逐步构建起对输入数据的理解。

连续卷积

对于连续函数,卷积定义为:

(f*g)(t)=\int_{-\infty }^{+\infty }f(\tau )f(t-\tau )d\tau

离散卷积

对于离散信号,卷积定义为:

(f*g)[n]=\sum_{m=-\infty }^{\infty }f[m]g(n-m)

注意:而即使是同一尺度下,图像也可能包含多个有用的特征,为了同时提取它们,我们可以在同一层中使用多个不同的卷积核分别进行卷积运算。

这样,每个卷积核之间相互独立,可以各自发现不同的特征。由于不同的卷积核表示的是图像上同一个位置的不同特征

2. CNN的基本结构

CNN的具体结构通常包含以下几个主要层次:

2.1 输入层

  • 输入数据:作为CNN的输入,通常是二维图像(如灰度图和RGB图像),每个像素点用数值表示。

  • 图像尺寸:输入图像的大小可以是任意的,但常见的尺寸包括224x224、256x256等,用于标准化处理。

2.2 卷积层

  • 卷积核:一般是一个小尺寸的矩阵(例如3x3、5x5),负责滑动计算。每个卷积核可以学习不同的特征,如边缘、角点、纹理等。

  • 特征图(Feature Map):处理后的输出称为特征图,每个卷积核产生一个特征图,多个卷积核可以提取多个特征图,进而用来表示输入数据。

  • 步幅(Stride):卷积核每次滑动的步长,影响特征图的尺寸。

  • 填充(Padding):在输入图像的边缘添加额外的像素,以保持特征图的尺寸。常见的有“验证填充”(Valid Padding,表示无填充)和“相同填充”(Same Padding,保持输入输出大小相同)。

2.3 激活层

  • 激活函数:增加非线性,提高网络的学习能力。最常用的激活函数是 ReLU(Rectified Linear Unit),其公式为 。除了ReLU,其他激活函数如(sigmoid、tanh等) 也可使用。

2.4 池化层

  • 下采样:减少特征图的尺寸,从而降低计算复杂度和防止过拟合。常见的池化操作有:
    • 最大池化(Max Pooling):在特定窗口内取最大值。

    • 平均池化(Average Pooling):在特定窗口内取平均值。

  • 池化参数:相似于卷积层,步幅和窗口大小会影响池化层的输出尺寸。

2.5 全连接层

  • 展平:在进入全连接层之前,所有特征图会展平为一个一维向量。

  • 分类:通过全连接层将特征映射到具体的输出,比如图像分类的类别数量,最后使用Softmax激活函数来获取概率分布。

3. CNN的工作机制

CNN通过前向传播和反向传播两个过程来进行学习:

  • 前向传播:输入数据通过多个层次,逐层计算输出。每层利用卷积和激活函数获得特征,最后得到分类结果。

  • 反向传播:使用梯度下降法来优化网络中的参数,计算损失函数的梯度,并更新权重。常用的优化算法有Adam、SGD(带动量)、RMSprop等。

4. CNN的经典架构

以下是一些常见的卷积神经网络架构:

4.1 LeNet-5

特点:早期的CNN结构,通常用于手写数字识别,包含两个卷积层和若干个全连接层。 结构:输入层 → 卷积层(Conv1)→ 激活(tanH)→ 池化(S2)→ 卷积层(Conv2)→ 池化(S4)→ 全连接层 → 输出层。

4.2 AlexNet

特点:赢得2012年ImageNet大赛,采用了更深且更多的卷积层,使用ReLU作为激活函数,结构更加复杂。 结构:5个卷积层,3个全连接层,采用Dropout和数据增强来防止过拟合。

4.3 VGGNet

特点:通过增加卷积层数(通常为16层或19层),以及只使用3x3的小卷积核,取得了较好的分类性能。 结构:多个连续的卷积层和池化层,最后是几个全连接层。

4.4 ResNet(Residual Network)

特点:通过残差块(Residual Block)解决了深层网络训练中的梯度消失问题,允许网络更深。 结构:在每个残差块中,通过跳跃连接将输入直接添加到卷积的输出,从而促进了信息流动。

5. 应用领域

CNN被广泛应用于多个领域,尤其是在计算机视觉方面:

  • 图像分类:自动对图像进行标记(例如,猫、狗等)。

  • 目标检测:定位图像中的物体(例如,YOLO, Faster R-CNN)。

  • 语义分割:对图像中的每个像素进行分类,区分不同的物体(例如,FCN, U-Net)。

  • 人脸识别:自动识别和验证人脸,比如使用在安防系统中。

  • 医学图像分析:分析CT、MRI等医学影像,帮助诊断疾病。

文章持续跟新,可以微信搜一搜公众号  rain雨雨编程 ],第一时间阅读,涉及爬虫,机器学习,Java编程,实战项目等。

你可能感兴趣的:(深度学习,python,深度学习,卷积神经网络,神经网络)