Ch9人工神经网络newPPT文档

上传人:人*** 文档编号:578418243 上传时间:2024-08-24 格式:PPT 页数:131 大小:689.50KB
返回 下载 相关 举报
Ch9人工神经网络newPPT文档_第1页
第1页 / 共131页
Ch9人工神经网络newPPT文档_第2页
第2页 / 共131页
Ch9人工神经网络newPPT文档_第3页
第3页 / 共131页
Ch9人工神经网络newPPT文档_第4页
第4页 / 共131页
Ch9人工神经网络newPPT文档_第5页
第5页 / 共131页
点击查看更多>>
资源描述

《Ch9人工神经网络newPPT文档》由会员分享,可在线阅读,更多相关《Ch9人工神经网络newPPT文档(131页珍藏版)》请在金锄头文库上搜索。

1、本章内容9.1 人工神经网络概述人工神经网络概述 9.1. 1 生物神经元 9.1. 2 人工神经网络的构成9.2 人工神经网络基本模型人工神经网络基本模型 9.2. 1 感知器模型 9.2. 2 线性神经网络 9.2. 3 BP神经网络 9.2. 4 其他神经网络9.3 BP神经网络理论神经网络理论 9.3. 1 网络结构 9.3. 2 数学模型 9.3. 3 学习算法 9.3. 4 网络的泛化能力 9.3. 5 算法的改进 9.3. 6 网络结构参数的确定 9.4 BP神经网络应用神经网络应用 9.4. 1 9.4. 1 函数逼近函数逼近 9.4. 2 9.4. 2 字符识别字符识别 9.

2、1人工神经网络概述人工神经网络概述 生物神经系统是一个有高度组织和相互作用的数量巨大的细胞组织群体。人类大脑的神经细胞大约在1011一1013个左右。神经细胞也称神经元,是神经系统的基本单元,它们按不同的结合方式构成了复杂的神经网络。通过神经元及其联接的可塑性,使得大脑具有学习、记忆和认知等各种智能。 9.1.1 生物神经元1、结构神经元由细胞体(Soma)和延伸部分组成。延伸部分按功能分有两类,一种称为树突(Dendrite),用来接受来自其他神经元的信息;另一种用来传递和输出信息,称为轴突(Axon)。神经元之间的相互连接从而让信息传递的部位披称为突触(Synapse),突触的联接是可塑的

3、,也就是说突触特性的变化是受到外界信息的影响或自身生长过程的影响。 2、特征 (1) 并行分布处理 大脑中单个神经元的信息处理速度是很慢的,每次约1毫秒,比通常的电子门电路要慢几个数量级。但是人脑对某一复杂过程的处理和反应却很快,一般只需几百毫秒。而在这个处理过程中,与脑神经系统的一些主要功能,如视觉、记亿、推理等有关。按照上述神经元的处理速度,如果采用串行工作模式,就必须在几百个串行步内完成,这实际上是不可能办到的。因此只能把它看成是一个由众多神经元所组成的超高密度的并行处理系统。例如在一张照片寻找一个熟人的面孔,对人脑而言,几秒钟便可完成,但如用计算机来处理,以现有的技术,是不可能在短时间

4、内完成的。 (2) 神经系统的可塑性和自组织性 从生理学的角度看,它体现在突触的可塑性和联接状态的变化。例如在某一外界信息反复刺激下接受该信息的神经细胞之间的突触结合强度会增强。这种可塑性反映出大脑功能既有先天的制约因素,也有可能通过后天的训练和学习而得到加强。 (3) 信息处理与信息存贮合二为一 由于大脑神经元兼有信息处理和存贮功能,所以在进行回亿时,不但不存在先找存贮地址而后再调出所存内容的问题,而不像现行计算机那样存贮地址和存贮内容是彼此分开的。 (4) 信息处理的系统性 大脑的各个部位是一个大系统中的许多子系统。各个子系统之间具有很强的相互联系,一些子系统可以调节另一些子系统的行为。例

5、如,视觉系统和运动系统就存在很强的系统联系,可以相互协调各种信息处理功能。(5) 能接受和处理模糊的、模拟的、随机的信息 9.1.2 人工神经网络 人工神经网络(Artificial Neural Network,ANN)是对人类大脑特性的一种描述。它是一个数学模型,可以用电子线路实现,也可以用计算机程序来模拟。是人工智能研究的一种方法。2024/8/2411n1、定义、定义 n1)HechtNielsen(1988年)年)人工神经网络是一个并行、分布处理结构,人工神经网络是一个并行、分布处理结构,它由处理单元及其称为联接的无向讯号通道它由处理单元及其称为联接的无向讯号通道互连而成。这些处理单

6、元(互连而成。这些处理单元(PEProcessingElement)具有局部内存,并可以完成局部操)具有局部内存,并可以完成局部操作。每个处理单元有一个单一的输出联接,作。每个处理单元有一个单一的输出联接,这个输出可以根据需要被分枝成希望个数的这个输出可以根据需要被分枝成希望个数的许多并行联接,且这些并行联接都输出相同许多并行联接,且这些并行联接都输出相同的信号,即相应处理单元的信号,信号的大的信号,即相应处理单元的信号,信号的大小不因分支的多少而变化。小不因分支的多少而变化。2024/8/2412n(1)HechtNielsen(1988年)(续)年)(续)n处理单元的输出信号可以是任何需要

