神经网络在数学建模竞赛中的应用

上传人:gbs****77 文档编号:9658372 上传时间:2020-04-07 格式:DOC 页数:53 大小:2.63MB
返回 下载 相关 举报
神经网络在数学建模竞赛中的应用_第1页
第1页 / 共53页
神经网络在数学建模竞赛中的应用_第2页
第2页 / 共53页
神经网络在数学建模竞赛中的应用_第3页
第3页 / 共53页
点击查看更多>>
资源描述
第1章 引言1.1 人工神经网络的介绍人工神经网络(Artificial Neural Networks, ANN),亦称为神经网络(Neural Networks,NN),是由大量的处理单元(神经元Neurons)广泛互联而成的网络,是对大脑的抽象、简化和模拟,反映人脑的基本特性.人工神经网络的研究是从人脑的生理结构出发来研究人的智能行为,模拟人脑信息处理的功能.它是根植于神经科学、数学、物理学、计算机科学及工程等科学的一种技术.人工神经网络是由简单的处理单元所组成的大量并行分布的处理机,这种处理机具有储存和应用经念知识的自然特性,它与人脑的相似之处概括两个方面:一是通过学习过程利用神经网络从外部环境中获取知识;二是内部神经元(突触权值)用来存储获取的知识信息.人工神经网络具有四个基本特征:(1)非线性 非线性关系是自然界的普遍特性.大脑的智慧就是一种非线性现象.人工神经元处于激活或抑制二种不同的状态,这种行为在数学上表现为一种非线性关系.具有阈值的神经元构成的网络具有更好的性能,可以提高容错性和存储容量.(2)非局限性 一个神经网络通常由多个神经元广泛连接而成.一个系统的整体行为不仅取决于单个神经元的特征,而且可能主要由单元之间的相互作用、相互连接所决定.通过单元之间的大量连接模拟大脑的非局限性.联想记忆是非局限性的典型例子.(3)非常定性 人工神经网络具有自适应、自组织、自学习能力.神经网络不但处理的信息可以有各种变化,而且在处理信息的同时,非线性动力系统本身也在不断变化.经常采用迭代过程描写动力系统的演化过程.(4)非凸性 一个系统的演化方向,在一定条件下将取决于某个特定的状态函数.例如能量函数,它的极值相应于系统比较稳定的状态.非凸性是指这种函数有多个极值,故系统具有多个较稳定的平衡态,这将导致系统演化的多样性.人工神经网络是近年来的热点研究领域,涉及到电子科学技术、信息与通讯工程、计算机科学与技术、电器工程、控制科学与技术等诸多学科,其应用领域包括:建模、时间序列分析、模式识别和控制等,并在不断的拓展.本文正是居于数学建模的神经网路应用.1.2 人工神经网络发展历史 20世纪40年代中期期,在科学发展史上出现了模拟电子计算机和数字电子计算机两种新的计算工具和一种描述神经网络工作的数学模型.由于电子技术(特别是大规模、超大规模集成电路)的发展,使数字电子计算机作为高科技计算工具已发展到当今盛世地步,而人工神经网络模拟仿真生物神经网络的探索则经历了半个世纪的曲折发展道路.1.2.1 兴起阶段1943年心理学家WSMcCulloch和数学家Pitts首先以数理逻辑的方法研究用人工神经网络模拟、仿真和近似生物神经网络的探索,并提出MP神经元模型.1949年D.OHebb从心理学的角度提出了至今仍对神经网络理论有着重要影响的Hebb学习法则.50年代末到60年代初,神经网络系统已开始作为人工智能的一条途径而受到人们的重视.1961年ERosenblatt提出了著名的感知机(Perceptron)模型.这个模型由简单的阀值性神经元构成,初步具备了诸如学习性、并行处理、分布存贮等神经网络的一些基本特征,从而确立了从系统角度进行人工神经网络研究的基础. 1962年Widrow提出了主要适用于自适应系统的自适应线性元件(Adaline)网络.神经网络的研究进入了一个高潮.1.2.2 萧条阶段在整个70年代中,对神经网络理论的研究进展缓慢,原因主要来自于科技界漫不经心的对待和数字计算机飞速发展的冲突,但并没有完全停顿下来.世界上一些对神经网络抱有坚定信心和严肃科学态度的学者们,没有放弃他们的努力.在这期间,Grossberg提出了自适应共振理论(ART);芬兰学者Kohono提出了自组织映射理论(SOM);日本的福岛邦彦提出了认知机(Cognitron)模型,随后又提出了改进至新认知机(Neocognitron)模型;另一位日本学者中野馨提出了联想记忆模型一联想机(Associatron);东京大学的甘利俊一博土则一直致力于数学理论解释神经网络.70年代末期以来,复杂行为系统理论(如耗散结构、协同学、混吨)的出现,人们认识到人工智能、联想记忆学习算法、信息优化组合处理及杉式识别的重要性,极大地推动了人工神经网络的发展.1.2.3 兴盛阶段进入80年代,特别是80年代末期,神经网络的研究从复兴很快转入了新的热网.主要原因来自两个方面:一方面经过十几年迅速发展起来的以逻辑符号处理为主的人工智能理论和Von Neumann计算机在处理诸如视觉、听觉、形象思维、联想记忆等智能信息处理问题上受到了挫折;另一方面,80年代并行分布处理模式的神经网络本身的研究成果,使人们看到了新的希望.这一时期首先要提到的是美国加州理工学院的物理学家Hopfield的开拓性工作.1982年他提出了一个新的神经网络模型Hopfield网络模型,并首次引入了网络能量函数概念,使网络稳定性研究有了明确的判据.尤其是1986年R Mmelhart和McCelland及其研究小组提出的误差逆传播学习算法,成为至今影响最大的一种网络学习方法.到90年代以后,人工神经网络从理论研究到软件开发、软件实现、各个学科领域广泛应用与相互渗透等诸多方面取得了全面的发展.有关神经网络的国际学术组织纷纷成立,学术会议纷纷召开,学术刊物纷纷创刊.神经网络理论已涉及到了神经生理科学、认识科学、数理科学、心理学、信息科学、计算机科学、微电子学、光学、生物电子学等众多学科,是一门新兴的、综合性的前沿学科.针对不同应用目的的软件开发全面展开,网络计算机的硬件实现方面也取得了一些实实在在的成绩.神经网络的应用,已渗透到模式识别、图像处理、非线性优化、语音处理、自然语言理解、自动目标识别、机器人、专家系统等各个领域,并取得了令人瞩目的成果.总之,以Hopfield教授1982年发表的论文为标志,掀起了神经网络的研究热潮.1987年6月,在美国加州举行了第一届NN国际会议,有一千多名学者参加,并成立了国际NN学会,以后每年召开两次国际联合NN大会(IJCNN),其他国际学术会议也都列有NN主题.较有影响的国际刊物有:IEEE Transaction on Neural Network和Neural Network.美国IBM、AT&T、贝尔实验室、神经计算机公司、各高校、美国政府制定了“神经、信息、行为科学(NIBS)”计划,投资5.5亿美元作为第六代计算机的研究基础;美国科学基金会、海军研究局和空军科学研究部三家投资一千万美元;美国国防部DARPA认为NN“看来是解决机器智能的唯一希望”“这是一项比原子弹工程更重要的计术”投资四亿美元.主要研究目标:目标识别与追踪、连续语音识别,声纳信号辨别.日本的富士通、日本电气、日立、三菱、东芝急起直追.1988年日本提出了所谓的人类尖端科学计划(Human Frontier Science Program),即第六代计算机研究计划.法国提出了“尤里卡”计划,还有德国的“欧洲防御”和前苏联的“高技术发展”等等.我国于1989年在北京召开了一个非正式的NN会议;1990年12月在北京召开了中国NN大会;1991年在南京成立中国NN学会,由国内十五个一级学会共同发起“携手探智能,联盟攻大关”的863高技术研究计划;自然科学基金、国防科技预研究基金也都列入了NN研究内容.1.3 人工神经网络1.3.1 生物神经元模型在人类大脑皮层中大约有100亿个神经元,60万亿个神经突触以及他们的联接体.单个神经元处理一个事件需要秒,而在硅芯片中处理一事件只需秒.但人脑是一个非常高效的结构,大脑中每秒钟每个动作的能量约为焦耳.神经元是基本的信息处理单元.生物神经元主要由树突、轴突和突触组成.其结构示意如如图1-1所示.其中树突是由细胞体向外伸出的,有不规则的表面和许多较短的分支.树突突触树突轴突神经末梢细胞膜细胞质细胞核图1-1 生物神经元模型相当于信号的输入端,用于接收神经冲动.轴突由细胞体向外伸出的最长的一条分支,即神经纤维.相当于信号的输出电缆,其端部的许多神经末梢为信号输出端子,用于传出神经冲动.神经元之间通过轴突(输出)和树突(输入)相互联接,其接口称为突触.每个细胞约有个突触.神经突触是调整神经元之间相互作用的基本结构和功能单元,最通常的一种神经突触是化学神经突触,它将得到的电信号化成化学信号,再将化学信号转化成电信号输出.这相当于双接口设备.它能加强兴奋或抑制作用,但两者不能同时发生.细胞膜内外有电位差,越位,称为膜电位.膜外为正,莫内为负.神经元作为信息处理的基本单元,具有如下重要的功能.1) 可塑性:可塑性反映在新突触的产生和现有的神经突触的调整上,可塑性使适应周围的环境. 2)时空整合功能:时间整合功能表现在不同时间、同一突触上;空间整合功能表现在同一时间、不同突触上.3)兴奋与抑制状态:当传入冲动的时空整合结果,使细胞膜电位升高,超过被称为动作电位的阀值(约为40mv),细胞进入兴奋状态,产生神经冲动,由突触输出;同样,当膜电位低于阀值时,无神经冲动输出,细胞进入抑制状态.4)脉冲与电位转换:沿神经纤维传递的电脉冲为等幅、恒宽、编码的离散脉冲信号,而细胞电位变化为连续信号.在突触接口处进行“数/模”转换.神经元中的轴突非长和窄,具有电阻高、电压大的特性,因此轴突可以建模成阻容传播电路.5)突触的延时和不应期:突触对神经冲动的传递具有延时和不应期,在相邻的二次冲动之间需要一个时间间隔.在此期间对激励不响应,不能传递神经冲动.6)学习、遗忘和疲劳:突触的传递作用有学习、遗忘和疲劳的过程.1.3.2 人工神经网络的模型人工神经网络是由大量处理单元广泛互连而成的网络,是人脑的抽象、简化、模拟,反映人脑的基本特性.一般神经元模型应该具备三个要素:(1)具有一组突触或联接,常用表示神经元和神经元之间的联系强度,或称之为权值.与人脑神经元不同,人工神经元权值的取值可在负值与正值之间.(2)具有反映生物神经元时空整合功能的输入信号累加器.(3)具有激励函数用于限制神经元输出.激励函数将输出信号压缩(限制)在一个允许范围内,使其成为有限值,通常,神经元输出的扩充范围在或闭区间.一个典型的人工神经元模型如图1-2所示.图1-2 人工神经元模型其中为神经元的输入信号,为突触强度或联接权.是由输入信号线性组合后的输出,是神经元的净收入.为神经元的阀值或称为偏差用表示,为经偏差调整后的值,也称为神经元的局部感应区. (1-1) (1-2)是激励函数,是神经元的输出. (1-3) 激励函数可取不同的函数,但常用的基本激励函数有以下三种:(1)阀值函数(Threshold Function) (1-4)该函数通常也称为阶跃函数,常用表示,如图1-3a所示.若激励函数采用阶跃函数,则图1-2所示的人工神经元模型即为著名的MP(McCulloch-Pitts)模型.此时神经元的输出取1或0,反映了神经元的兴奋或抑制.此外,符号函数也常常作为神经元的激励函数,如图1-3b所示. (1-5)图1-3 a 阀值函数图1-3 b 阀值函数(2)分段线性函数(Piecewise-Linear Function) (1-6)该函数在-1,+1线性区内的放大系数是一致的,如图1-4所示,这种形式的激励函数可看作是非线性放大器的近似,以下是两种情况是分段线性函数的特殊形式:图1-4 分段线性函数1)若在执行中保持线性区域而使其不进入饱和状态,则会产生线性组合器.2)若线性区域的放大倍数无限大,则分段线性函数简化为阀值函数.(3)Sigmoid函数Sigmoid函数也称函数.到目前为止,它是人工神经网络中最常用的激励函数.型函数的定义如下: (1-7) 其中为Sigmoid函数的斜率参数,通过改变参数,我们会获取不同斜率的Sigmoid函数,如图1-5所示.图1-5 Sigmoid函数 但斜率参数接近无穷大时,此函数转化为简单的阀值函数,但Sigmoid函数对应0到1一个连续区域,而阀函数对应的只是0和1亮点,此外Sigmoid函数是可微的,而阀值函数是不可微的.Sigmoid函数也可用双曲正切函数来表示,如图1-6所示. (1-8)图1-6 双曲正切函数由式(1-8)定义的Sigmoid类型激励函数所得到的负责具有分析价值.1.4 人工神经网络的分类及学习规则前面介绍人工神经元模型,将大量的神经元进行连接可构成人工神经网络.神经网络中神经元的联结方式与用于训练网络的学习算法是紧密结合的,可以认为应用于神经网络设计中的学习算法是被结构化了的.1.4.1 人工神经网络的分类本文将网络结构和学习算法相结合,对人工神经网络进行分类.1. 单层前向网络所谓单层前向网络是指拥有的计算节点(神经元)是“单层”的,如图1-7所示.这里原节点个数的“输入层”看作一层神经元,因为该“输入层”不具有执行计算的功能.后面介绍的单层感知器属于单层前向网络.2. 多层前向网络多层前向网络和单层前向网络的区别在于:多层前向网络含有一个或多个的隐含层,其中计算节点被相应地称为隐含神经元或隐含单元,如图1-8所示.图1-8所示的多层前向网络由含有10个神经元输入层、含有4个神经元隐含层和2个神经元输出层所组成.网络输入层中的每个源节点的激励模式(输入向量)单元组成了应用于第二层(如第一隐层)中神经元(计算节点)的输入信号,第二层输出信号成为第三层的输入,其余层类似.网络每一层的神经元只含有作为它们输入前一层的输出信号,网络输出层(终止层)神经元的输出信号组成了对网络中输入层(起始层)源节点产生的激励模式的全部响应.即信号从输入层输入,经隐含层传给输出层,由输出层得到输出信号.图1-7 单层前向网络图1-8 多层前向网络通过加入一个或更多的隐层,使网络能提取出更高的统计,尤其当输入层规模庞大时,隐神经元提取高序统计数据的能力便显得格外重要.后面我们介绍的多层感知器属于多层前向网络.3. 反馈网络所谓反馈网络是指在网络中至少含有一个反馈回路的神经网络.反馈网络可以包含一个单层神经元,其中每个神经元将自身的输出信号反馈给其他所以神经元的输入,如图1-9所示,图中所示的网络即为著名的Hopfied网络.图1-10所示的是另一类型的含有隐层的反馈网络,图中的反馈联结起始于隐神经元和输出神经元.图1-9和图1-10所示的网络结构中没有自反馈回路.自反馈是指一个神经元的输出反馈至其输入,含有自反馈的网络也属于反馈网络.图1-9 无自反馈和隐含层的反馈网络图1-10 含有隐含层的反馈网络此外,常见的人工神经网络该有竞争神经网络和随机神经网络,在这里就不详加探讨.1.4.2 神经网络的学习神经网络的学习也称为训练,它是通过向环境学习而获取知识并改进自身性能,是NN的一个重要特点.一般情况下,性能的改善是按某种预定的度量通过调节自身参数(如权值)逐步达到的,学习方式(按环境所提供信息的多少分)有三种.(1) 监督学习(有教师学习)这种学习方式需要外界存在一个“教师”,他可对一组给定输入提供应有的输出结果(正确答案).这组已知的输入输出数据称为训练样本集.学习系统(NN)可根据已知的输出与实际输出之间的差值(误差信号)来调节系统参数.(如图1-11)所示.图1-11 监督学习框图(2) 非监督学习(无教师学习)非监督学习时不存在外部教师,学习系统完全按照环境所提供数据的某些统计规律来调节自身参数或结构(这是一种自组织过程),一表示外部输入的某种固有特征(如聚类,或某种统计上的分布特征).如图1-12所示.图1-12 非监督学习框图(3) 再励学习(或强化学习)这种学习介于上述两种情况之间,外部环境对系统输出结果只给出评价(奖或罚)而不给出正确答案,学习系统通过强化那些受奖励的动作来改善自身特性.图1-13 再励学习框图下面介绍基本的神经网络学习算法.1. 纠错学习首先我们考虑一个简单的情况在:设某神经网络的输出层只有一个神经元,给该神经网格上输入,这样就产生输出,称该输出为实际输出.对于所加上的输入,我们期望该神经网络的输出,称为期望输出或目标输出.实际输出与期望输出之间存在着误差,用表示. (1-9)现在要调整突触权值,使误差信号减少.为此,可设定代价函数或性能指数: (1-10)反复调整突触权值使代价函数达到最小或使系统达到一个稳定状态(即突触权值稳定),就完成了学习过程.该学习过程称为纠错学习,也称为Delta规则或者WindrowHoff规则.表示神经元到的突触权值,在学习步骤为时对突触权值的调整为 (1-11)为学习速率参数.式(1-11)表明:对神经元突触权值的调整与突触信号和输入信号成正比例.纠错学习实际上是局部的,Delta规则所规定的突触调整局限于神经元的周围.得到之后,定义突触权值的校正值为 (1-12)和可以分别看做突触权值的旧值和新值. 2. Hebb学习神经心里学家Hebb提出学习规则可归结为“当某一突触(连接)两端的神经元的激活同步(同为激活或同为抑制)时,该连接的强度应增强,反之应减弱”.用数学方式可描述为 (1-13)式中,分别为两端的神经元的状态,其中最常用的一种情况为 (1-14)由于与,的相关成比例,有时称之为相关学习规则. 3. 竞争学习顾名思义,在竞争中学习时网络各输出单元相互竞争,最后达到只有一个最强者激活.最常见的一种情况是输出神经元之间有侧向抑制性连接,这样众多输出单元中如有某一单元较强,则它将获胜并抑制其他单元,最后只有比较强者处于激活状态.最常用的竞争学习规则可写为 (1-15)此外,还有两个基本的神经网络学习规则,即基于记忆的学习和随机学习算法.在此不详加讨论.第二章 三种神经网络模型及其MATLB仿真算法2.1 单层前向网络模型及其仿真算法2.1.1 感知器的概念感知器(Perceptron)是美国心理学家Rosenblatt于1957年提出来的,它是最基本的但具有学习功能的层状网络(Layed Network).最初的感知器由三层组成,即S(Sensory)层、A(Association)层和R(Response)层,如图3-1所示.S层和A层之间的耦合是固定的,只有A层和R层之间的耦合程度(即权值)可通过学习改变.若在感知器的A层和R层加上一层或多层隐单元,则构成的多层感知器具有很强的处理功能,假如感知器隐层的节点可根据需要自由设置,那么用三层(不包括S层)的阈值网络可以实现任意的二值逻辑函数.应注意,感知器学习方法在函数不是线性可分时得不出任何结果,另外也不能推广到一般前向网络中去.其主要原因是转移函数为阈值函数,为此,人们用可微函数如Sigmoid函数来代替阈值函数,然后采用梯度算法来修正权值.BP网络就是采用这种算法的典型网络.图2-1图2-22.1.2 单层感知器单层感知器是指包含一个突触权值可调的神经元的感知器模型,它的训练算法是Rosenblatt在1958年提出来的.感知器是神经网络用来进行模式识别的一种最简单模型,但是由单个神经元组成的单层感知器只能用来实现线性可分的两类模式的识别. 单层感知器模型如图1-2所示,它包括一个线性累加器和一个二值阀值元件,同时还有一个外部偏差.当二值阀值元件的输入是正数,神经元就输出+1,反之其输入是负数,则产生输出-1.即 (2-1) (2-2)2.1.3 单层感知器神经网络的学习感知器权值的学习是通过给定的教师信号(即希望的输出)按学习规则,即式(2-3)进行的: (2-3)式中,为当前的权值矩阵;为教师信号;为控制权值修正速度的常数;为感知器的输出值;即 (2-4)由于感知器一般用于线性可分样本的分类,激发函数选为阈值型函数,因而当式(2-1-4)中的时,该式可写成 (2-5)权值的初值一般取较小的非零随机数.2.2 线性神经网络线性神经网络同感知器相似,是最简单的一种神经元络,同感知器不同的是,在MATLAB中,线性神经网络输出的激发函数为线性函数purelin,而感知器模型的激发函数为符号函数hardlim,因此感知器模型中只可取0或者1,而线性神经网络输出的数值可以是任意数值,这一点也决定了线性神经网络同感知器应用范围的不同.本节将简单介绍线性神经网络的原理,通过实例演示MATLAB神经网络工具箱线性神经网络涉及函数,并讲解线性神经网络的应用.2.2.1 线性神经网络原理性神经网络由多个线性神经元模型构成,单个线性神经元模型的结构可以参考图2-3.线性网格的激发函数为线性purelin函数,其输出可以为任意值.图2-3 单线性神经元模型结构 当输入向量为的个数为N,单线性神经元同样由输入系数和阀值.当感知器神经元模型中包含多个神经元时,只需要将多个线性神经元串联,并形成网格拓扑机构,同时对应于个神经元输出,那么第个神经元的输出为 (2-6)感知器的输出函数由线性传递函数使用purelin函数实现.第个神经元经过线性传递函数后的输出为 (2-7)在MATLAB命令窗口输入:x=-5:0.01:5;y=purelin(x);plot(x,y) 运行程序后得到线性神经元purelin函数曲线如图2-4所示.图2-4 线性神经元purelin函数曲线2.2.2 线性神经网络相关的MATLAB函数MATLAB神经网络工具箱提供了一系列函数进行线性神经网络的设计和分析,下面主要分别介绍线性神经网络构建函数newlin、线性神经网络设计函数newlind.1. 线性神经网络构建函数newlinnewlin函数的调用格式如下:net=nelin(PR,S,ID,LR)其中,PR为的输入向量最大最小值构成的矩阵,S为输出向量的个数,ID为输入延迟向量,LP为学习速率,学习速率可以使用maxlinlr函数进行计算,通过学习速率越大,网络训练时间越短,但同时也导致学习过程不稳定.如果P为训练样本数据,那么maxlinlr(P)返回一个不带阀值的线性层所需要的最大学习率,而maxlinlr(P,bias)返回一个带阀值的线性层所需要的最大学习率. 2. 线性层设计函数newlind函数 在MATLAB神经网路工具箱中,还可以使用newlind设计一个线性层,其调用格式如下:net=newlind(P,T,Pi)其中P、T分别是训练样本的输入矩阵和目标输出向量,Pi是初始输入延时cell向量.2.3 多层前向神经网络模型及BP学习算法前面我们介绍了单层感知器,它的缺点是只能解决线性可分问题,要增强网络的分类能力唯一的方法是采用多层网络,即在输入与输出之间加上隐含层,从而构成多层感知器(Multilayer Perceptrons,MLP).这种由输入层、隐含层(一层或者多层)和输出层构成的神经网络称为多层前向神经网络.本节将介绍两个常见的多层前向网络:多层感知器和径向基函数神经网络,详细介绍多层感知器的学习算法著名的误差反向传播算法(BP算法)及其改进算法.BP算法训练的神经网络,称之为BP神经网络.在人工神经网络的实际应用中,BP网络广泛应用于函数逼近、模式识别/分类、数据压缩等,的人工神经网络模型采用BP网络或它的变化形式,它也是前馈网络的核心部分,体现了人工神经网络最精华的部分.所以,本节也会重点探讨BP神经网络的应用.2.3.1 多层感知器多层感知器是单层感知器的推广,但是它能够解决单层感知器所不能解决的非线性可分问题.多层感知器由输入层、隐含层和输出层组成,其中隐含层可以是一层或多层.其拓扑结构如图2-5所示.图2-5 多层感知器模型输入层神经元的个数为输入信号的维数,隐含层个数以及隐节点的个数视具体情况而定,输出神经元的个数为输出信号的维数.多层感知器同单层感知器比具有四个明显的特点:(1)除了输入输出层,多层感知器含有一层或者多层隐单元,隐单元从输入模式中提取更多有用的信息,使网络可以完成更复杂的任务.(2)多层感知器中每个神经元的激励函数是可微的Sigmoid函数,如 (2-8)式中是第个神经元的输入信号,是该神经元的输出信号.(3)多层感知器具有独特的多个突触使得网络更具有连通性,联接域的变化或权值的变化都会引起连通性的变化.(4)多层感知器具有独特的学习算法(BP算法),所以多层感知器也常常称之为BP网络.多层感知器的这些特点,使它具有强大的计算能力.多层感知器是目前应用最广泛的一种神经网络.2.3.2 BP学习算法20世纪80年代中期,美国加利福尼亚的PDP(parallel distributed procession)小组于1986年发表了Parallel Distributed Procession一书,该书的出版对BP算法产生了重要的影响.BP算法解决了多层感知器的学习问题,促进了神经网络的发展.1. BP学习过程的描述(1)工作信号的传播:输入信号从输入层经隐单元,传向输出层,在传出端产生输出信号,这是工作信号的正向传播.在信号的向前传递过程中网络的权值是固定不变的,每一层神经元的状态只影响下一层神经元的状态.如果在输出层不能得到期望的输出,则输入误差信号反向传播.(2)误差信号反向传播:网络的实际输出与期望输出之间的差值即为误差信号,误差信号由输出端开始逐层向前传播,这是误差信号是反向传播.在传播的过程中,网络的权值由误差反馈进行调节.通过权值的不断修正使网络的实际输出更接近期望输出.图2-6 工作信号正向传播,误差信号反向传播图2-6为多层感知器的一部分,其中有两种信号:一是工作信号,工作信号正向传播;二是误差信号,误差信号反向传播.下面以含有两个隐层的BP网络为例,如图2-7所示,具体推导BP算法.图2-7 含有二个隐含层的BP网络设输入层位,即有个输入信号,其中的任一输入信号用表示:第1隐层为,即有个神经元,其中的任何一个神经元用表示;第二层为,即有个神经元,其中任一神经元用表示,输出层为,即有个输出神经元,其中任一神经元用表示.输入层与第一隐层的突触权值用表示;第1隐层与第2隐层的突触权值用表示;第2隐层与输出层用的突触权值用表示.神经元的输入用表示,激励输出用表示,的上标表示层,下标表示层中的某个神经元,如A表示层(即第1层)的第个神经元输入.设所有的神经元的激励函数均用Sigmoid函数.设训练样本集为,对应任一训练样本,的实际输出为,期望输出为.设n为迭代次数,权值和实际输出是n的函数.网络输入训练样本,由工作信号的正向传播可得: 输出层第个神经元的误差信号为定义神经元的误差能量为,则输出层所有神经元的误差能量总和为: (2-9)误差信号从后向前传递,在反向传播的过程中,逐层修改联接权值.下面计算误差信号的反向传播过程:(1)隐层与输出层之间的权值修正量.BP算法中权值的修正量与误差绝对值的偏微分成正比,即:因为又,则 设局部梯度 (2-10) 当激励函数为逻辑函数,即从而有则 (2-11) 根据Delta学习规则,的修正量为 (2-12) 式中,是学习步长,可由式(2-11)求得,可由正向传播求得.则下一次的迭代时隐层上任一节点与输出层上任一节点之间的权值为 (2-13)(2)隐层与隐层之间的权值修正量: (2-14)与式(2-14)相类似,局部梯度为 (2-15) 因为 (2-16) 又 则 (2-17)由式(2-15)和式(2-17)得将式(2-10)代入上式得 (2-18)式中可由式(2-11)求得,.为隐含层与输出层任一节点之间的权值,已由式(2-13)求得.所以 (2-19)则下一次迭代时,隐层上任一节点与隐层上任一节点之间的权值为 (2-20)(3)与隐层和隐层之间的权值修正量的推导方法相同,输入层上任一节点与隐层任一节点之间权值的修正量为 (2-21)其中 (2-22)式中可由式(3-17)求出,.为隐层与隐层之间任一节点之间的权值,已由式(2-20)求得.则下一次迭代时,输入层上任一节点与隐层上任一节点之间的权值为 (2-23)2.3.3 BP网络的MATLAB仿真程序设计的基本方法 BP网络设计主要包括输入层、隐层、输出层及各层之间的传输函数几个方面.1. 网络层数大多数通用的神经网络都预先确定了网络的层数,而BP网络可以包括不同的隐层.但理论上已经证明,在不限隐层节点数的情况下,两层(只有一个隐层)的BP网络可以实现任意非线性映射.在模式样本相对较少的情况下,较少的隐层节点,可以实现模式样本空间的超平面划分,此时,选择两层BP网络就可以了;当模式样本数很多时,减少网络规模,增加一个隐层是必要的,但BP网络隐层数一般不超过两层.2. 输入层的节点数输入层起缓冲存储器的作用,它接收外部的输入数据,因此其节点数取决于输入矢量的维数.比如,当把大小的图像作为输入数据时,输入节点数将为1024个.3. 输出层的节点数 输出层的节点数取决于两个方面,输出数据类型和表示该类型所需要的数据大小.当BP网络用于模式分类时,以二进制形式来表示不同模式的输出结果,则输出层的节点数可根据待分类模式数来确定.若设待分类模式的总数为,则有两种方法确定输出层的节点数:(1) 节点数即为待分类模式总数,此时对应第个待分类模式的输出为即第个节点输出为1,其余为0.而以输出全为0表示拒识,即所输入的模式不属于待分类模式中的任一种模式.(2) 节点数为个.这种输出方式是种输出模式的二进制编码.4. 隐层的节点数一个具有无限隐层节点的两层BP网络可以实现任意从输入到输出的非线性映射.但对于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,即到至今为止,尚未找到一个很好的解析式,隐层节点数往往根据前人设计所得的经验和自己进行试验来确定.一般认为,隐层节点数与求解问题的要求、输出单元多少都有直接的联系.另外,隐层节点数太多会导致学习时间过长;而节点数太少,容差性差,识别未经学习的样本能力低,所以必须综合多方面因素进行时设计.5. 传输函数通常采用型函数:在某些特定情况下,还可能采用纯线性函数.如果BP网络最后一层是函数,那么整个函数的输出就限制在一个较小的范围内(之间的任意连续量);如果BP网络的最后一层是纯线性函数,那么整个网络的输出可以是任意值. 创建和训练BP的MATLAB程序如下:clear all%定义输入向量和目标向量p=1 2;-1 1;-2 1;4 0;t=0.2 0.8 0.8 0.2;%创建BP网络和定义训练函数及参数net=newff(-1 1;-1 1,5 1,logsig logsig,taingd);net.trainParam.goal=0.001;net.trainParam.epochs=5000;%训练神经网络net,tr=train(net,p,t);%输出训练后的权值和阀值iw1=net.IW1b1=net.b1lw2=net.LW2b2=net.b2第三章 神经网络在数学建模中的应用3.1 神经网络算法在非线性方程与微分方程方面的应用3.1.1 非线性函数的逼近使用神经网络逼近非线性函数,绘制非线性函数,并产生网络训练数据点.解:非线性神经网络的输出函数为非线性传递函数purelin,其输出可以为任意数值,因此非线性神经网络应用范围非常广泛,可以应用于非线性系统拟合、函数逼近、系统识别等方面.%matlab程序x=-2:.01:1;y=2*x.6+3*x.5+3*x.3-2*x.2;p=x(1:15:end);t=y(1:15:end);plot(x,y,p,t,ko)legend(逼近函数,网络训练点 )其中,数据作为线性神经网络的训练数据点集,程序运行结果如图3-1所示.使用newlind函数训练线性神经网络:q=length(y);r=zeros(6,q);r(1,2:q)=y(1,1:(q-1);r(2,3:q)=y(1,1:(q-2);r(3,4:q)=y(1,1:(q-3);r(4,5:q)=y(1,1:(q-4);r(5,6:q)=y(1,1:(q-5);r(6,7:q)=y(1,1:(q-6);net=newlind(r,y);a=sim(net,r);figureplot(x,y,x,a,k-o)legend(给定输入信号,网络输出信号)运行结果如图3-1所示.图3-1 非线性逼近函数和网络训练图3-2 线性神经网络非线性曲线逼近结果3.1.2 线性神经网络逼近函数使用newlin函数构建线性神经网络逼近函数:(1) 首先,产生输入训练样本和训练目标样本.%matlab程序time1=0:.01:2;time2=2:.01:4;time3=4:.01:6;time=time1 time2 time3;t=cos(time1*pi) cos(time2*3*pi) cos(time3*5*pi);t=con2seq(t); %将向量转化为序列cell向量p=t; %输出向量等于给定输出向量 (2) 使用newlin函数构建线性神经网络,并使用adapt函数训练网络.lr=0.1;delays=1 2 3 4 5 6;net=newlin(minmax(cat(2,p:),1,delays,lr);net,a,e=adapt(net,p,t); (3) 绘制网格输出信号和给定信号以及残差信号曲线.plot(time,cat(2,p:),time,cat(2,a:),k-o)legend(给定输入信号,网格输出信号)figureplot(time,cat(2,e:)title(误差曲线) 结果如图3-3和图3-4所示.图3-3 使用newlin函数进行逼近效果曲线图3-4 newlin函数逼近的误差图下面使用实例演示newlind函数的使用.(1) 首先,产生输入训练样本和训练目标样本.%matlab程序time1=0:.01:2;time2=2:.01:4;time3=4:.01:6;time=time1 time2 time3;t=cos(time1*pi) cos(time2*3*pi) cos(time3*5*pi);q=length(t);p=zeros(6,q);p(1,2:q)=t(1,1:(q-1);p(2,3:q)=t(1,1:(q-2);p(3,4:q)=t(1,1:(q-3);p(4,5:q)=t(1,1:(q-4);p(5,6:q)=t(1,1:(q-5);p(6,7:q)=t(1,1:(q-6); (2) 使用newlind函数设计线性层.net=newlind(p,t);a=sim(net,p);plot(time,t,time,a,k-o)legend(给定输入信号,网络输出信号)figureplot(time,a-t)title(误差曲线) 线性层网络函数逼近效果如图3-5和图3-6所示.图3-5 线性层设计函数newlind函数逼近效果图3-6 线性层设计函数newlind函数逼近误差图3.1.3 基于神经网络定积分计算模型人工神经网络的主要特点是其非线性映射能力,这种能力使得神经网络能够逼近任何给定的连续函数.从应用的角度来看,一个人工神经网络是根据某种“目标”而构造的,这样的目标一般情形下是一个多元或一元函数,称之为“目标函数”,可通过对权值的学习,使得目标函数尽可能逼近于人们理想中目标函数.基于这些思想,提出了一种基于积分定义的神经网络模型.现我们来确定学习训练样本数据,首先对训练样本数据作预处理:假设被积在区间上有种分法,其中划分为:,令,其中:,则学习训练样本数据集为,其中为积分的准确值.那么,基于积分定义的神经网络求解数值积分模型如图3-7所示.图3-7 求解数值积分模型其中为神经网络权值,设神经网络的权值矩阵为:,其中,;激励函数为恒等函数,阀值取0,则该网络输出定义误差代价函数:,其中为训练样本点数,为被积函数.设误差矩阵为,则有性能指标:为Euclidean范式的平方.根据梯度下降法学习规则,故权值调整公式如下: 其中为学习效率,且.基于神经网络的定积分学习算法神经网络学习的目标就是对权值的学习,参照一般神经网络的学习过程,那么,神经网络求积分的学习步骤如下:step1 获取神经网络训练样本集:;随机产生网络权值,;给定误差精度;令.step2 计算网络输出:step3 计算误差函数:step4 计算性能指标:step5 计算学习率:step6 权值调整:step7 如果样本集未训练完,返回step2重复上述步骤;否则,判断性能指标是否,如果是,令,返回step2重复上述步骤,否则,结束网格训练,输出网格权值:.如求解定积分,精确到8位有效数字.MATLAB编程实现:%定积分函数function y=f(x)y=exp(x).*cos(100.*x);clc;format longa=0;b=pi; %a,b为积分区间tol=0.00000001; %tol为精确度J=2*tol;m=20; %将区间a,b分为m+1个不等距的区间p=6.389; %p为定积分的精确值n=50; %n为训练样本个数X=zeros(m+1,n);x=zeros(m,n);c=zeros(m,n);w=zeros(m,n);X(1,:)=a;X(m+1,:)=b;for i=1:nX(2,i)=a+0.1*rand;X(m,i)=b-0.1*rand;endfor i=3:(m-1)for j=1:nX(i,j)=X(2,j)+(X(m,j)-X(2,j)*rand;endendX=sort(X);for i=1:mfor j=1:nx(i,j)=X(i+1,j)-X(i,j);endendx;for i=1:mfor j=1:nc(i,j)=X(i,j)+x(i,j)*rand;endendc;epoch=0;TT=;while JtolJ=0;epoch=epoch+1;for k=1:nt=x(:,k);w=f(c(:,k); %w为网络权值y=w*t;EK=p-y;u=1./(abs(t*(df(c(:,k)2; %学习率u的取值c(:,k)=c(:,k)+u*(p-y)*t*(df(c(:,k);J=J+sum(EK.2)/2;endTT(epoch)=J;Jif J=tolbreak;endendypepochplot(1:epoch,TT(1:epoch); %画出性能指标J与迭代次数的变化图 输出结果说明:用复化梯形计算此积分时,需把积分区间1048576等份,才能达到给定精度.积分准确值为0.0022138479.在神经网络算法中,取神经网络结构为50 1(即m=50),性能指标:,在0,上有50种分法,训练样本集为.得到结果为:0.002213848889,迭代590次.3.2 神经网络算法在数值分析方面的应用3.2.1 模拟异或函数问题 单层感知器网络不能模拟异或函数问题,这里用二层感知器神经网络来实现.异或问题真值表见表3-1.表3-1 异或问题的真值表输入 输出 0 00 1 01 0 11 1 10首先,要创建、训练、储存感知器神经网络,接着是仿真,我们用MATLAB程序实现.%多层感知器神经网络仿真的MATLAB程序clear all;%初始化随机感知器层pr1=0 1;0 1; %设置随机感知器层输入向量每个元素的值域net1=newp(pr1,3); %定义随机感知器层net1.inputweights1.initFcn=rands; %指定随机感知器层权值初始化函数为随%机函数net1.biases1.initFcn=rands; %指定随机感知器层阀值初始化函数为随机函数net1=init(net1); %初始化随机感知器层iw1=net1.IW1 %随机感知器层的权值向量b1=net1.b1 %随机感知器层的阀值向量%随机感知器层仿真p1=0 0;0 1; 1 0;1 1; %训练样本值a1 pf=sim(net1,p1); %随机感知器层仿真%初始化第二感知器层pr2=0 1;0 1;0 1; %设置第二感知器层输入向量每个元素的值域net2=newp(pr2,1);%训练第二感知器层net2.trainParam.epochs=10;net2.trainParam.show=1;p2=ones(3,4);
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!