Python工程应用-数据分析基础与实践课件-第10章_第1页
Python工程应用-数据分析基础与实践课件-第10章_第2页
Python工程应用-数据分析基础与实践课件-第10章_第3页
Python工程应用-数据分析基础与实践课件-第10章_第4页
Python工程应用-数据分析基础与实践课件-第10章_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章概论西华大学机器学习第十章人工神经系统XXX学校XXX2022目录Contents从感知机到多层感知机激活函数和损失函数反向传播算法案例:手写数字识别

知识引入3节点:输出函数(激活函数)人工神经网络:节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重网络的输出则取决于网络的结构、网络的连接方式、权重和激活函数。

本章知识图谱4从感知机到多层感知机一1.1神经元和感知机6生物神经网络的简化模型1.1神经元和感知机7神经元模型MP的简单结构

我们使用a来表示输入、w来表示权重、箭头表示传递加权运算、z表示输出,所以最后的输出为输入和权重的线形加权和再外层叠加一个sgn函数(在MP模型中sgn函数为取符号函数,此函数的输入大于0则输出1,反之输出0)。所以最后这个神经元的公式应该为:

1.1神经元和感知机8

我们最后对一个神经元进行扩展,可以将sum和sgn函数合并为函数f,多个输出箭头表示可以连接后面多个神经元但是输出值完全一样。神经元在之后的一个神经网络中更多的被称为一个单元或者节点。

神经网络中的节点就是一个个神经元节点组成,最后我们需要去优化这些网络中节点的权重值,来得到我们所预期的结果。神经网络通过计算层的多少可以分为单层神经网络和多层神经网络,比如整个网络中只有一个计算层就为单层神经网络,而整个网络中有两个或者以上的计算层就为多层神经网络。1.1神经元和感知机9感知器模型示意图:

其中两个输出公式实质上就是线形代数方程组,所以最后的输出公式可以写成:

1.2多层感知机10

逻辑与、逻辑与非以及逻辑或的问题都可以用一根直线将不同的两类分开,而对于最后一个逻辑异或问题却不能用一根直线进行类别划分。由此可见异或问题是线性不可分的,单层感知机就没办法解决“异或”问题。

这个问题利用多层感知机就可以解决了。所谓多层感知机,就是在输入层和输出层之间加入一个或多个隐层,以形成能够将样本正确分类的凸域。1.2多层感知机11

其每一步的计算公式与上面介绍的单层神经网络没有太多区别,计算公式如下:

1.2多层感知机12不同结构的感知机的分类能力比较

随着隐层层数的增多,凸域将可以形成任意的形状,因此可以解决任何复杂的分类问题。实际上,Kolmogorov理论指出:双隐层感知器就足以解决任何复杂的分类问题。激活函数和损失函数二2.1激活函数14

在人工神经网络中,激活函数就是负责将神经元输入映射到输出端的函数。在神经元进行加权求和计算后,还需要经过一个函数的变换,就像前面介绍关于神经元时,最简单的sgn函数就是一个激活函数。

激活函数最重要的要求就是不能是线形的。对于一个神经网络,如果使用线性的激活函数,那么无论这个网络的层数如何增加,最终都可以把所有层的计算结合为一层的矩阵计算,本质上就成了一个感知器。

激活函数需要给神经元引入非线性因素,才能使得神经网络可以任意逼近任何非线性的情况,从而应用于多样的非线性模型中去。常用的激活函数有很多,如Sigmoid函数、Tanh函数、ReLU函数和Softplus函数等。2.1激活函数151.Sigmoid函数

该函数是将取值为(−∞,+∞)的数映射到(0,1)之间。sigmoid函数的公式以及图形如下:

sigmoid函数也叫logistic函数,用于隐藏层的输出,输出在(0,1)之间,它可以将一个实数映射到(0,1)的范围内,可以用来做二分类。常用于在特征相差比较复杂或是相差不是特别大的时候效果比较好。sigmoid函数的计算量大,反向传播求误差梯度时,求导涉及到除法。反向传播的时候,也很容易出现梯度消失的情况,从而无法完成深度神经网络的训练。2.1激活函数162.tanh函数tanh函数是将取值为(−∞,+∞)的数映射到(−1,1)之间,其公式与图形为:

