




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
期终论文——神经网络设计研究生课程期终论文课程名称:神经网络设计任课教师:论文题目:姓名:学号:期终论文——神经网络设计摘要本文首先说明课题研究的目的和意义,评述课题的国内外研究现状,引出目前存在的问题。然后分析了神经网络算法的基本原理,给出经典神经网络算法的具体实现方法,总结神经网络算法的特点,掌握BP网络的形成步骤。学会使用Matlab中的神经网络工具箱函数,采用Matlab软件编程实现BP神经网络算法。将神经网络算法应用于函数逼近,样本分类和样本含量估计问题中,并分析相关参数或算法对运行结果的影响。最后对BP神经网络算法进行了展望。关键字:神经网络;BP神经网络;函数逼近;仿真实验ABSTRACTThispaperfirstexplainsthepurposeandsignificanceofthetopicresearch.Commentarystudiescurrentsituationattheproblemhomeandabroad.Leadstotheexistingproblems.andthenhaveanalyzedalgorithmicbasalprincipleofneuralnetworks,Givealgorithmicconcertofclassicsneuralnetworksouttherealizationmethod.Summingupthecharacteristicsofneuralnetworkalgorithm.MastertheformingstepofBPnetwork.ThearithmeticofBPneuralnetworkisrealizedinMatlabsoftware.ThealgorithmappliesofBPneuralnetworkstothefunctionapproximationproblem,Sampleclassificationandcomputestheswatch
content.Andanalysisofrelevantparametersontheresultsofalgorithm.Finally,TheBPneuralnetworkalgorithmisOutlook.Keywords:Neuralnetwork;BPneuralnetwork;Functionapproximation;Simulationexperiment目录TOC\o"1-3"\h\uHYPERLINK第一章引言 -43-第一章引言1.1神经网络的概述人工神经网络(ArtificialNeuralNetworks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(ConnectionModel),它是一种模范动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。神经元网络是机器学习学科中的一个重要部分,用来classification或者regression。思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式。逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,根据符号运算按串行模式进行逻辑推理;这一过程可以写成串行的指令,让计算机执行。然而,直观性的思维是将分布式存储的信息综合起来,结果是忽然间产生想法或解决问题的办法。这种思维方式的根本之点在于以下两点:1.信息是通过神经元上的兴奋模式分布存储在网络上;2.信息处理是通过神经元之间同时相互作用的动态过程来完成的。人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。1.2人工神经网络的研究目的和意义人工神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。人工神经网络就是模拟人思维的一种方式,是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。近年来通过对人工神经网络的研究,可以看出神经网络的研究目的和意义有以下三点:(1)通过揭示物理平面与认知平面之间的映射,了解它们相互联系和相互作用的机理,从而揭示思维的本质,探索智能的本源。(2)争取构造出尽可能与人脑具有相似功能的计算机,即神经网络计算机。(3)研究仿照脑神经系统的人工神经网络,将在模式识别、组合优化和决策判断等方面取得传统计算机所难以达到的效果。人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式、语音识别、非结构化信息处理方面的缺陷,使之在神经专家系统、模式识别、智能控制、组合优化、预测等领域得到成功应用。人工神经网络与其它传统方法相结合,将推动人工智能和信息处理技术不断发展。近年来,人工神经网络正向模拟人类认知的道路上更加深入发展,与模糊系统、遗传算法、进化机制等结合,形成计算智能,成为人工智能的一个重要方向,将在实际应用中得到发展。将信息几何应用于人工神经网络的研究,为人工神经网络的理论研究开辟了新的途径。神经计算机的研究发展很快,已有产品进入市场。光电结合的神经计算机为人工神经网络的发展提供了良好条件。1.3神经网络的发展与研究现状1.3.1神经网络的发展神经网络诞生半个世纪以来,经历了五个阶段:奠基阶段:早在40年代初,神经解剖学、神经生理学、心理学以及人脑神经元的电生理的研究等都富有成果。其中,神经生物学家McCulloch提倡数字化具有特别意义。他与青年数学家Pitts合作,从人脑信息处理观点出发,采用数理逻辑模型的方法研究了脑细胞的动作和结构及其生物神经元的一些基本生理特性,他们提出了第
一个神经计算模型,即神经元的阈值元件模型,简称MP模型,他们认识到了模拟大脑可用于逻辑运行的网络,有一些结点及结点与结点之间相互联系,构成一个简单神经网络模型。其主要贡献在于结点的并行计算能力很强,为计算神经行为的某此方面提供了可能,从而开创了神经网络的研究。这一革命性的思想,产生了很大影响。第一次高潮阶段:1958年计算机科学家Rosenblatt基于MP模型,增加了学习机制,推广了MP模型。他证明了两层感知器能够将输入分为两类,假如这两种类型是线性并可分,也就是一个超平面能将输入空间分割,其感知器收敛定理:输入和输出层之间的权重的调节正比于计算输出值与期望输出之差。他提出的感知器模型,首次把神经网络理论付诸工程实现。坚持阶段:神经网络理论那遥远但并非遥不可及的目标着实吸引了很多人的目光,美国军方认为神经网络工程应当比“原子弹工程”更重要,并对它的投资兴趣非常大,而对其实践的效果也比较满意。第二次高潮阶段:Kohonen提出了自组织映射网络模型,映射具有拓扑性质,对一维、二维是正确的,并在计算机上进行了模拟,通过实例所展示的自适应学习效果显著。他认为有可能推广到更高维的情况。新发展阶段:从神经网络理论的发展史看,它的高潮阶段是很容易度过的。IJCNN91大会主席Rumelhart意识到这一点,在他的开幕词中有一个观点,神经网络的发展已到了一个转折的时期,它的范围正在不断扩大,其应用领域几乎包括各个方面。半个世纪以来,这门学科的理论和技术基础已达到了一定规模,笔者认为,神经网络到了新发展阶段,需要不断完善和突破,使其技术和应用得到有力的支持。1.3.2神经网络的研究现状进入20世纪90年代以来,神经网络由于应用面还不够宽,结果不够精确,存在可信度问题,从而进入了认识与应用研究期。1)开发现有模型的应用,并在应用中根据实际运行情况对模型、算法加以改造,以提高网络的训练速度和运行的准确度。2)充分发挥两种技术各自的优势是一个有效方法。3)希望在理论上寻找新的突破,建立新的专用/通用模型和算法。4)进一步对生物神经系统进行研究,不断地丰富对人脑的认识。1.4神经网络研究目前存在的问题人工神经网络理论本身也在完善和发展中。如神经的稳定性和收敛性问题有待进一步研究。神经网络结构和神经元数量的确定还没有成熟的理论等。如广泛使用的BP网络就存在:(1)收敛速度慢,且收敛速度与初始权值选取有关(2)网络结构设计,即隐层及接点数的选择尚无理论指导(3)新加人的样本会影响已训练好的样本(4)存在局部最小问题人工神经网络自身的问题直接影响其应用。包括在经济领域的应用。随着人工神经网络研究和应用的不断深入。一些改进算法和技术,如模拟退火算法、遗传算法(GA)、模糊技术、小波分析等和神经网络逐步融合,提高了神经网络模型的工作性能。例如运用模糊技术克服一般神经网络学习过程复杂、收敛速度慢的弱点,并提高了模型的精度。将小波分析良好的局域化性质与神经网络的自适应学习和非线性映射能力相结合,使神经网络具有极佳的函数逼近能力,这为非线性长期预报提供了新的思路和方法。遗传算法是近来发展起来的一种随机多点搜索算法。具有很强的自适应性、鲁棒性,它在全局寻优上的能力可以防止神经网络在寻优过程中陷人局部最小点。一个经济活动或现象往往是多种因素合力的结果,各个因素之间往往存在耦合,在实际中往往难以对各个因素进行合理的量化。同时神经网络的评估精度主要取决于训练样本的数量和质量,而在实际中难以一次性获得足够的理想样本,这要在使用过程中逐步积累,通过不断的学习使网络趋于完善。1.5神经网络的应用领域神经网络以其独特的结构和处理信息的方法,在许多实际应用领域中取得了显著的成效,主要应用如下:(1)自动控制领域。神经网络方法已经覆盖了控制理论中的绝大多数问题,主要有系统建模与辨识、PID参数整定、极点配置、内模控制、优化设计、预测控制、最优控制、自适应控制、滤波与预测容错控制、模糊控制和学习控制等。典型的例子是20世纪60年代初,美国“阿波罗”登月计划中,Kilmer和MeClloch等人根据脊椎动物神经系统中网状结构的工作原理,提出了一个KMB模型,以使登月车在远距离复杂环境下具有一定的自制能力。(2)处理组合优化问题。最典型的例子是成功地解决了TSP问题,即旅行推销员问题(TravellingSalesmanProblem),另外还有最大匹配问题、装箱问题和作业调度等。(3)模式识别。已成功应用于手写字符、汽车牌照、指纹和声音识别,还可用于目标的自动识别和定位、机器人传感器的图像识别以及地震信号的鉴别等。(4)图像处理。对图像进行边缘监测、图像分割、图像压缩和图像恢复。(5)传感器信号处理。传感器输出非线性特性的矫正、传感器故障检测、滤波与除噪、环境影响因素的补偿、多传感信息融合。(5)机器人控制。对机器人眼手系统位置进行协调控制,用于机械手的故障诊断及排除、智能自适应移动机器人的导航。(6)信号处理。能分别对通讯、语音、心电和脑电信号进行处理分类;可用于海底声纳信号的检测与分类,在反潜、扫雷等方面得到应用。(7)信号处理。能分别对通讯、语音、心电和脑电信号进行处理分类;可用于海底声纳信号的检测与分类,在反潜、扫雷等方面得到应用。(8)卫生保健、医疗。比如通过训练自主组合的多层感知器可以区分正常心跳和非正常心跳、基于BP网络的波形分类和特征提取在计算机临床诊断中的应用M&N。(9)经济。能对商品价格、股票价格MDN和企业的可信度等进行短期预测。(10)化工领域。能对制药、生物化学和化学工程等进行分析。如:进行蛋白质结构分析、谱分析和化学反应分析等。(11)焊接领域。国内外在参数选择、质量检验、质量预测和实时控制方面都有研究,部分成果已得到应用。(12)地理领域。在遥感图像分类中有广泛的应用,在GIS方面应用人工神经网络理论,提高系统对数据进行复杂的综合分析的功能。(13)另外,在数据挖掘、电力系统、交通、军事、矿业、农业和气象等方面亦有应用。第二章BP神经网络概述2.1BP神经网络介绍BP(BackPropagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidelayer)和输出层(outputlayer)。如图2-1。图2-1BP网络模型结构图2.2神经元2.2.1人工神经元归纳一下生物神经元传递信息的过程:生物神经元是一个多输入、单输出单元。常用的人工神经元模型可用图2-2模拟。图2-2人工神经元(感知器)示意图当神经元j有多个输入xi(i=1,2,…,m)和单个输出yj时,输入和输出的关系可表示为:其中j为阈值,wij为从神经元i到神经元j的连接权重因子,f()为传递函数,或称激励函数。神经网络连接的几种基本形式:1)前向网络前向网络结构如图2-3所示,网络中的神经元是分层排列的,每个神经元只与前一层的神经元相连接。神经元分层排列,分别组成输入层、中间层(也称为隐含层,可以由若干层组成)和输出层。每一层的神经元只接受来自前一层神经元的输入,后面的层对前面的层没有信号反馈。输入模式经过各层次的顺序传播,最后在输出层上得到输出。感知器网络和BP网络均属于前向网络。图2-3前向网络结构2)从输出到输入有反馈的前向网络其结构如图2-4所示,输出层对输入层有信息反馈,这种网络可用于存储某种模式序列,如神经认知机和回归BP网络都属于这种类型。图2-4有反馈的前向网络结构3)层内互连前向网络其结构如图2-5所示,通过层内神经元的相互结合,可以实现同一层神经元之间的横向抑制或兴奋机制。这样可以限制每层内可以同时动作的神经元素,或者把每层内的神经元分为若干组,让每一组作为一个整体进行运作。例如,可利用横向抑制机理把某层内的具有最大输出的神经元挑选出来,从而抑制其他神经元,使之处于无输出状态。图2-5有相互结合的前向网络结构4)相互结合型网络相互结合型网络结构如图2-6所示,这种网络在任意两个神经元之间都可能有连接。Hopfield网络和Boltzmann机均属于这种类型。在无反馈的前向网络中,信号一旦通过某神经元,该神经元的处理就结束了。而在相互结合网络中,信号要在神经元之间反复传递,网络处于一种不断变化状态的动态之中。信号从某初始状态开始,经过若干次变化,才会达到某种平衡状态。根据网络的结构和神经元的特性,网络的运行还有可能进入周期振荡或其他如混沌平衡状态。图2-6结合型网络结构综上,可知神经网络有分层网络、层内连接的分层网络、反馈连接的分层网络、互连网络等四种结构,其神经网络模型有感知器网络,线性神经网络,BP神经网络,径向基函数网络,反馈神经网络等,本文主要学习研究了BP神经网络,以及BP神经网络在函数逼近和样本含量估计两个实例中的应用分析。人工神经网络主要具备以下几方面的基本特征:
1.并行分布能力:神经网络具有高度的并行结构和并行处理能力。这特别适用于实时控制和动态控制。2.人工神经网络是一个非线性的有向图,图中含有可以通过改变权大小来存放模式的加权边,并且可以从不完整的或未知的输入找到模式。人工神经网络是一种具有下列特征的有向图:
(1)对于每个节点i存在一个状态变量ix;
(2)从节点j至节点i存在一个连接权系统数ijw;
(3)对于每个节点i存在一个阈值iq;
(4)对于每个节点I,定义一个变换函数,,()iiijfxwi,ij;对于最一般的情况,此函数取()iijjj,fwxiq-å形式。
3.通过训练进行学习:神经网络是通过所研究系统过去的数据进行训练的。是一个经过适当训练的神经网络,具有归纳全部数据的能力。因此,神经网络能够解决那些由数学模型或描述规则难以处理的控制过程。
4适应与集成:神经网络能适应在线运行,并能同时进行定量和定性操作。这些特性特别适用于复杂、大规模和多变量的控制。
5.硬件实现:神经网络不仅能够通过软件而且借助软件实现并行处理。由于超大规模集成电路的硬件实现,使得神经网络具有快速和大规模处理能力的实现网络。
6.具有联想存储功能:利用人工神经网络的反馈网络就可以实现这种联想。
7.有高速寻找优化解的能力:利用一个针对某问题而设计的反馈型人工神经网络,发挥计算机的高速运算能力,可能很快找到优化解。
8.具有很强的鲁棒性和容错性。在神经网络中,信息的存储是分布在整个网络中相互连接的权值上的,这就使得它比传统计算机具有较高的抗毁性,少数几个神经元损坏或断几处连接,只会稍许降低系统的性能,而不至于破坏整个网络系统,因而具有强的鲁棒性和容错性。2.2.2生物神经元神经细胞是构成神经系统的基本单元,称之为生物神经元,简称神经元。神经元主要由三部分构成:(1)细胞体;(2)轴突;(3)树突细胞体:是神经元的中心,它一般又由细胞核、细胞膜等组成。树突:是神经元的主要接受器,它主要用来接受信息。轴突的作用主要:是传导信息,它将信息从轴突起点传到轴突末梢。突触:是轴突的终端,是神经元之间相互连接的接口部分,即一个神经元的神经末梢与另一个神经元的树突相接触的交界面,位于神经元的神经末梢尾端。(1)生物神经元结构示意图:图2-7图2-7生物神经元结构示意图生物神经元的工作状态:神经元具有两种常规工作状态:兴奋与抑制,当传入的神经冲动使细胞膜电位升高超过阈值时,细胞进入兴奋状态,产生神经冲动并由轴突输出;当传入的神经冲动使膜电位下降低于阈值时,细胞进入抑制状态,没有神经冲动输出。2.3BP神经网络原理BP网络是一种多层前馈神经网络,由输入层、隐层和输出层组成。图2-8为一个典型的三层BP网络的拓扑结构,层与层之间采用全互连方式,同一层之间不存在相互连接,隐层可以有一层或多层。层与层之间有两种信号在流通:一种是工作信号(用实线表示),它是施加输入信号后向前传播直到在输出端产生实际输出的信号,是输入和权值的函数。另一种是误差信号(用虚线表示),网络实际输出与期望输出间的差值即为误差,它由输出端开始逐层向后传播。BP网络的学习过程程由前向计算过程和误差反向传播过程组成。在前向计算过程中,输入量从输入层经隐层逐层计算,并传向输出层,每层神经元的状态只影响下一层神经元的状态。如输出层不能得到期望的输出,则转入误差反向传播过程,误差信号沿原来的连接通路返回,逐次调整网络各层的权值和阈值,直至到达输入层,再重复向计算。这两个过程一次反复进行,不断调整各层的权值和阈值,使得网络误差最小或达到人们所期望的要求时,学习过程结束。图2-8典型Bp网络模型生物神经元信号的传递是通过突触进行的一个复杂的电化学等过程,在人工神经网络中是将其简化模拟成一组数字信号通过一定的学习规则而不断变动更新的过程,这组数字储存在神经元之间的连接权重。网络的输入层模拟的是神经系统中的感觉神经元,它接收输入样本信号。输入信号经输入层输入,通过隐含层的复杂计算由输出层输出,输出信号与期望输出相比较,若有误差,再将误差信号反向由输出层通过隐含层处理后向输入层传播。在这个过程中,误差通过梯度下降算法,分摊给各层的所有单元,从而获得各单元的误差信号,以此误差信号为依据修正各单元权值,网络权值因此被重新分布。此过程完成后,输入信号再次由输入层输入网络,重复上述过程。这种信号正向传播与误差反向传播的各层权值调整过程周而复始地进行着,直到网络输出的误差减少到可以接受的程度,或进行到预先设定的学习次数为止。权值不断调整的过程就是网络的学习训练过程。BP神经网络的信息处理方式具有如下特点:1)信息分布存储。人脑存储信息的特点是利用突触效能的变化来调整存储内容,即信息存储在神经元之间的连接强度的分布上,BP神经网络模拟人脑的这一特点,使信息以连接权值的形式分布于整个网络。2)信息并行处理。人脑神经元之间传递脉冲信号的速度远低于冯·诺依曼计算机的工作速度,但是在很多问题上却可以做出快速的判断、决策和处理,这是由于人脑是一个大规模并行与串行组合的处理系统。BP神经网络的基本结构模仿人脑,具有并行处理的特征,大大提高了网络功能。3)具有容错性。生物神经系统部分不严重损伤并不影响整体功能,BP神经网络也具有这种特性,网络的高度连接意味着少量的误差可能不会产生严重的后果,部分神经元的损伤不破坏整体,它可以自动修正误差。这与现代计算机的脆弱性形成鲜明对比。4)具有自学习、自组织、自适应的能力。BP神经网络具有初步的自适应与自组织能力,在学习或训练中改变突触权值以适应环境,可以在使用过程中不断学习完善自己的功能,并且同一网络因学习方式的不同可以具有不同的功能,它甚至具有创新能力,可以发展知识,以至超过设计者原有的知识水平。BP神经网络隐含层节点的选择:基于BP算法的神经元网络中各层节点数目的选择对于网络性能的影响很大,隐含层的神经元数目选择往往需要根据经验和多次试验来确定,若隐含层单元数目选择太多会致使学习时间过长、误差不一定最佳,也会导致容错性差、不能识别以前没有看到的样本,节点的数目要选择恰当。常用的解决办法就是使隐含层数目可变。一种是开始放入足够的隐含单元,然后把学习后的那些不起作用的隐含层单元逐步去掉,一直减少到不可收缩为止。另一种是开始放入比较少的隐含层单元,学习一些次数后,还不成功就要增加隐含单元个数,一直达到比较合理的隐含单元数目为止。可以根据以下公式选择最佳隐含层神经元的数目。(1),其中,m为输出神经元数目;n为输入神经元数目;a为[1,10]之间的常数;(2),其中,n为输入单元数。(3),其中,m为输出节点数。隐含层结点数可根据公式(1)、(2)或(3)得出一个初始值,然后利用逐步增长或逐步修剪法.所谓逐步增长是先从一个较简单的网络开始,若不符合要求则逐步增加隐含层单元数到合适为止;逐步修剪则从一个较复杂的网络开始逐步删除隐含层单元,具体实现已有不少文献讨论。BP神经网络学习率的选择:学习速率决定每一次循环训练所产生的权值的变化量。过大的学习速率可能导致系统的不稳定,但是过小的学习速率将导致训练时间较长,收敛速度很慢,不过能保证网络的误差值不跳出误差表面的低谷而最终趋于最小的误差值。一般要求是:当训练到误差曲面得平坦区时,为加快收敛应使增大;当训练到误差曲面的变化剧烈区时,为防止过学习(使误差增加),应使上述值减小。为加快收敛,应使合理化,比如采用变步长算法。所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性,学习速率的选取范围一般在0.01~0.1之间。再根据训练过程中梯度变化和均方差变化值来确定。2.4BP神经网络的主要功能目前,在人工神经网络的实际应用中。绝大部分的神经网络模型都采用BP神经网络及其变化形式。它也是前向网络的核心部分,体现了人工神经网络的精华。BP网络主要用于以下四方面。(1)函数逼近:用输入向量和相应的输出向量训练一个网络以逼近一个函数。(2)模式识别:用一个待定的输出向量将它与输入向量联系起来。(3)分类:把输入向量所定义的合适方式进行分类。(4)数据压缩:减少输出向量维数以便传输或存储。2.5BP神经网络的优点和缺点优点:1)
非线性映射能力:BP神经网络实质上实现了一个从输入到输出的映射功能,数学理论证明三层的神经网络就能够以任意精度逼近任何非线性连续函数。这使得其特别适合于求解内部机制复杂的问题,即BP神经网络具有较强的非线性映射能力。
2)
自学习和自适应能力:BP神经网络在训练时,能够通过学习自动提取输出、输出数据间的“合理规则”,并自适应的将学习内容记忆于网络的权值中。即BP神经网络具有高度自学习和自适应的能力。
3)
泛化能力:所谓泛化能力是指在设计模式分类器时,即要考虑网络在保证对所需分类对象进行正确分类,还要关心网络在经过训练后,能否对未见过的模式或有噪声污染的模式,进行正确的分类。也即BP神经网络具有将学习成果应用于新知识的能力。
4)
容错能力:BP神经网络在其局部的或者部分的神经元受到破坏后对全局的训练结果不会造成很大的影响,也就是说即使系统在受到局部损伤时还是可以正常工作的。即BP神经网络具有一定的容错能力。BP神经网络的优缺点介绍
人工神经网络(Artificial
Neural
Network)又称连接机模型,是在现代神经学、生物学、心理学等学科研究的基础上产生的,它反映了生物神经系统处理外界事物的基本过程,是在模拟人脑神经组织的基础上发展起来的计算系统,是由大量处理单元通过广泛互联而构成的网络体系,它具有生物神经系统的基本特征,在一定程度上反映了人脑功能的若干反映,是对生物系统的某种模拟,具有大规模并行、分布式处理、自组织、自学习等优点,被广泛应用于语音分析、图像识别、数字水印、计算机视觉等很多领域,取得了许多突出的成果。最近由于人工神经网络的快速发展,它已经成为模式识别的强有力的工具。神经网络的运用展开了新的领域,解决其它模式识别不能解决的问题,其分类功能特别适合于模式识别与分类的应用。多层前向BP网络是目前应用最多的一种神经网络形式,
它具备神经网络的普遍优点,但它也不是非常完美的,
为了更好的理解应用神经网络进行问题求解,
这里对它的优缺点展开一些讨论。
首先BP神经网络具有以下优点:
(1)
非线性映射能力:BP神经网络实质上实现了一个从输入到输出的映射功能,数学理论证明三层的神经网络就能够以任意精度逼近任何非线性连续函数。这使得其特别适合于求解内部机制复杂的问题,即BP神经网络具有较强的非线性映射能力。
(2)自学习和自适应能力:BP神经网络在训练时,能够通过学习自动提取输出、输出数据间的“合理规则”,并自适应的将学习内容记忆于网络的权值中。即BP神经网络具有高度自学习和自适应的能力。
(3)
泛化能力:所谓泛化能力是指在设计模式分类器时,即要考虑网络在保证对所需分类对象进行正确分类,还要关心网络在经过训练后,能否对未见过的模式或有噪声污染的模式,进行正确的分类。也即BP神经网络具有将学习成果应用于新知识的能力。
(4)容错能力:BP神经网络在其局部的或者部分的神经元受到破坏后对全局的训练结果不会造成很大的影响,也就是说即使系统在受到局部损伤时还是可以正常工作的。即BP神经网络具有一定的容错能力。
缺点:鉴于BP神经网络的这些优点,国内外不少研究学者都对其进行了研究,并运用网络解决了不少应用问题。但是随着应用范围的逐步扩大,BP神经网络也暴露出了越来越多的缺点和不足,比如:
(1)局部极小化问题:从数学角度看,传统的
BP神经网络为一种局部搜索的优化方法,它要解决的是一个复杂非线性化问题,网络的权值是通过沿局部改善的方向逐渐进行调整的,这样会使算法陷入局部极值,权值收敛到局部极小点,从而导致网络训练失败。加上BP神经网络对初始网络权重非常敏感,以不同的权重初始化网络,其往往会收敛于不同的局部极小,这也是很多学者每次训练得到不同结果的根本原因。
(2)BP神经网络算法的收敛速度慢:由于BP神经网络算法本质上为梯度下降法,它所要优化的目标函数是非常复杂的,因此,必然会出现“锯齿形现象”,这使得BP算法低效;又由于优化的目标函数很复杂,它必然会在神经元输出接近0或1的情况下,出现一些平坦区,在这些区域内,权值误差改变很小,使训练过程几乎停顿;BP神经网络模型中,为了使网络执行BP算法,不能使用传统的一维搜索法求每次迭代的步长,而必须把步长的更新规则预先赋予网络,这种方法也会引起算法低效。以上种种,导致了BP神经网络算法收敛速度慢的现象。
(3)BP
神经网络结构选择不一:BP神经网络结构的选择至今尚无一种统一而完整的理论指导,一般只能由经验选定。网络结构选择过大,训练中效率不高,可能出现过拟合现象,造成网络性能低,容错性下降,若选择过小,则又会造成网络可能不收敛。而网络的结构直接影响网络的逼近能力及推广性质。因此,应用中如何选择合适的网络结构是一个重要的问题。(4)应用实例与网络规模的矛盾问题:BP神经网络难以解决应用问题的实例规模和网络规模间的矛盾问题,其涉及到网络容量的可能性与可行性的关系问题,即学习复杂性问题。(5)BP神经网络预测能力和训练能力的矛盾问题:预测能力也称泛化能力或者推广能力,而训练能力也称逼近能力或者学习能力。一般情况下,训练能力差时,预测能力也差,并且一定程度上,随着训练能力地提高,预测能力会得到提高。但这种趋势不是固定的,其有一个极限,当达到此极限时,随着训练能力的提高,预测能力反而会下降,也即出现所谓“过拟合”现象。出现该现象的原因是网络学习了过多的样本细节导致,学习出的模型已不能反映样本内含的规律,所以如何把握好学习的度,解决网络预测能力和训练能力间矛盾问题也是BP神经网络的重要研究内容。
(6)
BP神经网络样本依赖性问题:网络模型的逼近和推广能力与学习样本的典型性密切相关,而从问题中选取典型样本实例组成训练集是一个很困难的问题。第三章BP神经网络的应用快速发展的Matlab软件为神经网络理论的实现提供了一种便利的仿真手段。Matlab神经网络工具箱的出现,更加拓宽了神经网络的应用空间。神经网络工具箱将很多原本需要手动计算的工作交给计算机,一方面提高了工作效率,另一方面,还提高了计算的准确度和精度,减轻了工程人员的负担。神经网络工具箱是在MATLAB环境下开发出来的许多工具箱之一。它以人工神经网络理论为基础,利用MATLAB编程语言构造出许多典型神经网络的框架和相关的函数。这些工具箱函数主要为两大部分。一部分函数特别针对某一种类型的神经网络的,如感知器的创建函数、BP网络的训练函数等。而另外一部分函数则是通用的,几乎可以用于所有类型的神经网络,如神经网络仿真函数、初始化函数和训练函数等。这些函数的MATLAB实现,使得设计者对所选定网络进行计算过程,转变为对函数的调用和参数的选择,这样一来,网络设计人员可以根据自己的的需要去调用工具箱中有关的设计和训练程序,从烦琐的编程中解脱出来,集中精力解决其他问题,从而提高工作效率。3.1基于MATLAB的BP神经网络工具箱函数3.1.1MATLAB工具箱介绍MATLAB
产品家族是美国
MathWorks公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境。由于其完整的专业体系和先进的设计开发思路,使得
MATLAB
在多种领域都有广阔的应用空间,特别是在
MATLAB
的主要应用方向
—
科学计算、建模仿真以及信息工程系统的设计开发上已经成为行业内的首选设计工具,全球现有超过五十万的企业用户和上千万的个人用户,广泛的分布在航空航天,金融财务,机械化工,电信,教育等各个行业。
在MATLAB产品家族中,MATLAB工具箱是整个体系的基座,它是一个语言编程型(M语言)开发平台,提供了体系中其他工具所需要的集成环境(比如M语言的解释器)。同时由于MATLAB对矩阵和线性代数的支持使得工具箱本身也具有强大的数学计算能力。
MATLAB产品体系的演化历程中最重要的一个体系变更是引入了Simulink,用来对动态系统建模仿真。其框图化的设计方式和良好的交互性,对工程人员本身计算机操作与编程的熟练程度的要求降到了最低,工程人员可以把更多的精力放到理论和技术的创新上去。
针对控制逻辑的开发,协议栈的仿真等要求,MathWorks公司在Simulink平台上还提供了用于描述复杂事件驱动系统的逻辑行为的建模仿真工具—
Stateflow,通过Stateflow,用户可以用图形化的方式描述事件驱动系统的逻辑行为,并无缝的结合到Simulink的动态系统仿真中。3.1.2BP网络创建函数1)newff该函数用于创建一个BP网络。调用格式为:net=newffnet=newff(PR,[S1S2..SN1],{TF1TF2..TFN1},BTF,BLF,PF)net=newff;用于在对话框中创建一个BP网络。net为创建的新BP神经网络;PR为网络输入向量取值范围的矩阵;[S1S2…SNl]表示网络隐含层和输出层神经元的个数;{TFlTF2…TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig’;BTF表示网络的训练函数,默认为‘trainlm’;BLF表示网络的权值学习函数,默认为‘learngdm’;PF表示性能数,默认为‘mse’。2)newcf函数用于创建级联前向BP网络,newfftd函数用于创建一个存在输入延迟的前向网络。3.1.3神经元上的传递函数传递函数是BP网络的重要组成部分。传递函数又称为激活函数,必须是连续可微的。BP网络经常采用S型的对数或正切函数和线性函数。1)logsig该传递函数为S型的对数函数。调用格式为:A=logsig(N)info=logsig(code)其中, N:Q个S维的输入列向量;A:函数返回值,位于区间(0,1)中;2)tansig该函数为双曲正切S型传递函数。调用格式为:A=tansig(N)info=tansig(code)其中,N:Q个S维的输入列向量;A:函数返回值,位于区间(-1,1)之间。3)purelin该函数为线性传递函数。调用格式为:A=purelin(N)info=purelin(code)其中,N:Q个S维的输入列向量;A:函数返回值,A=N。3.1.4BP网络学习函数1)learngd该函数为梯度下降权值/阈值学习函数,它通过神经元的输入和误差,以及权值和阈值的学习效率,来计算权值或阈值的变化率。调用格式为:[dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)[db,ls]=learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)info=learngd(code)2)learngdm函数为梯度下降动量学习函数,它利用神经元的输入和误差、权值或阈值的学习速率和动量常数,来计算权值或阈值的变化率。3.1.5BP网络训练函数1)train神经网络训练函数,调用其他训练函数,对网络进行训练。该函数的调用格式为:[net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai)[net,tr,Y,E,Pf,Af]=train(NET,P,T,Pi,Ai,VV,TV)2)traingd函数为梯度下降BP算法函数。traingdm函数为梯度下降动量BP算法函数。3.2BP网络在函数逼近中的应用3.2.1问题的提出BP网络由很强的映射能力,主要用于模式识别分类、函数逼近、函数压缩等。下面将通过实例来说明BP网络在函数逼近方面的应用。要求设计一个BP网络,逼近函数:g(x)=1+cos(k*pi/4*x),实现对该非线性函数的逼近。其中,分别令k=8,10,12进行仿真,通过调节参数(如隐藏层节点个数等)得出信号的频率与隐层节点之间,隐层节点与函数逼近能力之间的关系。3.2.2基于BP神经网络逼近函数步骤1:假设频率参数k=8,绘制要逼近的非线性函数的曲线。函数的曲线如图3-1所示%样本选取k=8;x=[0:0.01:1];y=1+sin(k*pi/4*x);%要逼近的函数plot(x,y);xlabel('x');ylabel('y');title('要逼近的非线性函数');图3-1逼近的非线性函数曲线步骤2:网络的建立应用newff()函数建立BP网络结构。隐层神经元数目n可以改变,暂设为n=8,输出层有一个神经元。选择隐层和输出层神经元传递函数分别为tansig函数和purelin函数,网络训练的算法采用Levenberg–Marquardt算法trainlm。%网络仿真n=8;net=newff(minmax(x),[1,n,1],{'tansig','tansig','purelin'},'traingdx');%创建神经网络y1=sim(net,x);figure;plot(x,y,'b',x,y1,'r');title('仿真结果与非线性函数');xlabel('x');ylabel('y');同时绘制网络输出曲线,并与原函数相比较,结果如图3-2“”代表要逼近的非线性函数曲线“——”代表未经训练的函数曲线图3-2网络输出曲线图因为使用newff()函数建立函数网络时,权值和阈值的初始化是随机的,所以网络输出结构很差,根本达不到函数逼近的目的,每次运行的结果也有时不同。步骤3:网络训练应用train()函数对网络进行训练之前,需要预先设置网络训练参数。将训练时间设置为50,训练精度设置为0.01,其余参数使用缺省值。训练后得到的误差变化过程如图3-3所示。%网络训练net.trainParam.epochs=100;%最大迭代次数net.trainParam.goal=0.001;%神经网络训练的目标误差net.trainParam.lr=0.01;%学习率net.trainParam.show=25;%两次显示之间的训练步数net=train(net,x,y);xlabel('次数');ylabel('红色-训练,蓝色-目标误差');y2=sim(net,x);图3-3将未经训练网络进行训练的训练过程从以上结果可以看出,网络训练速度很快,经过一次循环跌送过程就达到了要求的精度0.01。步骤4:网络测试对于训练好的网络进行仿真:%仿真figure;plot(x,y,'-',x,y1,'r',x,y2,'*g');title('原函数与网络训练前后的仿真结果比较');xlabel('x');ylabel('y');text(0.7,3.5,'--原函数y');text(0.7,3,'--训练前网络的仿真输出y1');text(0.7,2.5,'--训练后网络的仿真输出y2');绘制网络输出曲线,并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较,比较出来的结果如图3-4“”——原函数“—”——训练前网络的仿真输出“**”——训练后网络的仿真输出图3-4比较输出结果图3.2.3不同频率下的逼近效果改变非线性函数的频率和BP函数隐层神经元的数目,对于函数逼近的效果有一定的影响。网络非线性程度越高,对于BP网络的要求越高,则相同的网络逼近效果要差一些;隐层神经元的数目对于网络逼近效果也有一定影响,一般来说隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明。(1)频率参数设为k=8,当隐层神经元数目分别取n=12、n=16时,得到了训练后的网络输出结果如图3-5所示。当n=12时训练后网络的输出结果当n=16时训练后网络的输出结果图3-5当k=8时,网络输出的结果图频率参数设为k=10,当隐层神经元数目分别取n=16、n=18时,得到了训练后的网络输出结果如图3-6所示。当n=16时训练后网络的输出结果当n=18时训练后网络的输出结果图3-6当k=10时,网络输出的结果图频率参数设为k=12,当隐层神经元数目分别取n=20、n=25时,得到了训练后的网络输出结果如图3-7所示。当n=20时训练后网络的输出结果当n=25时训练后网络的输出结果图3-7当k=8时,网络输出的结果图3.2.4讨论通过上述仿真结果可知,当k=8,n=16时;k=10,n=18时;k=12,n=25时,BP神经网络分别对函数取得了较好的逼近效果。由此可见,n取不同的值对函数逼近的效果有很大的影响。改变BP网络隐层神经元的数目,可以改变BP神经网络对于函数的逼近效果。隐层神经元数目越多,则BP网络逼近非线性函数的能力越强。3.3仿真实验3.3.1BP神经网络MATLAB设计由于在隐含层的神经元个数可以随意调整的前提下,单隐含层的BP神经网络可以逼近任意的非线性映射。输入层和输出层神经元个数为1,只有一个隐含层,其个数根据上述的设计经验公式和本例的实际情况,选取9-16之间。下面的隐含层神经元个数可变的BP神经网络,通过误差和训练步数对比确定隐含层个数,并检验隐含层神经元个数对网络性能的影响。下面是相关MATLAB程序段:%选取输入变量x取值范围x=-4:0.01:4;%输入目标函数y1=sin((1/2)*pi*x)+sin(pi*x);%隐含层的神经元数目范围s=9:16;%欧氏距离res=1:8;%选取不同的隐含层神经元个数,进行网络测试fori=1:8%建立前向型BP神经网络,输入层和隐含层激励函数为tansig,输出层为purelin%训练函数为trainlm,也是默认函数net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'trainlm');%训练步数最大为2000net.trainparam.epochs=2000;%设定目标误差为0.00001net.trainparam.goal=0.00001;%进行函数训练net=train(net,x,y1);%对训练后的神经网络进行仿真y2=sim(net,x);%求欧式距离,判定隐含层神经元个数及网络性能err=y2-y1;res(i)=norm(err);end用该同一程序在三个不同时刻,运行结果及分析如下:表3-1表3-1隐含层不同神经元个数网络训练误差及学习步长某时刻一神经元个数910111213141516网络误差0.14323.18064.86240.08800.08670.08840.08590.0841学习步长2000200020002756402416625某时刻二神经元个数910111213141516网络误差0.08950.10680.08950.10160.08940.08890.08814.8423学习步长1156200011462000287102792000某时刻三神经元个数910111213141516网络误差0.08950.08670.087810.7340.08950.08900.08950.0886学习步长4496660200015125674253由此可见,选择隐含层神经元数目为15是最佳选择,不仅误差小、学习步长短,而且性能稳定。也可以看出并非隐含层神经元的数目越多,网络的性能就越好。3.3.2各种BP学习算法MATLAB仿真根据上面一节对BP神经网络的MATLAB设计,可以得出下面的通用的MATLAB程序段,由于各种BP学习算法采用了不同的学习函数,所以只需要更改学习函数即可。MATLAB程序段如下:x=-4:0.01:4;y1=sin((1/2)*pi*x)+sin(pi*x);%trainlm函数可以选择替换net=newff(minmax(x),[1,15,1],{'tansig','tansig','purelin'},'trainlm');net.trainparam.epochs=2000;net.trainparam.goal=0.00001;net=train(net,x,y1);y2=sim(net,x);err=y2-y1;res=norm(err);%暂停,按任意键继续Pause%绘图,原图(蓝色光滑线)和仿真效果图(红色+号点线)plot(x,y1);holdonplot(x,y2,'r+');注意:由于各种不确定因素,可能对网络训练有不同程度的影响,产生不同的效果。如图3-8。标准BP算法(traingd)图3-8标准BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)增加动量法(traingdm)如图3-9。图3-9增加动量法的训练过程以及结果(原图蓝色线,仿真图+号线)弹性BP算法(trainrp)如图3-10图3-10弹性BP算法的训练过程以及结果(原图蓝色线,仿真图+号线)动量及自适应学习速率法(traingdx)如图3-11。图3-11动量及自适应学习速率法的训练过程以及结果(原图蓝色线,仿真图+号线)共轭梯度法(traincgf)如图3-12。图3-12共轭梯度法的训练过程以及结果(原图蓝色线,仿真图+号线)Levenberg-Marquardt算法(trainlm)如图3-13。图3-13Levenberg-Marquardt算法的训练过程以及结果(原图蓝色线,仿真图+号线)3.3.3各种算法仿真结果比较与分析由上面的仿真结果可以得到下表的比较和下面的结论与分析:表3-2表3-2各种BP学习算法MATLAB仿真结果比较BP算法训练函数训练次数均方误差标准BP算法traingd20000.134968增加动量法traingdm20000.108883弹性BP算法trainrp20000.0135652动量及自适应学习速率法trangdx20000.0761264共轭梯度法traincgf7690.00499915Levenberg-Marquardt法trainlm610.0000098727结论与分析:从仿真结果可以看出,标准BP算法、增加动量发、弹性BP算法、动量及自适应学习速率法的收敛速度都不如共轭梯度法和Levenberg-Marquardt法(L-M算法)收敛速度明显的快。从仿真结果和均方误差综合来看,只有L-M算法达到了目标误差,可见对高要求的误差来说,L-M算法的优势要明显的多,其余均未达到目标误差;从均方误差的效果来看,所仿真的BP算法的优劣(从优到劣)顺序依次为L-M算法、共轭梯度法、弹性BP算法、动量及自适应学习速率法、增加动量法、标准BP算法。从仿真效果图可以看出,L-M算法的效果最好,其次是共轭梯度法,其余均有不同范围内的失真。从误差曲线来看,L-M算法达到了目标误差(较高的误差),标准BP算法的误差曲线较粗,是因为较小范围振荡产生锯齿,在图形中由于间距加大,图形不断重叠而成,收敛速度很慢;增加动量法、弹性BP算法、动量及自适应学习速率法的误差曲线较为平滑,在刚开始收敛较快,在训练步数增加的时候,曲线趋于水平,收敛速度比较慢;共轭梯度法和L-M算法的误差曲线变化较大且产生局部锯齿状,说明不是最优,仍需要进行优化,其中L-M算法达到了目标误差。共轭梯度法在相邻迭代的正交方向搜索,综合误差曲线可知当接近极值时会产生锯齿形振荡。再根据前面对各种BP改进算法的描述可知,弹性BP算法不需要进行搜索,需要内存比较小,因此在一些大型网络中比较适用,但是需要很长的训练时间。对收敛速度要求不高时也可使用动量及自适应学习速率法。在小型网络中,共轭梯度法仅次于L-M算法,但是L-M算法需要更大的内存做临时存储,对于较大复杂的网络和内存受限的设备来说不是很好的选择,但是对于小型网络来说却是首要选择。对训练时间允许的条件下,共轭梯度法和弹性BP算法是对复杂大型网络较好的选择。其中共轭梯度法在训练的时候,训练次数为769次,均方误差为0.00499915,均未达到所设定的要求,产生了“Minimumstepsizereached,performancegoalwasnotmet”的结果。可能意味着子区间的长度与计算机舍入误差相当,无法继续计算了,原因可能是有奇点(无限小且不实际存在),另外也存在是初值问题,理论上得知:共轭梯度法最大局限是依赖于初值,在有限的迭代次数内可能既不能搜索到全局极值也不能搜索到局部极值。因此该算法适用于精度要求比较低的高维网络之中。3.3.4调整初始权值和阈值的仿真在分析了初始权值设置影响因素对BP神经网络的影响,下面首先通过MATLAB程序段一,通过随机设置权值初始化网络方式获取训练好的阈值和权值,作为MATLAB程序段二的初始化值。由此进行仿真分析。如图3-14。①MATLAB程序段一:x=-4:0.01:4;y1=sin((1/2)*pi*x)+sin(pi*x);net=newff(minmax(x),[1,15,1],{'tansig','tansig','purelin'},'trainlm');net.trainparam.epochs=2000;net.trainparam.goal=0.00001;%初始化网络,用newff创建网络,其权值和阈值初始化函数的默认值是initnw。%initnw据Nguyen-Widrow规则初始化算法对网络层的权值和阈值进行初始%化,该算法的初始化值,可以使网络层中每个神经元的作用范围近似地在%网络层的输入空间均匀分布。与纯随机初始化权值和阈值的方法比较,%初始化算法有以下优点:神经元的浪费少(因为所有神经元都分布在输%入空间内);网络的训练速度快(因为输入空间的每一个区域都有神经%元);这里是用rands重新设置权值和阈值。net.layers{1}.initFcn='initnw';net.layers{2}.initFcn='initnw';net.inputWeights{1,1}.initFcn='rands';net.inputWeights{2,1}.initFcn='rands';net.biases{1,1}.initFcn='rands';net.biases{2,1}.initFcn='rands';net=init(net);%查看初始化后的权值和阈值net.iw{1,1}net.b{1}net.lw{2,1}net.b{2}net=train(net,x,y1);%得出训练好的权值和阈值供MATLAB程序段二使用net.iw{1,1}net.b{1}net.lw{2,1}net.b{2}y2=sim(net,x);err=y2-y1;res=norm(err);pauseplot(x,y1);holdonplot(x,y2,'r+');②MATLAB程序段二:x=-4:0.01:4;y1=sin((1/2)*pi*x)+sin(pi*x);net=newff(minmax(x),[1,15,1],{'tansig','tansig','purelin'},'trainlm');net.trainparam.epochs=2000;net.trainparam.goal=0.00001;%从程序段一得出的数据net.iw{1,1}=-0.3740;net.b{1}=-0.1930; net.lw{2,1}=[-20.7192;19.6478;10.9678;-9.4500;21.3555;6.7648;-20.7057;-6.1023;-9.4889;-12.7880;-15.5183;-13.9643;-21.2201;29.9987;-15.3738];net.b{2}=[21.2768;-16.9303;-7.9953;4.8688;-6.6081;-1.3465;-0.8528;-1.2791;-4.7658;-15.4970;-9.2069;-10.5259;-20.1442;3.5287;-13.6953];net=train(net,x,y1);y2=sim(net,x);err=y2-y1;res=norm(err);pauseplot(x,y1);holdonplot(x,y2,'r+');(a)随机设置权值误差曲线图(b)获取训练好的阈值和权值误差曲线图图3-14两程序段运行后误差曲线图 从上面的仿真结果看,第一个程序用随机的初始权值和阈值达到目标误差完成训练需要264个回合,而选用已训练好的权值和阈值仅用167个回合就完成了训练,因此选择合适的初始化权值和阈值将加速网络的训练,大大提高了学习的收敛速度。因此关于设置网络初始权值和阈值的优化方法是一个值得研究的问题。3.3.5其他影响因素仿真在算法选择上,在下面的仿真中将使用L-M算法测试其他影响因素,比如通过选择不同的激活函数、修改学习步长和目标误差等观察对仿真曲线的影响程度。如果将输入层激活函数设置为purelin,x=-4:0.1:4,epochs=1000,goal=0.001,其余不变则会产生如下结果:经过多次反复实验,有时不能达到目标误差,有时又很快达到目标误差,且仿真效果会产生不同程度的失真或有时效果很好。如果将输入层激活函数设为tansig,则学习很快收敛且达到目标误差,仿真效果很好,且多次仿真结果比较稳定,明显要比输入层激活函数设为purelin要好。如果将这三层神经元的激活函数都设置为tansig的话,在多次试验中,训练回合数为1000,均未达到目标误差0.001的要求。3.4BP神经网络在样本分类中的应用3.4.1问题的提出这是一个用BP神经网络来将不同的混合在一起的数据或者样本进行分类的例子。利用上述研究的结果,采用15个隐层节点。我们先自己随机的输入两个样本:%产生训练样本与测试样本,每一列为一个样本P1=[rand(3,5),rand(3,5)+1,rand(3,5)+2];
T1=[repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];P2=[rand(3,5),rand(3,5)+1,rand(3,5)+2];
T2=[repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];%然后再将样本归一化处理,这样有利于我们简便、准确、定量结果。[PN1,minp,maxp]=premnmx(P1);
PN2=tramnmx(P2,minp,maxp);%第三部则是设置网络参数NodeNum=15;%隐层节点数
TypeNum=3;%输出维数TF1='tansig';TF2='purelin';%判别函数(缺省值)
%TF1='tansig';TF2='logsig';
%TF1='logsig';TF2='purelin';
%TF1='tansig';TF2='tansig';
%TF1='logsig';TF2='logsig';
%TF1='purelin';TF2='purelin';3.4.2基于BP神经网络的样本分类%一切工作准备就绪后我们就可以开始训练网络了:net=newff(minmax(PN1),[NodeNumTypeNum],{TF1TF2});
指定训练参数,我们可以选择不同的算法来进行测试做比较:%net.trainFcn='traingd';%梯度下降算法
%net.trainFcn='traingdm';%动量梯度下降算法
%net.trainFcn='traingda';%变学习率梯度下降算法
%net.trainFcn='traingdx';%变学习率动量梯度下降算法
%(大型网络的首选算法-模式识别)
%net.trainFcn='trainrp';%RPROP(弹性BP)算法,内存需求最小
%共轭梯度算法
%net.trainFcn='traincgf';%Fletcher-Reeves修正算法
%net.trainFcn='traincgp';%Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大
%net.trainFcn='traincgb';%Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大
%(大型网络的首选算法-函数拟合,模式识别)
%net.trainFcn='trainscg';%ScaledConjugateGradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多
%net.trainFcn='trainbfg';%Quasi-NewtonAlgorithms-BFGSAlgorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快
%net.trainFcn='trainoss';%OneStepSecantAlgorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大
%(中小型网络的首选算法-函数拟合,模式识别)
net.trainFcn='trainlm';%Levenberg-Marquardt算法,内存需求最大,收敛速度最快
%net.trainFcn='trainbr';%贝叶斯正则化算法
%有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss','trainlm'net.trainParam.show=1;%训练显示间隔
net.trainParam.lr=0.3;%学习步长-traingd,traingdm
net.trainParam.mc=0.95;%动量项系数-traingdm,traingdx
net.trainParam.mem_reduc=10;%分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)
net.trainParam.epochs=1000;%最大训练次数
net.trainParam.goal=1e-8;%最小均方误差
net.trainParam.min_grad=1e-20;%最小梯度
net.trainParam.time=inf;%最大训练时间%训练与测试net=train(net,PN1,T1);%训练%测试Y1=sim(net,PN1);%训练样本实际输出Y2=sim(net,PN2);%一切工作准备就绪后我们就可以开始训练网络了:net=newff(minmax(PN1),[NodeNumTypeNum],{TF1TF2});
指定训练参数,我们可以选择不同的算法来进行测试做比较:%net.trainFcn='traingd';%梯度下降算法
%net.trainFcn='traingdm';%动量梯度下降算法
%net.trainFcn='traingda';%变学习率梯度下降算法
%net.trainFcn='traingdx';%变学习率动量梯度下降算法
%(大型网络的首选算法-模式识别)
%net.trainFcn='trainrp';%RPROP(弹性BP)算法,内存需求最小
%共轭梯度算法
%net.trainFcn='traincgf';%Fletcher-Reeves修正算法
%net.trainFcn='traincgp';%Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大
%net.trainFcn='traincgb';%Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大
%(大型网络的首选算法-函数拟合,模式识别)
%net.trainFcn='trainscg';%ScaledConjugateGradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多
%net.trainFcn='trainbfg';%Quasi-NewtonAlgorithms-BFGSAlgorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快
%net.trainFcn='trainoss';%OneStepSecantAlgorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大
%(中小型网络的首选算法-函数拟合,模式识别)
net.trainFcn='trainlm';%Levenberg-Marquardt算法,内存需求最大,收敛速度最快
%net.trainFcn='trainbr';%贝叶斯正则化算法
%有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss','trainlm'net.trainParam.show=1;%训练显示间隔
net.trainParam.lr=0.3;%学习步长-traingd,traingdm
net.trainParam.mc=0.95;%动量项系数-traingdm,traingdx
net.trainParam.mem_reduc=10;%分块计算Hessian矩阵(仅对Levenberg-Marquardt算法有效)
net.trainParam.epochs=1000;%最大训练次数
net.trainParam.goal=1e-8;%最小均方误差
net.trainParam.min_grad=1e-20;%最小梯度
net.trainParam.time=inf;%最大训练时间%训练与测试net=train(net,PN1,T1);%训练%测试Y1=sim(net,PN1);%训练样本实际输出Y2=sim(net,PN2);%测试样本实际输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 回顾与展望信息系统项目管理师试题及答案
- 信息系统监理师考试方法试题及答案
- 现代公共政策的趋势分析试题及答案
- 信息安全审核与评估实务试题及答案
- 基于业务价值的测试优先级排序试题及答案
- 计算机三级嵌入式开发的挑战与机遇试题及答案
- 计算机三级数据库互动问答试题及答案
- 网络协议的类型与应用试题及答案
- 西方政治制度的权力来源试题及答案
- 社会责任与公共政策调整的必要性考题及答案
- 第七单元 第2课时 观察运动中的物体(大单元教学设计) 一年级数学下册 (苏教版2025)
- 北京市烟草专卖局(公司)笔试试题2024
- 创伤急救知识的试题及答案详解
- 压力容器行业未来发展趋势与市场前景分析
- 游泳馆安全运营管理措施
- 2025年度6深圳中考数学考点、知识点的总结模版
- 2025年全国国家版图知识竞赛题库及答案题(中小学组)
- 2025年广东省深圳市福田区中考二模历史试题(含答案)
- 2025-2030中国细胞培养设备行业市场发展趋势与前景展望战略研究报告
- 广州顺德区2025年高考生物四模试卷含解析
- 合肥市2025届高三年级5月教学质量检测(合肥三模)化学试题+答案
评论
0/150
提交评论