7、的数学模处理单元的输出信号可以是任何需要的数学模型,每个处理单元中进行的操作必须是完全局型,每个处理单元中进行的操作必须是完全局部的。也就是说,它必须仅仅依赖于经过输入部的。也就是说,它必须仅仅依赖于经过输入联接到达处理单元的所有输入信号的当前值和联接到达处理单元的所有输入信号的当前值和存储在处理单元局部内存中的值。存储在处理单元局部内存中的值。2024/8/2413n强调:强调:n并行、分布处理结构;并行、分布处理结构;n 一一个个处处理理单单元元的的输输出出可可以以被被任任意意分分枝枝,且大小不变;且大小不变;n 输出信号可以是任意的数学模型;输出信号可以是任意的数学模型;n 处理单元完全

8、的局部操作处理单元完全的局部操作 2024/8/2414n(2) Rumellhart,McClelland,Hinton的的PDP n1)一组处理单元一组处理单元(PE或或AN););n2)处理单元的处理单元的激活状态激活状态(ai););n3)每个处理单元的每个处理单元的输出函数输出函数(fi););n4)处理单元之间的处理单元之间的联接模式联接模式;n5)传递规则传递规则(wijoi););n6)把把处处理理单单元元的的输输入入及及当当前前状状态态结结合合起起来来产产生生激激活值的活值的激活规则激活规则(Fi););n7)通过经验修改联接强度的通过经验修改联接强度的学习规则学习规则;n8

9、)系统运行的环境(系统运行的环境(样本样本集合)。集合)。 2024/8/2415n(3)Simpson(1987年)年)n人工神经网络是一个非线性的有向图,人工神经网络是一个非线性的有向图,图中含有可以通过改变权大小来存放模图中含有可以通过改变权大小来存放模式的加权边,并且可以从不完整的或未式的加权边,并且可以从不完整的或未知的输入找到模式。知的输入找到模式。 2024/8/2416n2、关键特征、关键特征n(1 1)信息的分布表示信息的分布表示n(2 2)运算的全局并行与局部操作运算的全局并行与局部操作n(3 3)处理的非线性特征处理的非线性特征 下图是一个神经元的结构图,通过与生物神经元

10、的比较可以知道它们的有机联系,生物神经元中的神经体与人工神经元中的结点相对应,树突(神经末梢)与输入相对应,轴突与输出相对应,突触与权值相对应。 3、ANN研究与应用的主要内容研究与应用的主要内容 (1) 人工神经网络模型的研究 神经网络原型研究,即大脑神经网络的 生理结构、思维机制。 神经元的生物特性如时空特性、电化 学性质等的人工模拟。 易于实现的神经网络计算模型。 神经网络的学习算法与学习系统。 (2) 神经网络基本理论 神经网络的非线性特性,包括自组织、自适应等作用。 神经网络的基本性能,包括稳定性、收敛性、容错性、鲁棒性、动力学复杂性。 神经网络的计算能力与信息存贮容量。 (3) 神

11、经网络智能信息处理系统的应用 认知与人工智能,包括模式识别、计算机视觉与听觉、特征提取、语音识别语言翻译、联想记忆、逻辑推理、知识工程、专家系统、故障诊断、智能机器人等。 优化与控制,包括决策与管理、系统辨识、鲁棒性控制、自适应控制、并行控制、分布控制等。 信号处理,自适应滤波、时间序列预测、消噪、非线性预测、非线性编码等。(4) 神经网络的软件模拟和硬件实现(5) 神经网络计算机的实现 4、ANN的信息处理能力 存贮能力和计算能力是现代计算机科学中的两个基本问题,同样,它们也构成了人工神经网络研究中的基本问题。人工神经网络的信息处理能力包括两方面的内容: 神经网络信息存贮能力神经网络信息存贮

12、能力 即要解决这样的一个问题:在一个有N个神经元的神经网络中,可存贮多少值的信息? 神经网络的计算能力神经网络的计算能力(1)神经网络的存贮能力 定定义义:一一个个存存贮贮器器的的信信息息表表达达能能力力定定义义为为其其可可分辨的信息类型的对数值。分辨的信息类型的对数值。 在一个M1的随机存贮器RAM中,有M位地址,一位数据,它可存贮2M位信息。M1的RAM的存贮能力为:C2M(位)。(2)神经网络的计算能力 数学的近似映射 概率密度函数的估计 从二进制数据基中提取相关的知识 形成拓扑连续及统计意义上的同构映射 最近相邻模式分类 数据聚类 最优化问题 用来求解局部甚至是全局最优解。2024/8

13、/24259.1.3人工神经网络发展人工神经网络发展回顾回顾 n1、产生产生期(期(20世纪世纪40年代)年代)n人人工工神神经经网网络络的的研研究究最最早早可可以以追追溯溯到到人人类类开开始始研究自己的智能的时期,到研究自己的智能的时期,到1949年止。年止。n1943年年,心心理理学学家家McCulloch和和数数学学家家Pitts建建立立起起了了著著名名的的阈阈值值加加权权和和模模型型,简简称称为为M-P模模型型。发发表表于于数数学学生生物物物物理理学学会会刊刊BulletinofMathematicalBiophysicsn1949年,心理学家年,心理学家D.O.Hebb提出神经元之间

