神经网络基础

多层感知器

多层感知器(MLP)是一种经典的前向型人工神经网络模型,它由输入层、一个或多个隐藏层以及输出层组成

以下是关于多层感知器的一些关键信息:

  1. 结构特点:多层感知器模拟了生物神经元的结构和工作原理,每一层包含若干个神经元,每个神经元都有自己的权重和偏置。这些神经元通过激活函数对输入数据进行处理,并将结果传递给下一层。
  2. 激活函数:激活函数负责将神经元的加权输入转换为输出,常用的激活函数包括Sigmoid、ReLU、tanh等。激活函数的非线性特性使得MLP能够捕捉复杂的数据模式。
  3. 训练算法:多层感知器通常使用反向传播算法进行训练。该算法通过计算损失函数对权重的梯度,并采用梯度下降法或其他优化方法来更新权重,以最小化预测误差。
  4. 应用范围:MLP可以应用于各种分类和回归问题,例如图像识别、语音识别、股票预测等领域。由于其强大的非线性建模能力,MLP在处理复杂问题时表现出色。
  5. 优缺点:多层感知器的优点是能够自动学习特征表示,无需手工设计特征。缺点包括容易过拟合、训练时间长、调参困难等。随着深度学习的发展,MLP已经被更复杂的神经网络结构所取代,但它仍然是理解神经网络基础的重要模型。

而基于统计的连接主义的模型将认知所需的功能属性结合到模型中来,通过模拟生物神经网络的信息处理方式来构建具有认知功能的模型。类似于生物神经元与神经网络,这类模型具有三个特点:拥有处理信号的基础单元    处理单元之间以并行方式连接    处理单元之间的连接是有权重的。这一类模型被称为人工神经网络多层感知器是最为简单的一种。

神经元

神经元是基本的信息操作和处理单位。 它接受一组输入,将这组输入加权求和后,由激活函数来计算该神经元的输出。

输入

一个神经元可以接受一组张量作为输入 x={x_1,x_2,…,x_n}^⊺

输出

激活函数的输出o即为神经元的输出。 一个神经元可以有多个输出o_1,o_2,…,o_m对应于不同的激活函数f_1,f_2,…,f_m

连接权值

连接权值向量为一组张量 W={w_1,w_2,…,w_n}, 其中w_i对应输入x_i的连接权值;神经元将输入进行加权求和 sum=∑i▒wixi 写成向量形式 sum=Wx

偏置

有时候加权求和时会加上一项常数项b作为偏置;其中张量b的形状要与Wx的形状保持一致 sum=Wx+b

激活函数

概念

激活函数f(∙)被施加到输入加权和sum上,产生神经元的输出;这里,若sum为大于1阶的张量,则f(∙)被施加到sum的每一个元素上 o=f(sum) 常用的激活函数有SoftMax、Sigmoid、Tanh、ReLU等。

在神经网络中,全连接层只是对上层输入进行线性变换,而多个线性变换的叠加仍然是一个线性变换,即含有多个全连接层的神经网络与仅含输出层的单层神经网络等价

解决问题的一个方法是,在全连接层后增加一个非线性的变换,将非线性变换后的结果作为下一个全连接层的输入。

这个非线性函数被称为激活函数(Activation Function),神经网络可以逼近任意函数的能力与激活函数的使用不可分割。 常见的激活函数有ReLU、Sigmoid、TanhSoftmax等。

激活函数是神经网络中用于引入非线性的函数,它们对于模型学习复杂和非线性的数据模式至关重要。以下是一些常见的激活函数及其特点:

  • Sigmoid函数:Sigmoid函数是最早的激活函数之一,它将输入值映射到0和1之间,形成S形曲线。它的优点在于输出可以被视为概率,适合二分类问题。然而,Sigmoid函数在输入值非常大或非常小的时候会出现梯度消失的问题,这会使得神经网络难以训练。
  • Tanh函数:Tanh函数类似于Sigmoid函数,但输出值范围在-1和1之间。它的优点是输出值以0为中心,这意味着正负样本的激活值具有对称性。但是,Tanh函数同样存在梯度消失的问题。
  • ReLU函数:ReLU(Rectified Linear Unit)函数是目前非常流行的激活函数,它将负值设为0,而正值保持不变。ReLU函数的优点在于其简单性和计算效率,它在正向传播过程中不会 saturate,缓解了梯度消失问题。但它的缺点是当输入值为负时,ReLU函数的导数为0,这可能导致某些神经元永远不会被激活,称为“死神经元”。
  • Leaky ReLU函数:为了解决ReLU函数的“死神经元”问题,Leaky ReLU函数对负值输入给予了一个非零的小斜率。这样即使输入值为负,神经元仍然有一定的激活,从而避免了“死神经元”的问题。

ReLu函数

