深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析

卷积神经网络(Convolutional Neural Network, CNN)

  • 原理 :CNN主要由卷积层、池化层和全连接层组成。卷积层通过卷积核在输入数据上进行卷积运算,提取局部特征;池化层则对特征图进行下采样,降低特征维度,同时保留主要特征;全连接层将特征图展开为一维向量,并进行分类或回归计算。CNN利用卷积操作实现局部连接和权重共享,能够自动学习数据中的空间特征。

  • 适用场景 :广泛应用于图像处理相关的任务,包括图像分类、目标检测、图像分割等。此外,也常用于处理具有网格状结构的数据,如文档数据。

  • 优势与局限 :

优势 :对二维结构数据有良好的处理能力,能够有效地提取局部特征;权值共享可减少参数数量,降低计算复杂度和模型训练难度。

局限 :主要适用于处理具有二维结构的数据,如图像等;对输入数据的位置变化敏感,可能无法很好地处理位置变化大的数据。

二、卷积神经网络(Convolutional Neural Networks, CNN)是一种深度学习模型,广泛应用于图像和视频识别、自然语言处理等领域。CNN通过模仿生物视觉皮层的结构和功能来处理数据,具有强大的特征提取和分类能力。

图片

CNN由输入层、卷积层、激活函数、池化层、归一化层、全连接层、输出层、损失函数、优化器等关键部分组成。

下面,将详细介绍下CNN各个部件的作用。

输入层

这是网络的第一层,接收原始数据,在图像识别任务中,输入层通常接收的是图像数据。

输入层通常接收三维数据,对于图像来说,这通常是高度、宽度和颜色通道(如RGB三通道)。

图片

图像通常由三个颜色通道(红、绿、蓝)组成,形成一个二维矩阵,数值表示像素的强度值。

在某些情况下,输入数据可能是二维的,例如灰度图像,或者四维的,例如视频帧或具有时间维度的多张图像。

输入层不涉及任何计算操作,它仅仅是数据的入口点。输入数据的尺寸(例如,宽度、高度和通道数)需要与网络模型的期望输入尺寸相匹配。在实际应用中,输入数据通常需要经过预处理步骤,如归一化、中心化等,以提高模型的训练效率和性能。

在输入层,每个像素点的值都被视作一个特征,这些特征将被传递到后续的卷积层进行特征提取。预处理后的数据不仅提高了数据的质量和可用性,还为网络的深层结构提供了更好的初始信息,使其能够更有效地进行特征学习。

入层的设计对于整个CNN的性能至关重要,因为输入数据的质量直接影响到模型的训练效果和最终的识别准确率。通过对输入数据进行精心的预处理,可以确保网络在训练过程中能够专注于学习图像中的关键特征,而不是被无用或冗余的信息所干扰。

卷积层

最开始,看到“卷积”就想到了数学当中的卷积运算,它涉及两个函数:一个输入函数(信号)和一个卷积核(或滤波器)。卷积运算的结果是一个新的函数,该函数表达了一个函数的形状如何被另一个函数修改。

额.....,看完是不是很懵?那我们看看卷积究竟是干什么用的。一句话概括就是“它在网络中用于提取输入数据的特征。”

毕竟,原始的图像特征太大了,而且有很多无用的信息,需要进一步的提取到关键的信息。

图片

卷积层通过滤波器(或称为卷积核)扫描图像,对每个局部区域的像素进行加权求和,生成特征图(feature map)。这一过程可以捕捉到图像的局部特征,如边缘、纹理等。

卷积的基本概念

  1. 卷积核(Convolutional Kernel):卷积核是一个小的矩阵,它在输入数据(通常是图像)上滑动,以提取局部特征(如上图上面的绿色小正方形)。每个卷积核可以捕捉到不同的特征,如边缘、纹理或更复杂的模式。

  2. 卷积操作(Convolution Operation):卷积操作涉及将卷积核与输入数据的局部区域进行元素乘积和求和,这个过程称为“点积”。卷积核在输入数据上滑动,计算每个位置的点积,生成一个新的二维数组,称为特征图(Feature Map)。

    图片

  3. 滑动窗口(Sliding Window):卷积核在输入数据上滑动的过程可以看作是一个滑动窗口。窗口在输入数据的每个位置停留,计算卷积核与该位置的局部区域的点积。

  4. 步长(Stride):步长定义了卷积核在输入数据上滑动时的步长。较小的步长意味着卷积核移动的距离较小,这将导致输出特征图的分辨率更高。

  5. 填充(Padding):为了控制输出特征图的大小,可以在输入数据的边缘添加额外的像素,这个过程称为填充。常见的填充方式包括零填充(Zero Padding),即在边缘添加零值像素。

  6. 特征图(Feature Map):卷积操作的输出是一个二维数组,称为特征图。每个特征图代表了输入数据中特定特征的分布情况。

  7. 多通道(Multi-channel):在处理彩色图像时,输入数据通常有多个通道(如RGB三个通道)。卷积核也可以设计为多通道,以便在每个通道上独立地提取特征。

  8. 卷积层的输出尺寸(Output Size)

    卷积层的输出尺寸可以通过以下公式计算:输出尺寸=⌊输入尺寸+2×填充−卷积核尺寸步长⌋+1

    其中,输入尺寸是输入数据的尺寸,填充是添加到输入数据边缘的像素数,卷积核尺寸是卷积核的大小,步长是卷积核滑动的步长。