14、提出神经元之间突触联系是可变的假说突触联系是可变的假说Hebb学习律。学习律。 2024/8/24262高潮时期(高潮时期(19501968) n以以MarvinMinsky,FrankRosenblatt,BernardWidrow等等为为代代表表人人物物,代代表表作作是单级感知器(是单级感知器(Perceptron)。)。n可用电子线路模拟。可用电子线路模拟。n人们乐观地认为几乎已经找到了智能的人们乐观地认为几乎已经找到了智能的关键。许多部门都开始大批地投入此项关键。许多部门都开始大批地投入此项研究,希望尽快占领制高点。研究,希望尽快占领制高点。 2024/8/24273低潮时低潮时期(期

15、(19691982) nM.L.Minsky和和S.Papert,Perceptron,MITPress,1969年年 n异或异或”运算不可表示运算不可表示 n二十世纪二十世纪70年代和年代和80年代早期的研究结年代早期的研究结果果 n认识规律:认识认识规律:认识实践实践再认识再认识 2024/8/24284、第二高潮期(第二高潮期(19831990) n1982年,年,J.Hopfield提出循环网络提出循环网络n用用Lyapunov函数函数作为网络性能判定的能量函数,作为网络性能判定的能量函数,建立建立ANNANN稳定性的判别依据稳定性的判别依据n阐明了阐明了ANNANN与动力学的关系与动

16、力学的关系n用非线性动力学的方法来研究用非线性动力学的方法来研究ANNANN的特性的特性n指出信息被存放在网络中神经元的联接上指出信息被存放在网络中神经元的联接上 2024/8/2429n2)1984年,年,J.Hopfield设计研制了后来设计研制了后来被人们称为被人们称为Hopfield网网的电路。较好地解的电路。较好地解决了著名的决了著名的TSP问题,找到了最佳解的近问题,找到了最佳解的近似解,引起了较大的轰动。似解,引起了较大的轰动。n3)1985年,年,UCSD的的Hinton、Sejnowsky、Rumelhart等人所在的并行分布处理等人所在的并行分布处理(PDP)小组的研究者在

17、)小组的研究者在Hopfield网络中网络中引入了随机机制,提出所谓的引入了随机机制,提出所谓的Boltzmann机机。 2024/8/2430n4) 1986年年 , 并并 行行 分分 布布 处处 理理 小小 组组 的的Rumelhart等等研研究究者者重重新新独独立立地地提提出出多多层层网网络络的的学学习习算算法法BP算算法法,较较好好地地解解决决了了多多层层网网络络的的学学习习问问题题。(Paker1982和和Werbos1974年)年)n国内首届神经网络大会国内首届神经网络大会是是1990年年12月在月在北京举行的北京举行的。 2024/8/24315 5、再认识与应用研究期(、再认识

18、与应用研究期(1991) n问题:问题:n1)应用面还不够宽应用面还不够宽n2)结果不够精确结果不够精确n3 3)存在可信度的问题)存在可信度的问题 2024/8/2432n研究:研究:n1)开开发发现现有有模模型型的的应应用用,并并在在应应用用中中根根据据实实际际运运行行情情况况对对模模型型、算算法法加加以以改改造造,以以提提高高网网络的训练速度和运行的准确度。络的训练速度和运行的准确度。n2)充充分分发发挥挥两两种种技技术术各各自自的的优优势势是是一一个个有有效效方法方法n3)希希望望在在理理论论上上寻寻找找新新的的突突破破,建建立立新新的的专专用用/通用模型和算法。通用模型和算法。n4

19、4)进进一一步步对对生生物物神神经经系系统统进进行行研研究究,不不断断地地丰富对人脑的认识。丰富对人脑的认识。 9.2 人工神经网络基本模型人工神经网络基本模型 9.2.1 感知器模型感知器模型 感知器是一种早期的神经网络模型,由美国学者F.Rosenblatt于1957年提出.感知器中第一次引入了学习的概念,使人脑所具备的学习功能在基于符号处理的数学到了一定程度的模拟,所以引起了广泛的关注。 感知器在形式上与MP模型差不多,它们之间的区别在于神经元间连接权的变化。感知器的连接权定义为可变的,这样感知器就被赋予了学习的特性。1、感知器的结构 感知器处理单元对n个输入进行加权和操作:其中, xi

20、为第i个输入,wi为第i个输入到处理单元的连接权值,为阈值。 f是阶跃函数。为简化表示,把阈值 当作输入-w0 ,写成向量形式:返返 回回 2、感知器的学习算法n感知器的学习是有导师学习感知器的学习是有导师学习n感知器的训练算法的基本原理来源于著名的感知器的训练算法的基本原理来源于著名的Hebb学习学习律律n基本思想:逐步地将样本集中的样本输入到网络中基本思想:逐步地将样本集中的样本输入到网络中,根根据输出结果和理想输出之间的差别来调整网络中的权据输出结果和理想输出之间的差别来调整网络中的权矩阵矩阵 2024/8/2438感知器学习算法感知器学习算法 n1用适当的小伪随机数初始化权矩阵用适当的

21、小伪随机数初始化权矩阵W;n2. 初置精度控制参数初置精度控制参数,学习率,学习率,精度控制变量,精度控制变量d=+1;n3While d don 3.1 d=0;n 3.2 for 每个样本(每个样本(X,Y)don3.2.1 输入输入X(=(x1,x2,xn)););n3.2.2 求求O=F(XW););n3.2.3 修改权矩阵修改权矩阵W:nfor i=1 to n,j=1 to m donwij=wij+(yj-oj)xi;n3.2.4 累积误差累积误差nfor j = 1 to m dond=d+(yj-oj)22024/8/24391、1962年年,Rosenblatt证证明明:P