线性整流函数(Rectified Linear Unit,ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。 ReLU函数的表达式如式所示,其中x为神经元的输入值。

由图可知,当输入为正时,ReLU函数的输入与输出均始终保持线性关系,当输入趋于正无穷时,输出也趋于正无穷;当输入为负值时,输出为0。

relu类的语法格式如下。 torch.nn.functional.relu(input, inplace=False)

relu类的常用参数说明如表所示。

ReLU函数的优点如下。

反向传播时,可以避免梯度消失。 使一部分神经元的输出为0,形成稀疏网络,减少了参数的相互依存关系,缓解了过拟合问题的发生求导简单,整个过程的计算量节省很多

ReLU的缺点如下。 左侧神经元为0,导致部分神经元死亡,不再更新。 输出非负,所有参数的更新方向都相同,可能导致梯度下降时出现震荡

Leaky ReLU函数

Leaky ReLU激活函数是ReLU激活函数的变式,主要是为了修复ReLU激活函数中负轴为0导致的问题。

Leaky ReLU激活函数的负轴保留了非常小的常数,使得输入信息小于0时,信息得到保留。

Leaky ReLU函数的表达式如式所示,其中x为神经元的输入值, α为非负的小数。

几何表达式 

leaky_relu类的语法格式如下,leaky_relu类的常用参数说明与torch.nn.functional.relu类一致。 torch.nn.functional.leaky_relu(input, negative_slope=0.01, inplace=False)

 Tanh函数

Tanh函数是双曲正切激活函数。

Tanh函数的表达式如式所示,其中x为神经元的输入值。

  

由图可知,当横坐标值趋于负无穷时,纵坐标值无限趋近于-1。

当横坐标值趋于正无穷时,纵坐标值无限趋近于1。

当输入的绝对值大于5时,输出几乎是平滑的并且梯度较小,不利于权重更新。

Tanh函数跟Sigmoid函数的区别在于输出间隔,Tanh的输出间隔为2,并且整个函数以0为中心。 在一般的二元分类问题中,Tanh函数常用于隐藏层,而Sigmoid函数常用于输出层。 但这并不是固定的,需要根据特定问题进行调整。

Tanh优点如下。 函数输出以(0,0)为中心。 收敛速度相对于Sigmoid更快。

Tanh缺点如下。 Tanh并没有解决Sigmoid梯度消失的问题。 含有较多的幂运算,增加计算所需的时间。

tanh类的语法格式如下,其中参数“input”表示输入值。 torch.nn.functional.tanh(input)

Sigmoid函数

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。

在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0到1之间。

Sigmoid函数的表达式如式所示,其中x为神经元的输入值。

由图可知,纵坐标的范围在0~1的区间内,随着横坐标值从左往右增大,曲线的纵坐标值从0无限趋近于1,表示Sigmoid函数的输出范围是0到1,即对每个神经元的输出进行了归一化。 由于概率的取值范围是0到1,因此Sigmoid函数非常适合用在以预测概率作为输出的模型中。

Sigmoid优点如下

Sigmoid的取值范围为(0, 1),而且是单调递增,比较容易优化。

Sigmoid求导比较容易,可以直接推导得出。

Sigmoid缺点如下

 Sigmoid函数收敛比较缓慢。

由于Sigmoid是软饱和,容易产生梯度消失,对于深度网络训练不太适合,由上页图可知,当x趋于无穷大时,会使导数趋于0。

sigmoid类的语法格式如下,其中参数“input”表示输入值。 torch.nn.functional.sigmoid(input)

Softmax函数

Softmax函数常在神经网络输出层充当激活函数,将输出层的值映射到(0,1)区间,将神经元输出构造成概率分布,用于多分类问题中,Softmax激活函数映射值越大,则真实类别可能性越大。 Softmax函数的表达式如式所示,其中i为输入神经元的第i个元素。

  

  由式可知,Softmax函数为指数形式的函数,且映射后的数值受映射前所有数值的影响。

Softmax优点如下

指数函数求导的时候比较方便,加快模型的训练。

能够将输出值拉开距离,使不同类间的区别更明显。

Softmax缺点如下

通过Softmax函数计算得到的数值有可能会变得过大从而导致溢出。

输入softmax类的语法格式如下。 torch.nn.functional.softmax(input, dim=None, _stacklevel=3, dtype=None) softmax类的常用参数及其说明如表所示。均为负时,可能会出现梯度为0。

神经网络

神经网络是一个有向图,以神经元为顶点,神经元的输入为顶点的入边,神经元的输出为顶点的出边。 因此神经网络实际上是一个计算图,直观地展示了一系列对数据进行计算操作的过程。

神经网络是一个端到端的系统,这个系统接受一定形式的数据作为输入,经过系统内的一系列计算操作后,给出一定形式的数据作为输出;系统内的运算可以被视为一个黑箱子,这与人类的认知在一定程度上具有相似性。 通常地,为了直观起见,人们对神经网络中的各顶点进行了层次划分。

层次划分

输入层 接受来自网络外部的数据的顶点,组成输入层。

输出层 向网络外部输出数据的顶点,组成输出层。

隐藏层 除了输入层和输出层以外的其他层,均为隐藏层。

训练

训练 神经网络中计算操作被预定义,而要使得输入数据通过这些操作之后得到预期的输出,则需要根据一些实际的例子,对神经网络内部的参数进行调整与修正;这个调整与修正内部参数的过程称为训练,训练中使用的实际的例子称为训练样例。

监督训练 在监督训练中,训练样本包含神经网络的输入与预期输出;对于一个训练样本〈X,Y〉, 将X输入神经网络,得到输出Y′;我们通过一定的标准计算Y^′与Y之间的训练误差,并将这种误差反馈给神经网络,以便神经网络调整连接权重及偏置。

非监督训练 在非监督训练中,训练样本仅包含神经网络的输入。

常用的网络构建方法

构建网络的常用方法可能包括以下几种:

  1. 数据结构的选择:网络可以通过不同的数据结构来表示,例如线性结构、非线性结构、复杂网络的数组表示、邻接表表示等。这些数据结构有助于定义网络中节点的关系和网络的整体架构。
  2. 图论方法:图论提供了一套成熟的理论和方法来研究网络结构,包括使用邻接矩阵、邻接表等来描述网络的连接关系。此外,还有逆邻接表、十字链表、邻接多重表、前向星等其他表示方法,这些方法在不同场景下有其独特的优势。
  3. 深度学习架构:在深度学习领域,有许多经典的网络架构,如VGG-16、ResNet、Inception等,这些架构在计算机视觉等领域取得了巨大成功。学习这些架构可以帮助理解网络构建的方法和原理。
  4. 统计物理方法:近年来,统计物理的概念和方法也被应用于复杂网络的建模和计算,如使用统计力学、自组织理论、临界和相变理论、渗流理论等来分析和理解网络的特性。
  5. 编程框架:在实际的网络构建过程中,可以使用各种编程框架和库,如TensorFlow、PyTorch等,它们提供了构建、编译、训练、评估和使用网络模型的工具和方法。

隐含层是指除了输入、输出层以外的其他层,是模型的黑箱部分,通常可解释性较差。 值得注意的是,如果单个隐含层网络不能满足实际生产需求,那么可在网络中设置多个隐含层。 深度学习神经网络中的常见的网络层有卷积层、池化层、正则化层、归一化层和全连接层网络层的先后顺序通常是,卷积层优先构造,池化层放置在卷积层之后,正则化层和归一化层放置在整个网络中间偏后的位置,全连接层放置在网络的后端或多个卷积层后。 在PyTorch框架中,常用的构建网络的方法有继承Module类和使用Sequential容器。

Module类是PyTorch框架提供的一个基类,在搭建神经网络时候可以通过继承Module类,使得搭建网络的过程变得简单。 继承Module类构建网络,其中__init__()方法初始化了网络中需要使用的网络层,完全相同的网络层可以仅初始化一次,但多次进行调用,forward()方法用于设置网络中数据的传播,并返回网络的输出。 从Layer列中可以查看所构建网络的结构,从Output Shape列中可以查看每层网络输出数据的维度。 从Param列中可以查看每层网络的参数个数。

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,主要用于图像识别和计算机视觉任务。它的基本概念包括以下几个方面: 1. 卷积(Convolutional Layer):卷积是CNN的核心组成部分,通过使用一系列可学习的滤波器(也称为卷积核)对输入图像进行卷积操作,提取图像的特征。每个滤波器会在输入图像上滑动,并计算出对应位置的卷积结果,生成一个特征图。 2. 池化(Pooling Layer):池化用于减小特征图的空间尺寸,同时保留重要的特征信息。常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling),它们分别选取局部区域中的最大值或平均值作为池化结果。 3. 激活函数(Activation Function):激活函数引入非线性变换,增加模型的表达能力。在卷积神经网络中,常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。激活函数通常被应用在卷积之后。 4. 全连接(Fully Connected Layer):全连接将前一的所有神经元与当前的所有神经元相连接,每个连接都有一个权重。全连接通常用于将卷积和池化提取的特征映射转化为最终的分类结果。 5. Dropout:Dropout是一种正则化技术,用于减少模型的过拟合。在训练过程中,随机将一部分神经元的输出置为0,可以有效地防止网络对某些特定特征过度依赖。 6. 卷积神经网络的训练:CNN的训练通常使用反向传播算法(Backpropagation)进行参数更新。通过将输入数据和对应的标签进行前向传播和反向传播,不断调整网络参数,使得网络能够逐渐学习到更好的特征表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值