多层感知器+卷积神经网络(CNN)

一、多层感知器

1.1 感知器

感知器(Perceptron)是一个简单的神经网络模型,感知器-神经网络的组成单元-神经元(神经元也叫做感知器),感知机是所有神经网络的基础,主要由全连接层组成,如下图:
在这里插入图片描述

1.2 多层感知器

多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:
在这里插入图片描述
多层感知机层与层之间是全连接的。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。

1.3 激活函数

激活函数(Activation Function)和感知器(Perceptron)在人工神经网络中各自扮演着重要的角色,它们共同决定了网络的性能和功能。
激活函数是一种添加到人工神经网络中的函数,它的主要作用是帮助网络学习数据中的复杂模式。激活函数在神经元的输入和输出之间引入了非线性关系,这使得神经网络能够处理复杂的问题,特别是那些非线性可分的问题。
如果没有激活函数,神经网络的每一层输出都将是上一层输入的线性组合,这将极大地限制网络的表达能力和学习能力。
在感知器中,激活函数起到了关键作用。它决定了感知器的输出如何根据输入特征进行变化。通过选择合适的激活函数,可以影响感知器的性能和学习能力。然而,由于感知器本身的局限性(只能处理线性可分问题),即使使用非线性激活函数,感知器的功能仍然会受到限制。
常见的激活函数包括sigmoid、tanh和ReLU等

1.3.1 sigmoid函数

在这里插入图片描述
sigmoid函数常被用作神经网络的激活函数,将变量映射到0和1之间。sigmoid函数可以将一个实数映射到(0,1)的区间,因此它也可以用来做二分类。

sigmoid函数也存在一些缺点:

  1. 当输入值趋于正无穷或负无穷时,梯度会趋近零,从而发生梯度弥散现象,导致在网络中难以训练,尤其在深度网络中。
  2. sigmoid函数的输出恒为正值,不是以零为中心的,这会导致权值更新时只能朝一个方向更新,从而影响收敛速度。
  3. sigmoid函数的计算量较大,计算成本高昂,可能导致计算机运行速度较慢。

1.3.2 tanh函数

在这里插入图片描述
与sigmod的区别是,tanh是0的均值,因此在实际应用中tanh会比sigmod更好。
在具体应用中,tanh函数相比于Sigmoid函数往往更具有优越性,这主要是因为sigmoid函数在输入处于[-1,1]之间时,函数值变化敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态。
与sigmoid函数相比,tanh函数虽然在值域上有所改进(从(0,1)变为(-1,1)),但在深度神经网络中仍然可能存在梯度消失的问题。

1.3.3 ReLU函数

在这里插入图片描述
ReLU函数具有多个优点,这使其成为神经网络中常用的激活函数:

  1. 计算效率:ReLU函数具有非常简单的数学形式,因此计算速度非常快。与sigmoid和tanh等函数相比,ReLU函数不需要进行复杂的指数运算,这有助于加速神经网络的训练过程。
  2. 稀疏性:ReLU函数可以将输入值映射到零,使得神经网络中的某些神经元在训练过程中变为非激活状态(即它们的输出为零)。这种特性有助于网络学习到输入数据的稀疏表示,从而提高模型的泛化能力。
  3. 缓解梯度消失问题:与sigmoid和tanh函数相比,ReLU函数在正值区域具有恒定的梯度(即梯度为1),这有助于缓解深度神经网络中的梯度消失问题。梯度消失是指在训练过程中,由于梯度逐渐接近于零,导致模型参数无法得到有效更新。

然而,ReLU函数也存在一些缺点:

  1. Dead ReLU问题:由于ReLU函数在输入为负时输出为零,如果某些神经元在训练过程中的梯度始终为零(例如,由于权重初始化不当或学习率过大),这些神经元将永远不会被激活,从而导致网络性能下降。这被称为Dead ReLU问题。
  2. 无界性:ReLU函数的输出是无界的,这可能导致某些神经元的输出值非常大,从而影响网络的稳定性。