22、erceptron可可以以学学会会它它能表示的任何东西能表示的任何东西 2、Minsky在在1969年年证证明明,有有许许多多基基本本问问题题是是感感知知器器无无法解决法解决3、问题线性可分性可能与时间有关问题线性可分性可能与时间有关4、很难从样本数据集直接看出问题是否线性可分很难从样本数据集直接看出问题是否线性可分5、未未能能证证明明,一一个个感感知知器器究究竟竟需需要要经经过过多多少少步步才才能能完完成训练。成训练。2024/8/24403线性不可分问题线性不可分问题 异或异或(ExclusiveOR)问题问题 nG(x, y)nyn0n1nxn0n0n1n1n1n02024/8/2441

23、线性不可分函数线性不可分函数nR. O. Windner 1960年年 n自变量个数自变量个数n函数的个数函数的个数n线性可分函数的个数线性可分函数的个数n1n4n4n2n16n14n3n256n104n4n65,536n1882n5n4.3*109n94,572n6n1.8*1019n5,028,1342024/8/2442线性不可分问题的克服线性不可分问题的克服 n用多个单级网组合在一起,并用其中的一个去用多个单级网组合在一起,并用其中的一个去综合其它单级网的结果,我们就可以构成一个综合其它单级网的结果,我们就可以构成一个两级网络,该网络可以被用来在平面上划分出两级网络,该网络可以被用来在

24、平面上划分出一个封闭或者开放的凸域来一个封闭或者开放的凸域来n一个非凸域可以拆分成多个凸域。按照这一思一个非凸域可以拆分成多个凸域。按照这一思路,三级网将会更一般一些,我们可以用它去路,三级网将会更一般一些,我们可以用它去识别出一些非凸域来。识别出一些非凸域来。n解决好隐藏层的联接权的调整问题是非常关键解决好隐藏层的联接权的调整问题是非常关键的的 9.2. 2 线性神经网络线性神经网络 1、网络结构 50年代末,Widrow提出的Adaline是最早的线性神经网络,它是由一个或多个线性神经元构成,每个神经元的传递函数是一个线性函数,因此,线性神经网络的输出可以是任意值。一个线性神经元的网络结构

25、如下图:w(1,1)w(1,R)bp(1)p(2)p(R)a 2、传递函数 线性神经网络的传递函数是一个线性函数,如下图所示:Pa-b/w0+b/w 3、线性神经元输出 在matlab中,线性传递函数purelin是计算神经元输出的,当只有一个神经元时,输出为: a= purelin(w*p+b) 当输入是矩阵形式,神经元个数不止一个时,输出为: a= purelin(w*p,b)思考:线性神经网络与感思考:线性神经网络与感知器的区别?知器的区别? 9.2.3 BP神经网络 1、网络学习算法提出 60年代末,Minsky和Papert指出了感知机的功能和处理能力的局限性,在感知机中引入隐含神经

26、元,增加神经网络的层次,提高神经网络的处理能力,但却无法给出相应的网络学习算法。1986年,Rumelhart等人在多层神经网络模型的基础上,提出了多层神经网络模型的反向传播学习算法BP(Back propagation)算法,实现了Minsky的多层网络设想。 2、隐层传递函数 BP网络的隐层传递函数通常是S型函数,常用logsig()和tansig()函数,也可以采用线性传递函数purelin()。函数如下图:Pa-b/w0-1+1a=logsig(w*p,b)a-b/w0-1+1Pa=tansig(w*p,b)a-b/w0+b/wPa=purelin(w*p,b) 3、输出层函数 如果输

27、出层是S型神经元,那么整个网络的输出被限制在一个较小的范围内,如果输出层使用线性神经元,那么输出可以取任意值。因此,一般隐层使用S型函数,输出层使用线性函数。传递函数均是可微的单调增函数。 9.2.4 其它神经网络 1、径向基函数网络 BP网络用于函数逼近时,权值的调整采用的是梯度下降法,但存在着局部极小和收敛速度慢等缺点,而径向基函数网络在逼近能力、分类能力和学习速度等方面均优于BP网络,它的传递函数采用的是径向基函数,其输出是权值向量与输入向量P之间的距离乘以阈值b,即,a=radbas(dist(W,P)*b) 2、回归网络 Matlab神经网络工具箱包括两种回归网络:Elman网络和J

28、. Hopfield网络。Elman网络是一个两层网络,在第一层有一个反馈环节,9.3BP神经网络理论神经网络理论9.3.1网络结构网络结构 下图是一个神经元的结构图,生物神经元中的神经体(Soma)与人工神经元中的结点相对应,神经末梢(Dendrites,树突)与输入相对应,轴突(Axon)与输出相对应,突触(Synapse)与权值相对应。 BP神经网络是一个多层网络,它的拓扑结构如下图所示。输入层i隐含层k输出层jwkiwjk 在这一神经网络模型中,引入了中间隐含神经元层。标准的BP神经网络的拓扑结构由三层组成,最左层称为输入层,中间层称为隐含层,最右层称为输出层。输入层、输出层的个数可以