tanh曲线又称为双切正切曲线,其取值范围为[-1,1],tanh在特征相差明显的时候效果会好,在循环过程中,会不断的扩大特征效果,与sigmoid函数相比,tanh是0均值的,因此实际应用中,tanh一般要比sigmoid函数更好。2.1激活函数173.Relu函数ReLU函数又称为修正线性单元(RectifiedLinearUnit),是一种分段线性函数,其弥补了sigmoid函数以及tanh函数的梯度消失问题。ReLU函数的公式以及图形如下:

ReLU函数的优点包括在输入为正数的时候(对于大多数输入z空间来说),不存在梯度消失问题。计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多(sigmod和tanh要计算指数,计算速度会比较慢)。ReLU函数的缺点是当输入为负时,梯度为0,会产生梯度消失问题。2.1激活函数184.Softplus函数Softplus函数相当于平滑了的ReLU函数,其公式以及图形如下,图中实线部分是ReLU曲线,虚线部分是Softplus曲线:

2.2损失函数19

在人工神经网络中,损失函数用来评估网络模型预测结果与观测结果间概率分布的差异。一个输入经过网络模型后输出的结果和实际这种输入应该产生的结果之间的差距需要通过一个损失函数来衡量。

而损失函数的选取也同样需要考虑实际情况。对于一个分类任务来说,一般可以使用距离损失函数、交叉熵损失(CrossEntropyLoss)等,而回归任务中,一般有均方误差(MSE)、平均绝对误差(MAE)等。2.2损失函数201.距离损失函数

损失函数对应着最小平方误差,模型预测G(x)和真实值y的距离越大,损失就越大,反之则越小。

2.交叉熵损失函数

其中,G(x)为概率向量。反向传播算法三3.1反向传播算法22

对于含有隐藏层的多层神经网络来说,如何确定神经网络的权重参数一直是一个比较困难的事情。自从出现了反向传播(BackPropagation,BP)算法,这个问题才得到了一定程度的解决。反向传播是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。反向传播要求人工神经元的激励函数可微。3.1反向传播算法23反向传播算法主要由两个阶段组成:激励传播与权重更新。

激励传播:

前向传播阶段:将训练输入送入网络以获得激励响应

反向传播阶段:将激励响应同训练输入对应的目标输出求差,从而获得输出层和隐藏层的响应误差。

权重更新:

首先,将输入激励和响应误差相乘,从而获得权重的梯度;

然后,将这个梯度乘上一个比例并取反后加到权重上。

激励传播与权重更新可以反复循环迭代,直到网络对输入的响应达到满意的预定的目标范围为止。

总的来说,BP算法利用梯度来更新结构中的参数,使得损失函数最小化。手写数字识别四4案例手写数字识别25

本小节将利用飞桨框架实现案例4-2和9-1出现过的手写数字识别案例。关于飞桨框架的安装和基本使用方法请参见第二章相关章节。使用飞桨完成手写数字识别任务的代码结构如下图所示:4.1数据准备26

和别的案例一样,首先需要导入数据。飞桨中提供了自动加载MINST数据的模块paddle.vision.datasets.MNIST,可以通过下面的方法加载训练集和测试集:训练集:paddle.vision.datasets.MNIST(mode='train',transform=transform)测试集:paddle.vision.datasets.MNIST(mode='test',transform=transform)

数据准备工作需要导入必要的包,准备训练集和测试集数据,以及做一些必要的数据处理。4.2网络配置27

本案例定义了一个简单的三层网络,两个大小为100的隐层和一个大小为10的输出层。因为MNIST数据集是手写0到9的灰度图像,类别有10个,所以最后的输出大小是10。输出层的激活函数是Softmax,所以最后的输出层相当于一个分类器。加上一个输入层,最终的结构是:输入层-->>隐层-->>隐层-->>输出层。4.3模型训练28

定义几个用于模型训练结果展示的函数,然后再利用动态图进行模型训练,同时将效果好的模型保存起来。

代码运行结果:4.4模型使用29代码运行结果:

预测之前需要对图像进行预处理,首先进行灰度化,然后压缩图像大小为28*28,接着将图像转换成一维向量,最后再对一维向量进行归一化处理。注:可以尝试调整模型的参数,看看哪种参数情况下能够得到更好的结果。同时还可以尝试调整神经网络的结构,以达到更好的分类效果。

思考题30

请利用人工神经网络分类螺旋数据集。螺旋线数据集可以通过以下代码构建。importnumpyasnpimportpandasaspdN=100#每个类中的样本点D=2#维度K=3#类别个数X=np.zeros((N*K,D))#样本inputy=np.zeros(N*K,dtype='uint8')#类别标签forjinxrange(K):ix=range(N*j,N*(j+1))r=np.li

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论