




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章:神经网络学习目标通过本章的学习,你将能够:掌握神经网络算法的基本概念;掌握主要神经网络算法模型;掌握数字数据的神经网络评价与预测。
1.神经网络入门2.
神经网络基本理论3.
BP神经网络算法4.神经网络的Python实现5.从人工神经网络到深度学习神经网络(1)从人类神经元到神经网络神经网络(2)目前,关于神经网络的定义尚不统一,按美国神经网络学家HechtNielsen的观点,神经网络的定义是:“神经网络是由多个非常简单的处理单元彼此按某种方式相互连接而形成的计算机系统,该系统靠其状态对外部输入信息的动态响应来处理信息”。综合神经网络的来源、特点和各种解释,它可简单地表述为:人工神经网络是一种旨在模仿人脑结构及其功能的信息处理系统。人工神经网络(简称神经网络):是由人工神经元互连组成的网络,它是从微观结构和功能上对人脑的抽象、简化,是模拟人类智能的一条重要途径,反映了人脑功能的若干基本特征,如并行信息处理、学习、联想、模式分类、记忆等。神经网络入门(1)
输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。包含有3个输入,1个输出,以及2个计算功能,中间的箭头线这些线称为“连接”每,个上有一个“权值”。神经网络入门(2)
感知器模型,在原来MP模型的“输入”位置添加神经元节点,标志其为“输入单元”。其余不变,我们将权值w1,w2,w3写到“连接线”的中间。神经网络入门(3)输入层里的输入单元只负责传输数据,不做计算;输出层里的输出单元则需要对前面一层的输入进行计算。把需要计算的层次称之为计算层,并把拥有一个计算层的网络称之为单层神经网络。神经网络入门(4)假如我们要预测的目标不再是一个值,而是一个向量,例如[2,3]。那么可以在输出层再增加一个输出单元。神经网络入门(5)可以看到,z1的计算跟原先的z并没有区别,我们已知一个神经元的输出可以向多个神经元传递,因此z2的计算公式如图所示:神经网络入门(6)可以看到,z2的计算中除了三个新的权值:w4,w5,w6以外,其他与z1是一样的。整个网络的输出如图所示。神经网络入门(7)W1,2代表后一层的第1个神经元与前一层的第2个神经元的连接的权值。根据以上方法标记,如图所示:神经网络入门(8)上面的决策过程,使用数学表达如下:1.神经网络入门2.
神经网络基本理论3.
BP神经网络算法4.神经网络的Python实现5.从人工神经网络到深度学习激活函数
激活函数(Activationfunctions)对于神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用,激活函数的存在将非线性特性引入到我们的网络中。如果我们不运用激活函数,则输出信号将仅仅是一个简单的线性函数。线性函数的复杂性有限,从数据中学习复杂函数映射的能力更小。Sigmoid函数tanh函数sigmoid函数和tanh函数都存在一个问题:当神经网络的层数增多的时候,由于在进行反向传播的时候,链式求导,多项相乘,函数进入饱和区(导数接近于零的地方)就会逐层传递,这种现象被称为梯度消失。RectifiedLinearUnit(ReLU)函数
映射区间:[0,+∞),虽然ReLU函数大于零的部分和小于零的部分分别都是线性函数,但是整体并不是线性函数,所以仍然可以做为激活函数,ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制。ReLU函数优点
大脑方面的研究表明生物神经元的信息编码通常是比较分散及稀疏的。通常情况下,大脑中在同一时间大概只有1%-4%的神经元处于活跃状态。使用线性修正以及正则化(regularization)可以对机器神经网络中神经元的活跃度(即输出为正值)进行调试;相比之下,逻辑函数在输入为0时达到1/2,即已经是半饱和的稳定状态,不够符合实际生物学对模拟神经网络的期望。不过需要指出的是,一般情况下,在一个使用修正线性单元(即线性整流)的神经网络中大概有50%的神经元处于激活态;Softmax函数Softmax函数体:Softmax函数的功能就是将一个K维的任意实数向量映射成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。新的向量所有维度模长之和为1。Softmax函数经常用作多分类任务的输出层。梯度下降与损失函数损失函数的极值深度学习中常用的损失函数二次代价函数:交叉熵代价函数:交叉熵误差刻画了两个概率分布之间的距离,是分类问题中使用较多的一种损失函数。一般二次代价函数更多得用于回归问题,而交叉熵误差更多的用于分类问题。全局梯度下降算法(BGD)随机梯度下降算法(SGD)小批量梯度下降(MBGD)梯度下降与损失函数更加有效率的梯度下降以及反向传播:避免了梯度爆炸和梯度消失问题;简化计算过程:没有了其他复杂激活函数中诸如指数函数的影响;同时活跃度的分散性使得神经网络整体计算成本下降。因为线性模型的表达能力不够,引入激活函数是为了添加非线性因素;然后发展出了很多的激活函数适用于各种模型的训练;RELU函数的引入给神经网络增加了生物学特性,可以称为灵魂激活函数。全连接网络(Fully-ConnectedNetwork)简写为FCN,但很容易和全卷积网络(Fully-ConvolutionalNetwork)的简写搞混,要注意,结构如图所示:神经网络的基本结构-全连接网络(1)
神经网络的基本结构-全连接网络(2)
如果增加hiddenlayer的层数,就能使它成为深度全连接神经网络:每相邻两层之间,每个神经元的输入都是将前一层的输出按照连边的权值加权求和。输入层往往是例外,输入层各神经元是直接将输入作为神经元的输出。神经网络的基本结构-卷积神经网络卷积神经网络(ConvolutionalNeuralNetwork,CNN)
用卷积、池化操作代替加权求和,是卷积神经网络对全连接网络的一个改进。由于权值共享,降低了参数数量,缩小了解空间,有利于提取泛化特征,有效缓解了过拟合。神经网络的基本结构-循环神经网络
循环神经网络(RecurrentNeuralNetwork,RNN)它不仅有层间连接,还有层内连接。而这个层内连接的权值也是共享的,用于提取序列信息,有一定的记忆功能。在自然语言处理等领域有应用。神经网络的主要类型-前馈神经网络
前馈神经网络是指神经元分层排列,分别组成输入层、中间层和输出层。每一层的神经元只接受来自前一层神经元的输入,后面的层对前面层没有信号反馈。输入模式经过各层的顺序传播,最后在输出层上得到输出。这类网络结构通常适于预测、模式识别及非线性函数逼近,一般典型的前向神经网络基于梯度算法的神经网络如BP网络,最优正则化方法如SVM,径向基神经网络和极限学习机神经网络。神经网络的主要类型-反馈网络
反馈网络,又称回归网络,输入信号决定反馈系统的初始状态,系统经过一系列状态转移后逐渐收敛于平衡状态,因此,稳定性是反馈网络最重要的指标之一,比较典型的是感知器网络、Hopfield神经网络、海明祌经网络、小波神经网络双向联系存储网络(BAM)、波耳兹曼机。自组织神经网络是无教师学习网络,它模拟人脑行为,根据过去经验自动适应无法预测的环境变化,由于无教师信号,这类网络通常采用竞争原则进行网络学习。神经网络的特点(1)人工神经网络特点:(1)人工神经网络(ANN)为广泛连接的巨型系统。神经科学研究表明,人类中枢神经的主要部分大脑皮层由数百亿个神经元组成,每个神经元共有若干个突触,突触为神经元之间的结合部,决定神经元之间的连接强度与性质。这表明大脑皮层是一个广泛连接的巨型复杂系统,ANN的连接机制模仿了人脑的这一特性。(2)人工神经网络(ANN)有其并行结构和并行处理机制。ANN不但结构上是并行的,它的处理顺序也是并行的和同时的。在同一层内处理单元都是同时操作的,即神经网络的计算功能分布在多个处理单元上。神经网络的特点(2)(3)人工神经网络(ANN)的分布式结构使其具有和人脑一样的容错性和联想能力。大脑具有很强的容错能力。我们知道,每天都有大脑细胞死去,但并没有影响人们的记忆和思考能力。这正是因为大脑对信息的存储是通过改变突触的功能实现的,信息存储于神经元连接强度的分布上,存储区和操作区合二为一,不同信息之间自然沟通,其处理也为大规模连续时间模式。而存储知识的获得采用“联想”的办法。这类似人类和动物的联想记忆,当一个神经网络输入一个激励时,它要在已存储的知识中寻找与输入匹配最好的存储知识为其解。神经网络的特点(3)(4)人工神经网络(ANN)具有自学习、自组织、自适应能力。大脑功能受先天因素的制约,但后天因素(如经历、学习和训练等)也起着重要作用。ANN很好地模拟了人脑的这一特性。如果最后的输出不正确,系统可以调整加到每个输入上去的权重以产生一个新的结果,这可以通过一定的训练算法来实现。训练过程是复杂的,通过网络进行重复地输入数据,且每次都调整权重以改善结果,最终达到所希望的输出。在训练过程中网络便得到了经验。理论研究表明,选择合适的ANN能够实现任何连续映射,通过对样本的学习,ANN表现出分类、概括和联想的能力。1.神经网络入门2.
神经网络基本理论3.
BP神经网络算法4.神经网络的Python实现5.从人工神经网络到深度学习BP神经网络算法
BP神经网络(backpropagationneuralnetwork)是神经网络的一种经典结构,因为其结构和训练相对简单,是我们学习神经网络时的入门算法。BP神经网络包含了特定的模型和特定的训练算法。BP算法的网络结构与训练方式(1)采用非线性激活函数,Sigmoid函数。三个层次分别是:输入层(InputLayer),隐藏层(HiddenLayer)和输出层(Outputlayer),就好比神经网络的各个神经元具有不同功能一样。输入层:负责接收外界刺激,即外部数据。隐藏层:又叫可多层,负责增加计算能力,以解决困难问题。但隐藏层神经元不能无限增加,否则会出现过拟合现象。输出层:又称为决策层,负责进行决策。BP算法的网络结构与训练方式(2)
一般来说,当数据和决策问题确定之后,输入层和输出层的节点个数是固定的,唯一可变的是隐藏层。层与层之间是通过神经键(权重)完成连接。训练好之后的BP神经网路模型是前馈的(feedforward),但在进行模型训练的时候是从输出层到输入层,是反馈的(即:TrainBackward),BP算法网络结构如图反向传播算法(1)反向传播算法(2)反向传播算法(3)反向传播算法(4)
BP神经网络的学习流程
BP神经网络学习的具体流程如下:(1)网络初始化。对各连接权值和阈值分别赋予(0,1)区间的数值,设定误差函数,给定计算精度值;(2)计算隐含层各神经节点的输入和输出;(3)计算输出层各神经节点的输入和输出;(4)计算BP神经网络连接到输出层各神经元节点的权值误差;(5)计算BP神经网络连接到隐含层各神经元节点的权值误差;(6)反向调整BP神经网络各层的连接权值和阈值;(7)计算实际输出值和期望输出值的误差,若满足设定的精度值,则结束学习,否则继续从步骤(2)逐步进行学习
BP算法的演示举例(1)
典型的三层神经网络的基本构成是输入层、隐含层、输出层,我们现在手里有一堆数据{x1,x2,x3,…,xn},输出也是一堆数据{y1,y2,y3,…,yn},现在要他们在隐含层做某种变换,把数据灌进去后得到你期望的输出。假设,你有这样一个网络层如图所示:
BP算法的演示举例(2)
第一层是输入层,包含两个神经元i1,i2,和截距项b1;第二层是隐含层,包含两个神经元h1,h2和截距项b2,第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。现在对他们赋上初值如图,所示:
BP算法的演示举例(3)其中,输入数据
i1=0.05,i2=0.10;输出数据o1=0.01,o2=0.99;初始权重
w1=0.15,w2=0.20,w3=0.25,w4=0.30;
w5=0.40,w6=0.45,w7=0.50,w8=0.55目标:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原始输出o1,o2(0.01和0.99)接近。
BP算法的演示举例(4)
BP算法的演示举例(5)2.隐含层—->输出层:计算输出层神经元o1和o2的值:
BP算法的演示举例(6)Step2反向传播1.计算总误差
BP算法的演示举例(7)
BP算法的演示举例(8)如图所示可以更直观的看清楚误差是怎样反向传播的:
BP算法的演示举例(9)
BP算法的演示举例(10)
BP算法的演示举例(11)
BP算法的演示举例(12)
BP算法的演示举例(13)3.隐含层—->隐含层的权值更新:方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)—->net(o1)—->w5,但是在隐含层之间的权值更新时,是out(h1)—->net(h1)—->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算,如图所示。
BP算法的演示举例(14)1.神经网络入门2.
神经网络基本理论3.
BP神经网络算法4.神经网络的Python实现5.从人工神经网络到深度学习
神经网络的Python实现(1)
#数据读取:defloaddataset(filename):
fp=open(filename)
#存放数据:dataset=[]#存放标签:labelset=[] foriinfp.readlines(): a=i.strip().split()
#每个数据行的最后一个是标签:
dataset.append([float(j)forjina[:len(a)-1]]) labelset.append(int(float(a[-1]))) returndataset,labelset
神经网络的Python实现(2)初始化各个参数:#x为输入层神经元个数,y为隐层神经元个数,z输出层神经元个数defparameter_initialization(x,y,z):#隐层阈值value1=np.random.randint(-5,5,(1,y)).astype(np.float64)
#输出层阈值value2=np.random.randint(-5,5,(1,z)).astype(np.float64)
#输入层与隐层的连接权重weight1=np.random.randint(-5,5,(x,y)).astype(np.float64)#隐层与输出层的连接权重weight2=np.random.randint(-5,5,(y,z)).astype(np.float64)
returnweight1,weight2,value1,value2
神经网络的Python实现(3)对数几率函数(sigmoid函数):defsigmoid(z):
return1/(1+np.exp(-z))训练过程(参数调整过程):weight1:输入层与隐层的连接权重weight2:隐层与输出层的连接权重value1:隐层阈值value2:输出层阈值'''deftrainning(dataset,labelset,weight1,weight2,value1,value2): #x为步长 x=0.01 foriinrange(len(dataset)):
神经网络的Python实现(4)#输入数据 inputset=np.mat(dataset[i]).astype(np.float64) #数据标签 outputset=np.mat(labelset[i]).astype(np.float64) #隐层输入 input1=np.dot(inputset,weight1).astype(np.float64) #隐层输出 output2=sigmoid(input1-value1).astype(np.float64) #输出层输入 input2=np.dot(output2,weight2).astype(np.float64)
神经网络的Python实现(5)#输出层输出output3=sigmoid(input2-value2).astype(np.float64)#更新公式由矩阵运算表示 a=np.multiply(output3,1-output3) g=np.multiply(a,outputset-output3) b=np.dot(g,np.transpose(weight2)) c=np.multiply(output2,1-output2) e=np.multiply(b,c) value1_change=-x*e value2_change=-x*g
神经网络的Python实现(6)weight1_change=x*np.dot(np.transpose(inputset),e)weight2_change=x*np.dot(np.transpose(output2),g)#更新参数 value1+=value1_change value2+=value2_change weight1+=weight1_change weight2+=weight2_change returnweight1,weight2,value1,value2
神经网络的Python实现(7)
测试:deftesting(dataset,labelset,weight1,weight2,value1,value2): #记录预测正确的个数rightcount=0foriinrange(len(dataset)):#计算每一个样例通过该神经网路后的预测值 inputset=np.mat(dataset[i]).astype(np.float64) outputset=np.mat(labelset[i]).astype(np.float64)output2=sigmoid(np.dot(inputset,weight1)-value1) output3=sigmoid(np.dot(output2,weight2)-value2)
神经网络的Python实现(8)#确定其预测标签
ifoutput3>0.5:
flag=1
else:
flag=0
iflabelset[i]==flag:
rightcount+=1#输出预测结果 print("预测为%d实际为%d"%(flag,labelset[i]))#返回正确率 returnrightcount/len(dataset)
神经网络的Python实现(9)主函数:if__name__=='__main__': dataset,labelset=loaddataset('/horseColicTraining.txt') weight1,weight2,value1,value2=parameter_initialization(len(dataset[0]),len(dataset[0]),1) foriinrange(1500): weight1,weight2,value1,value2=trainning(dataset,labelset,weight1,weight2,value1,value2) rate=testing(dataset,labelset,weight1,weight2,value1,value2) print("正确率为%f"%(rate))
神经网络的Python实现(10)
神经网络的Python实现(11)运行后如图所示:
神经网络的Python实现(12)1.神经网络入门2.
神经网络基本理论3.
BP神经网络算法4.神经网络
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版房屋租赁合同3
- 《难治性肾衰竭》课件
- 2025年装修新房前签订合同的重点注意事项
- 2025世纪广场大酒店不锈钢大门及护栏生产与安装合同
- 《典型的微生物》课件
- 《爱耳日宣传》课件
- 《人口与资源关系》课件
- 《专注匠心永恒》课件
- 山东省潍坊市昌乐县市级名校2024-2025学年中考语文试题命题比赛模拟试卷(25)含解析
- 石家庄铁道大学《外贸英语写作》2023-2024学年第一学期期末试卷
- 钢结构门式刚架厂房设计土木工程毕业设计
- 橙色黑板风小学生知识产权科普PPT模板
- 中国供销合作社标识使用手册课件
- 幼儿园儿歌100首
- Q∕CR 9218-2015 铁路隧道监控量测技术规程
- 甲状腺解剖及正常超声切面ppt课件
- 易学书籍大全291本
- 上海市城市地下空间建设用地审批及房地产登记试行规定
- 蠕墨铸铁项目可行性研究报告写作范文
- ISP98《备用信用证惯例》中英文
- “V”法铸造工艺及应用
评论
0/150
提交评论