29、由所求的问题决定,而中间层的神经元个数的确定需要探讨。各层次的神经元之间形成全互连连接,各层次内的神经元之间没有连接。三层神经网络已经足以模拟输入与输出之间的复杂的非线性映射关系。更多的网络层虽然能提高神经网络学习复杂映射关系的能力,但因为随着网络层的增加,神经元及其连接权将大规模增加,所占用的计算机资源过多,网络学习收敛反而慢了。 各个神经元之间的连接并不只是一个单纯的传输信号的通道,而是在每对神经元之间的连接上有一个加权系数,这个加权系数就是权值,它起着生物神经系统中神经元的突触强度的作用,它可以加强或减弱上一个神经元的输出对下一个神经元的刺激。修改权值的规则称为学习算法,它可以根据经验或

30、学习来改变。9.3. 2 数学模型输入层与隐层间权值为:阈值为:隐层与输出层间权值为:阈值为:网络的作用函数称为S型函数: 假定:假定:,输入层输入层神经元 i : 输入: 输出: =隐含层隐含层神经元 k: 输入: 输出: =输出层输出层神经元 j : 输入: 输出: =那么:那么:误差 为期望输出采用梯度法对各层权值进行修正: 非输出层神经元的误差 等于所有与该神经元相连的神经元的输出端误差 乘以对应的权值 并求和。BP神经网络数学描述要点神经网络数学描述要点: 输入和输出的样本对的关系是连续非线性的,如: 各层输入与输出的关系 由权值wki和wjk构成的两个权重矩阵、两个偏差矩阵 (列矩

31、阵)的行列关系 网络计算目的与初始条件(输入与输出、样本对、初始 权值与偏差值)9.3. 3 学习算法 从本质上说,神经网络的训练问题是一个函数极小化问题,但由于它的数学基础是非线性理论,因系统的高度非线性使最初的BP算法存在效率低、收敛慢、易于陷入局部极小等缺陷,使神经网络在复杂系统中的应用受到限制。大部分新的研究都集中在算法的改进上,如共轭梯度算法、基于信息熵优化的算法、改进的改进的BP法法等。通过这些研究,使神经网络的应用得到进一步的发展。初始化神经网络训练结束吗?给定学习模式(输入/输出对)求隐含层、输出层神经元的输出计算实际输出与期望输出之差误差小于指定值?计算隐含层神经元误差计算误

32、差梯度权值修正给出新的输 入计算神经网络输出是是否否1、计算流程图2、算法步骤1)构造学习训练模式。给出输入、输出样本对P和T。P和T可以是向量,也可以是矩阵,它们不一定为同列。2)网络状态初始化。用随机化方法将两个权重矩阵Wki(行k=1,2,m,列i=1,2,n)、Wjk(行j=1,2,o)和两个偏差矩阵bi、bj置初始值。3)将P的值送到输入层神经元,通过连接权重矩阵Wki 送到隐含层神经元,产生隐含层神经元输出值tj为理想输出 5)计算输出层神经元的一般化误差 6)计算隐含层神经元对于每个ej的误差8)调整输入层到隐含层的连接权重此式相当于将输出层神经元的误差反向传播到隐含层。 7)调

33、整隐含层到输出层的连接权重 9)调整输出层神经元的偏差10)调整隐含层神经元的偏差11)重复第3)步至第10)步的内容,直到对于k=1,2,m的误差ej(j=1,2,q)变得足够小为止。 从上面的过程可以看出,BP网络的学习和训练分成两个阶段,在第一阶段里对于给定的网络输入,通过现有连接权重将其正向传播,获得各个神经元的实际输出;在第二阶段里,首先计算出输出层各神经元的一般化误差,这些误差逐层向输入层方向逆向传播,以获得调整各连接权重所需的各神经元参考误差。学习完成后的网络在预报时使用第3)、4)步中的正向传播公式。9.3. 4 网络的泛化能力 关于神经网络的泛化能力,有以下定义: 定义定义1

34、 当网络中的部分结点或连接权失效时,网络仍能保持正常或稳定的输入输出关系的特性称为网络的容错性(fault tolerance)。定义定义2当输入信息或连接网络的参数发生有限摄动时,网络仍能保持正常或稳定的输入输出关系的特性称为网络的鲁棒性(robustness)。定义定义3对于同一样本集里的非训练样本,网络仍能给出正确的输入输出关系的能力称为网络的泛化能力(generalization capability)。 网络的泛化能力依赖于网络结构的参数(如隐含层神经元数及其激活函数特性、隐含层数等)和训练样本的特性。由于BP网络算法的实质是非线性规划中的最速下降法,而非线性优化的任何局部搜索算法都

35、不可避免地存在局部极小问题。为了尽量避免局部极小,提高网络泛化能力,对网络结构参数及训练样本必须进行分析、研究和选择。9.3.5 算法的改进 许多实际问题都可以化成神经网络进行求解。对于连续非线性问题采用三层神经网络就足以逼近。但对更复杂的非线性问题,为提高神经网络的映射能力,一般需要增加网络的层数,这样就不可避免地增加了网络学习和计算的时间。为此,对算法进行改进,通过增加权重动量项增加权重动量项、学习速率的自适应学习速率的自适应调整调整以及权值和偏差值初始化的权值和偏差值初始化的N-WN-W法法提高学习效率和减少迭代次数。1、权重动量项 在网络里增加权重动量项是绝大部分改进方法里必涉及的内容