为了解决ReLU函数存在的问题,研究者们提出了多种改进版本的ReLU函数,如Leaky ReLU、PReLU、ELU等。这些函数通过引入一个小的非零梯度值或在负值区域使用其他形式的激活函数来缓解Dead ReLU问题,并提高模型的性能。(下图为Leaky ReLU函数)
在这里插入图片描述
Leaky ReLU通过在输入为负时引入一个小的非零斜率来避免“死亡ReLU”
在这里插入图片描述
Leaky ReLU可以防止神经元在训练过程中永远不被激活,从而提高了神经网络的性能。与ReLU相比,Leaky ReLU的计算复杂度并没有显著增加,因此它仍然能够保持较高的计算效率

二、卷积神经网络(CNN)

2.1 卷积神经网络基础

卷积神经网络的基本结构包括输入层、卷积层、池化层、全连接层和输出层。

  • 输入层:输入信息
  • 卷积层:卷积神经网络的核心,提取图像的特征。
  • 池化层:主要用于降低特征图的空间分辨率,防止过拟合,将数据维度减小,提取出最显著的特征。
  • 全连接层:将池化层输出的特征映射连接起来,汇总卷积层和池化层得到的图像的底层特征和信息。
  • 输出层:根据全连接层的信息得到概率最大的结果

2.2 卷积神经网络结构

2.2.1 输入层

在卷积神经网络中,输入层是网络的起始点,负责接收原始数据,如图像或语音等,并将其转换为网络可以处理的形式。
输入层通常会对原始数据进行一些预处理操作。对于图像数据,包括去均值、归一化等步骤。这些预处理操作有助于提升网络的训练效果和性能。 此外,输入层还需要确保输入数据具有统一的格式和大小,以便后续卷积层能够正确处理。

2.2.2 卷积层

卷积层是CNN最重要的部分。它与传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块。卷积层被称为过滤器(filter)或者内核(kernel),Tensorflow的官方文档中称这个部分为过滤器(filter)。
卷积过程:
在这里插入图片描述
在这里插入图片描述

2.2.3 池化层

池化层不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络参数的目的。使用池化层既可以加快计算速度也可以防止过拟合。池化层filter的计算不是节点的加权和,而是采用最大值或者平均值计算。使用最大值操作的池化层被称之为最大池化层(max pooling)(最大池化层是使用的最多的磁化层结构)。使用平均值操作的池化层被称之为平均池化层(mean pooling)。
下图分别表示最大池化层、平均池化层:

  • 最大池化

顾名思义,最大池化就是每次取正方形中所有值的最大值,这个最大值也就相当于当前位置最具有代表性的特征,这个过程如下所示:
在这里插入图片描述

  • 平均池化

平均池化就是取此正方形区域中所有值的平均值,考虑到每个位置的值对于此处特征的影响,平均池化计算也比较简单,整个过程如下图所示:
在这里插入图片描述

2.2.4 全连接层

在经过多轮卷积层和池化层的处理之后,最后一般会由1到2个全连接层来给出最后的分类结果。经过几轮卷积层和池化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。我们可以将卷积层和池化层看成自动图像特征提取的过程。在提取完成之后,仍然需要使用全连接层来完成分类任务。

2.2.5 输出层

卷积神经网络的输出层将全连接层得到的一维向量经过计算后得到识别值的一个概率,这个计算可能是线性的,也可能是非线性的。在深度学习中,我们需要识别的结果一般都是多分类的,所以每个位置都会有一个概率值,代表识别为当前值的概率,取最大的概率值,就是最终的识别结果。在训练的过程中,可以通过不断地调整参数值来使识别结果更准确,从而达到最高的模型准确率。

总结

以上就是本篇博客的全部内容了,由于本人水平有限,有错的地方还望读者指正,谢谢大家!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值