来看下面这个例子:

一个6*6的特征图,无填充,经过一个步长为1,卷积核为3的卷积,得到一个4*4的特征图。

输出尺寸=⌊6+2×0−3⌋\1+1=4

感受野

在卷积神经网络中,感受野(Receptive Field)是一个重要的概念,它描述了网络中某个神经元对输入图像的哪些部分是敏感的。换句话说,感受野定义了网络中一个神经元在进行计算时,实际上“看到”了输入数据的多少区域。如下图标红的部分就是感受野:

图片

感受野

1. 局部感受野:

   在单个卷积层中,每个神经元只对输入图像的一个局部区域进行响应,这个局部区域就是局部感受野。例如,一个3x3的卷积核在图像上滑动时,每次只覆盖3x3的区域,如上图所示。

2. 跨层感受野:

   随着网络层数的增加,每个神经元的感受野也会随之增大。这是因为每一层的卷积操作实际上是在前一层的感受野基础上进行的。因此,一个位于较深层的神经元可以“看到”输入图像的更大区域。

感受野的大小可以通过卷积层的参数(如卷积核大小、步长和填充)来计算。

对于一个多层的CNN,感受野的大小可以通过以下公式计算:感受野大小=(1+(L−1)×步长)×卷积核大小−2×(填充×(L−1))其中,L是从输入层到当前层的层数

3. 感受野的作用:

   - 特征提取:感受野允许网络在不同层级上提取不同尺度的特征。在较浅的层,网络可能提取边缘和纹理等低级特征;在较深的层,网络可能提取更复杂的模式,如物体的部分或整体。

   - 不变性:通过设计,CNN可以对输入图像的平移、缩放等变化保持不变性。这意味着即使输入图像中的物体位置或大小发生变化,网络仍然能够识别出这些物体。

参数共享

参数共享指的是在模型的不同部分使用相同的参数。在CNN中,这意味着同一个卷积核(或滤波器)的参数在输入数据的不同位置上是共享的。这种共享减少了模型的复杂度,因为无论卷积核在图像的哪个位置进行操作,都使用同一组参数。

参数共享基于特征的局部性假设,即相邻的特征之间具有相似的统计特性。因此,可以使用相同的参数来处理它们。这种方法使得模型能够更好地捕捉数据中的局部模式,提高模型的表达能力和泛化能力

参数共享的优势:

  • 减少参数数量:通过共享参数,模型可以学习到一组特征,并在整个输入图像上应用这组特征,有效提取图像的局部特征,同时显著减少了网络的参数数量。

  • 提高训练速度:由于参数数量的减少,模型的训练速度得到提升,因为需要更新的权重更少,从而减少了计算量。

  • 减少过拟合风险:参数共享可以减少过拟合的风险,因为模型的参数数量大大减少,使得模型更加简洁。

  • 提高模型效率:共享参数减少了网络的参数数量,提高了计算的效率,节省了存储空间和计算资源。

激活函数

激活函数在CNN中扮演着至关重要的角色,它们的主要作用是引入非线性因素,使得网络能够学习和模拟复杂的函数映射关系。在深度学习中,如果没有激活函数,无论神经网络有多少层,最终都相当于一个线性变换,这将极大地限制网络的表达能力和复杂性。

激活函数的引入,使得神经网络可以执行非线性分类,解决线性不可分问题。例如,在图像识别中,对象的识别往往涉及到复杂的特征提取,这些特征并不是简单的线性关系,而是需要通过非线性变换来更好地表示。

常用激活函数

在CNN中,有几种常用的激活函数,它们各自具有不同的特点和应用场景。

图片

  • ReLU (Rectified Linear Unit): ReLU是当前最流行的激活函数之一,其公式为f(x)=max⁡(0,x)。

    ReLU函数在正区间的导数恒为1,这使得在梯度下降过程中,正权重的神经元不会被抑制,从而加快了学习速度。此外,ReLU在计算上非常高效,因为它仅涉及一个阈值操作。然而,ReLU也存在“死亡ReLU”问题,即当输入为负时,梯度为0,导致部分神经元不再更新。

  • Sigmoid: Sigmoid函数的公式为f(x)=11+e−x,它的输出范围在(0, 1)之间,这使得它在处理二分类问题时非常有用,如输出层的激活函数。

    然而,Sigmoid函数在输入值较大或较小的时候,梯度接近0,这会导致梯度消失问题,从而影响网络的学习能力。

  • Tanh (Hyperbolic Tangent): Tanh函数是Sigmoid函数的变形,其公式为f(x)=tanh⁡(x)=ex−e−xex+e−x,输出范围在(-1, 1)之间。

    与Sigmoid类似,Tanh函数也存在梯度消失的问题&#x

评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值