36、。具体做法是在迭代后的权重上加上某个动量因子。设wjk(n+1)表示当前的权重修正值,wjk(n)表示上一学习周期的权重修正值,即: 式中,01。计算时,用有动量项的权重算出新的网络输出误差,如果该输出误差大于用没有动量项的权重算出的网络输出误差的话,说明加动量项没有效果,则令=0,反之,要考虑加进动量项这一项。网络误差曲线2、学习速率的自适应调整 前节内容曾提出过,学习速率的选取对网络训练的效果有较明显的影响。学习速率过大n在此,我们讨论学习速率的自适应调整问题。其基本思路是根据网络输出误差的大小由算法自动调整学习速率的大小,计算原理如下:n (1)先求网络输出误差。如果SSE小于指定的误差

37、精度,则网络训练成功,否则转入下一步。以下各运算符号均表示矩阵或向量。 式中,P为输入样本矩阵,ONE为1行Nc列的全1矩阵,Nc为W1P矩阵的列数,ONE1为1行Nc1列的全1矩阵,Nc1为W2A1矩阵的列数,T为输出样本矩阵,f (z)为Sigmoid函数或双曲正切S函数。 (2)进入学习阶段。设定学习循环数以进行迭代,迭代过程计算原理为: 式中I为单位矩阵;ONES1为Pc行1列的全1矩阵,Pc是P的列数;ONES2为Pc1行1列的全1矩阵,Pc1是A1的列数;Lr为学习速率,其他符号的含义同前。将新的W1、B1和W2、B2代回第(1)阶段计算。 (3)学习速率自适应调整计算。首先赋值:

38、 TW1 =W1 TW2=W2 TB1=B1 TB2=B2然后将TW1、TW2和TB1、TB2代入第(1)步计算,得到TA1、TA2、TE、TSSE。如果TSSE大于SSE(取1.04左右),则经自适应调整的学习速率为Lr=1Lr(1取0.7左右),如果TSSE小于SSE,则经自适应调整的学习速率为Lr=2Lr(2取1.05左右),从而实现了学习速率的自适应调整。 (4)将TW1、TW2和TB1、TB2以及TA1、TA2、TE、TSSE再赋给W1、W2和B1、B2以及A1、A2、E、SSE,然后代入第(1)步计算,如果SSE小于指定的误差精度,则网络训练成功,否则的话,转入第(2)、(3)、(

39、4)步进行迭代计算。n训练中的学习速率变化 训练中的误差变化3、初始权值与偏差值随机化的Nguyen-Widrow法 通常的初始权重值与偏差值随机化方法都是在区间(-1,1)之间取均匀分布的随机数的函数,这样初始权重值W与偏差值B为: 式中s, r分别为隐含层神经元数和输入样本的行数,rand(s, r)为s行r列的均匀分布的随机数矩阵,I( s, r)为s行r列的全1矩阵,目的是保证权值分布在区间(-1, 1)范围内。 计算表明,它并不是很好的方法,对复杂的高非线性系统,它造成较低的计算效率。 Nguyen和Widrow提出的N-W法初始化权重值与偏差值,对计算效率的提高有较明显的效果。其计

40、算原理为 : 式中各符号的含义同前,normr(M)为M矩阵的标准化归 一矩阵 : 9.3.6 网络结构参数的确定1、学习速率的初始值的确定 在网络开始训练学习时,需要指定一个初始的学习速率。学习速率对网络的收敛情况有很大的影响,若取值大,虽然一开始网络学习效率很高,但到收敛精度附近很容易产生振荡,其结果反而不容易收敛;如果取值小,虽然“振荡”问题避免了,但网络的学习效率却很低。所以,学习速率初始值的选择是很重要的。 那么,究竟选多少好呢?根据BP神经网络的计算原理,学习速率的取值范围为0Lr ( i + j )2 或 k = i + j 2)设m为样本数,则最小的k为 : 3) c为1至10

41、之间的常数。 4) 5) 6)设 则由下式求出可k: 以上给出的算法有些并不是针对BP网络而定的,例如第1)、5)、6)中的公式就是如此。通过实例计算分析,第2)种方法求出的隐含层神经元个数较好,它对网络训练效率的提高是有明显效果的。 例如:m=60,i=8, 由此式计算出的最小k=6。3、网络收敛精度的确定 网络收敛精度对神经网络的训练效率有着最直接的影响,其影响率是非线性的,也就是说,收敛精度提高10倍,训练的循环迭代次数可能增加几百倍。 网络收敛精度的确定要从两个主要方面来考虑,一是所研究问题的情况,一是精度与网络计算次数之间的最佳协调。如果所研究的问题有很强的规律性,则可以把收敛精度提

42、高,一般可以达到10-4到10-6;如果所研究的问题非线性程度高且为工程实际问题,则要牺牲一些精度,一般取在210-3左右。从另一方面来说,如果提高收敛精度并不明显增加计算次数的话,则要考虑适当提高收敛精度;如果提高收敛精度明显增加计算次数、且对训练后的网络的预报精度没有明显提高的话,则要适当降低网络的收敛精度。9.4BP神经网络应用神经网络应用9.4.1函数逼近n1989年,Robert Hecht-Nielson 证明了对于闭区间内的任一个连续函数都可以用一个隐层的BP网络来逼近,因而一个三层的BP网可以完成任意的n维到m维的映射。例网络设计n确定网络结构n这是一个具有一个输入、一个输出和

43、五个中间(隐层)神经元的神经网络计算程序。输入输出样本数是21个。网络结构如图:网络设计(Cont.)n初始权值;n学习速率;n期望误差。程序设计程序设计n给出输入样本P和输出样本T,绘制期望曲线,一个近似正弦波形(图),P和T都是一个21个元素的行向量;n初试化权值和偏差值,给出一组输入样本P2,打印初始输出图形(图);n网络训练阶段。根据误差不断调整权值及偏差 值进行学习,最终得到网络结构参数;n打印最终结果:两个权值矩阵及两个偏差矩 阵、迭代次数和误差等信息(图)。函数逼近代码n% bp1nP=-1:0.1:1;nP2=-1:0.1:1;nT=-0.96 -0.577 -0.0729 0

44、.377 0.641 0.66 0.461 0.1336 .n -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 .n 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201;nplot(P,T,r+);nR,Q=size(P);S2,Q=size(T);S1=5;nW1,B1=rands(S1,R);nW2,B2=rands(S2,S1);nb1=;b2=;nb1=B1*ones(1,21);nb2=B2*ones(1,21); na2=W2*tansig(W1*P2+b1)+b2;nA2=purelin(a2);

45、nhold onnplot(P,A2)nhold offndisp(按任一键继续)npausennet=newcf(minmax(P),5,1,tansig,purelin,traingd); nnet.trainParam.epochs=7000; nnet.trainParam.goal=9.5238e-004; % sse=0.02nnet.trainParam.lr = 0.15;nnet,tr=train(net,P,T); %训练网络nY=sim(net,P) ; %计算结果nplot(P,Y,r-) nholdnplot(P,T,r+);nhold off返返 回回返返 回回返返

46、 回回n迭代了1900次。改进?返返 回回一种改进控制初始权值n% bp6;n%nP=-1:0.1:1;n%P2=-1:0.1:1;nT=-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 .n -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 .n 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201;nnet=newcf(minmax(P),5,1,tansig,purelin,traingd); nnet.initParam = ;nnet = initnw(

47、net,1);nw0 = net.iw1,1,nb0 = net.b1,nw1 = net.lw2,1,nb1 = net.b2,ndisp(按任一键继续)npauseny=sim(net,P); %初始输出nplot(P,T,ro) %画输入矢量图 nhold onnplot(P,y) %画输出矢量图nhold offnnet.trainParam.epochs=7000; %初始化训练次数nnet.trainParam.goal=9.5238e-004; % sse=0.02;nnet.iw1,1=w0*0.5;net.b1=b0*0.5;nnet.trainParam.lr = 0.15

48、;nnet tr=train(net,P,T); %训练网络nY=sim(net,P); %计算结果nfigure(2)nplot(P,T,ro) %画输入矢量图 nhold onnplot(P,Y) %画输出矢量图nhold off改进结果9.4.2字母识别n图像采集与预处理Prodat.mn% prodat.m prob1.m调用的字母产生程序nfunctionalphabet,targets = prodat()n%Returns:n% ALPHABET - 35x26 matrix of 5x7 bit maps for each letter.n% TARGETS - 26x26 t

49、arget vectors.nletterA = 0 0 1 0 0 .n 0 1 0 1 0 .n 0 1 0 1 0 .n 1 0 0 0 1 .n 1 1 1 1 1 .n 1 0 0 0 1 .n 1 0 0 0 1 ;nletterB = 1 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 1 1 1 0 ;nletterC = 0 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 0 0 0 1

50、.n 0 1 1 1 0 ;nletterD = 1 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 1 1 1 0 ;nletterG = 0 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 0 0 1 1 .n 1 0 0 0 1 .n 0 1 1 1 0 ;nletterH = 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 1 1 1 1 .n 1 0 0 0 1 .n 1 0 0 0 1

51、.n 1 0 0 0 1 ;nletterI = 0 1 1 1 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 1 1 1 0 ;nletterE = 1 1 1 1 1 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 1 1 1 0 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 1 1 1 1 ;nletterF = 1 1 1 1 1 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 1 1 1 0 .n 1 0 0 0 0 .n 1 0 0 0 0

52、.n 1 0 0 0 0 ;Prodat.m(cont.)nletterJ = 1 1 1 1 1 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 1 0 1 0 0 .n 0 1 0 0 0 ;nletterK = 1 0 0 0 1 .n 1 0 0 1 0 .n 1 0 1 0 0 .n 1 1 0 0 0 .n 1 0 1 0 0 .n 1 0 0 1 0 .n 1 0 0 0 1 ;nletterL = 1 0 0 0 0 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 0 0 0

53、0 .n 1 0 0 0 0 .n 1 1 1 1 1 ;nletterM = 1 0 0 0 1 .n 1 1 0 1 1 .n 1 0 1 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 ;nletterN = 1 0 0 0 1 .n 1 1 0 0 1 .n 1 1 0 0 1 .n 1 0 1 0 1 .n 1 0 0 1 1 .n 1 0 0 1 1 .n 1 0 0 0 1 ;nletterO = 0 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0

54、1 .n 1 0 0 0 1 .n 0 1 1 1 0 ;nletterP = 1 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 1 1 1 0 .n 1 0 0 0 0 .n 1 0 0 0 0 .n 1 0 0 0 0 ;nletterQ = 0 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 1 0 1 .n 1 0 0 1 0 .n 0 1 1 0 1 ;nletterR = 1 1 1 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 1 1 1 0 .n 1 0 1 0

55、0 .n 1 0 0 1 0 .n 1 0 0 0 1 ;nletterS = 0 1 1 1 0 .n 1 0 0 0 1 .n 0 1 0 0 0 .n 0 0 1 0 0 .n 0 0 0 1 0 .n 1 0 0 0 1 .n 0 1 1 1 0 ;Prodat.m(cont.)nletterT = 1 1 1 1 1 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 ;nletterU = 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0

56、0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 0 1 1 1 0 ;nletterV = 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 0 1 0 1 0 .n 0 0 1 0 0 ;nletterW = 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 0 0 1 .n 1 0 1 0 1 .n 1 1 0 1 1 .n 1 0 0 0 1 ;nletterX = 1 0 0 0 1 .n 1 0 0 0 1 .n 0 1 0 1 0 .n 0 0 1

57、0 0 .n 0 1 0 1 0 .n 1 0 0 0 1 .n 1 0 0 0 1 ;nletterY = 1 0 0 0 1 .n 1 0 0 0 1 .n 0 1 0 1 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 .n 0 0 1 0 0 ;nletterZ = 1 1 1 1 1 .n 0 0 0 0 1 .n 0 0 0 1 0 .n 0 0 1 0 0 .n 0 1 0 0 0 .n 1 0 0 0 0 .n 1 1 1 1 1 ;nalphabet = letterA,letterB,letterC,letterD,letterE,lett

58、erF,letterG,letterH,.n letterI,letterJ,letterK,letterL,letterM,letterN,letterO,letterP,.n letterQ,letterR,letterS,letterT,letterU,letterV,letterW,letterX,.n letterY,letterZ;ntargets = eye(26);charecg.mn% charecg.mnalphabet,targets = prodat;nP =alphabet;% alphabet = letterA, letterB, ., letterZ ;nT =

59、 targets;% targets = eye(26);nR,Q = size(P);nS1 = 10;nS2,Q = size(T);nnet = newff(minmax(alphabet),S1 S2,logsig logsig,traingdx);nnet.LW2,1 = net.LW2,1*0.01;nnet.b2 = net.b2*0.01;n% 无噪声字母识别网络的训练nnet.performFcn = sse; %执行函数为误差平方和函数nnet.trainParam.epochs=800; %最大训练步长nnet.trainParam.lr=0.01; %学习率nnet.t

60、rainParam.lr_inc =1.05; %增长的学习率nnet.trainParam.lr_dec =0.7;nnet.trainParam.goal=0.1; %执行函数目标值nnet.trainParam.mc =0.9; %附加动量因子nnet.trainParam.min_grad=1e-10; %最小执行梯度nnet.trainParam.show = 50;nP = alphabet;nT = targets;nnet,tr = train(net,P,T);charecg.m(cont.)npause % 按任意键继续n% 具有噪声的输入矢量识别网络的训练nnetn =

61、net;nnetn.trainParam.goal = 0.1; %目标误差.nnetn.trainParam.epochs = 300; %最大训练步长.nfor pass=1:10n fprintf(Pass = %.0fn,pass);nT = targets targets targets targets;n P = alphabet, alphabet, .n (alphabet + randn(R,Q)*0.1), .n (alphabet + randn(R,Q)*0.2);n netn,tr = train(netn,P,T);nendcharecg.m(cont.)npaus

62、e % 按任意键继续n% 再次用无噪声字母训练识别网络nnetn.trainParam.goal = 0.1; % 均方误差目标.nnetn.trainParam.epochs = 500; % 最大训练步长nnet.trainParam.show = 5; % 训练中显示的频率nP = alphabet;nT = targets;nnetn,tr = train(netn,P,T);npause % 按任意键测试所训练的网络性能n% 测试所训练的网络性能n% =nnoise_range = 0:.02:0.2;nmax_test = 100;nnetwork1 = ;nnetwork2 =

63、;nT = targets;charecg.m(cont.)n% PERFORM THE TESTnfor noiselevel = noise_rangen fprintf(Testing networks with noise level of %.2f.n,noiselevel);n errors1 = 0;n errors2 = 0;n for i=1:max_testn P = alphabet + randn(35,26)*noiselevel;n % TEST NETWORK 1n A = sim(net,P);n AA = compet(A);n errors1 = error

64、s1 + sum(sum(abs(AA-T)/2;n % TEST NETWORK 2n An = sim(netn,P);n AAn = compet(An);n errors2 = errors2 + sum(sum(abs(AAn-T)/2;n echo offn endn % 100组26个矢量的平均误差 n network1 = network1 errors1/26/100;n network2 = network2 errors2/26/100;nendnecho onn pause % 按任意键显示结果n% 显示结果n% =nclfnplot(noise_range,netwo

65、rk1*100,-,noise_range,network2*100);ngridnxlabel(Noise Level);nylabel(Percentage of Recognition);necho offn %三种情况下字母Y的表示情况nnoisyY1 = alphabet(:,25)+randn(35,1) * 0.2;nfigure(2);nplotchar(noisyY1);nnoiseY2=alphabet(:,25)+randn(35,1)*0.1;nfigure(3);nplotchar(noiseY2);nidealY=alphabet(:,25);nfigure(4)nplotchar(idealY);n噪声0.2n噪声0.1n正常n进一步的改善:n增加训练时间;n改变网络结构,如增加隐层神经元数;n提高输入样本分辨率;n训练时有意增加噪声;n等等。课堂思考n如何采用BP网络,设计邮政编码识别系统?

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号