BP神经网络算法

神经网络技术及其应用作业

题目:BP神经网络算法及应用

姓名: 学号: 2013020456 学院:管理科学学院

专业:基 础 数 学

BP神经网络算法及应用

第一部分 人工神经网络的发展历史

人工神经网络(Artificial Neural Network,ANN),是借鉴人脑的结构和特点,通过大量简单处理单元(神经元或节点)互连组成的大规模并行分布式信息处理和非线性动力学系统,它是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。因为人脑是由极大量基本单元(称之为神经元)经过复杂的相互连接而成的一种高度复杂的、非线性的、并行处理的信息处理系统,所以人工神经网络具有巨量并行性、结构可变性、高度非线性、自学习性和自组织性等特点。它能解决常规信息处理方法难以解决或无法解决的问题,尤其是那些属于思维(形象思维)、推理及意识方面的问题。

从人脑的生理结构出发来研究人的智能行为,模拟人脑信息处理的过程,即人工神经网络的研究,自20世纪40年代以来,它的发展经历了一条由兴起、萧条和兴盛三个阶段构成的曲折道路。在1943年美国哈佛大学精神病学家和神经解剖学家McCulloch与数学家Pitts在数学生物物理学会刊《Bulletin of Mathematical Biophysics》上发表文章,总结了生物神经元的一些基本生理特征,提出了形式神经元的数学描述与结构,即MP模型。他们的神经元模型假定遵循一种所谓“有或无”(all-or-none)规则。如果如此简单的神经元数目足够多和适当设置突触连接并且同步操作,McCulloch和Pitts证明这样构成的网络原则上可以计算任何可计算函数。这是一个有重大意义的结果,有了它就标志着神经网络和人工智能学科的诞生。1949年生理学家D.O.Hebb出版了《The Organization of Behavior》(行为组织学)一书。该书第一次鲜明提出了神经元连接强度的Hebb规则。他认为学习过程是在突触上发生的,突触的联系强度随其前后神经元的活动而变化。根据这一假设提出的学习规则为神经网络的学习算法奠定了基础,使神经网络的研究进入了一个重要的发展阶段。1958年,计算机科学家Rosenblatt提出感知机(Perceptron),首次把神经网络理论付诸工程实现。这是一种学习和自组织的心理学模型,它基本上符合神经生物学的知识,模型的学习环境是有噪声的,网络构造中存在随机连接,这是符合动物学习的自然环境。当时,人们对神经网络的研究过于乐观,认为只要将这种神经元互连成一个网络,就可以解决人脑思维的模型问题。但是,随之而来的Minsky和Papert(1969)所著的《Perceptron》一书,利用数学证明单层感知器所能计算的根本局限,提出感知器的处理能力有限,甚至连XOR这样的问题也不能解决,并在多层感知器的总结章中,论述了单层感知器的所有局限性在多层感知器中是不可能被全部克服的。当时人工智能的以功能模拟为目标的另一分支出现了转机,产生了以知识信息处理为基础的知识

工程(Knowledge Engineering),给人工智能从实验室走向实用带来了希望。同时,微电子技术的发展,使传统的计算机的处理能力有很大提高,数字计算机的发展使当时科学界普遍认为它能解决一切问题,包括模式识别、机器人控制等。因而不必去寻找新的计算理论与实现方法。而且,当时的工艺水平还未能达到制作实用的具有足够规模的神经网络,用分离的电子管即使是晶体管所制作的神经网络也只能作示教星的表演。这些因素的共同作用,促使人们降低了对神经网络研究的热情,从而使神经网络进入萧条时期。1982年,美国加州工学院Hopfield提出Hopfield神经网络模型,开创了神经网络用于联想记忆和优化计算的新途径,有力地推动了神经网络的发展。1985年,Hinton和Sejnowsky等人提出了Boltzmann模型,首次采用了多层网络的学习算法,在学习中采用统计热力学模拟退火技术,保证整个系统趋于全局稳定点。1986年Remelhart和McClelland等人提出了并行分布处理的理论,同时,Werbos和Parker独立发展了多层网络的BP算法,这是目前最普遍的网络,广泛用于实际问题求解。

第二部分 人工神经网络的主要应用

神经网络的发展如今已到了一个新时期,它涉及的范围还在不断扩大,其应用渗透到各个领域。在连接主义模式下,进化与学习结合的思想正在迅速发展,神经计算、进化计算正成为其发展的一个重要方向。日本学者Amari.S将微分流形和信息集合应用于人工神经网络的研究,探索系统化的新的神经信息处理理论基础,为人工神经网络的理论研究开辟了条崭新的途径。神经网络理论有极强的数学性质和生物学特征,尤其是在神经科学、心理学和认识科学等方面提出了一些重大问题,是向神经网络理论研究的新挑战,也是它发展的机会。21世纪神经网络理论日益变得更加外向,不断产生具有重要意义的概念和方法,推进神经网络向更高阶段发展。并且神经网络的应用,已渗透到模式识别、图像处理、非线性优化、语音处理、自然语言理解、自动目标识别、机器人、专家系统等各个领域,并取得了令人瞩目的成果。神经网络理论也已成为涉及神经生理科学、认识科学、数理科学、心理学、信息科学、计算机科学、微电子学、光学、生物电子学等多学科的新兴的、综合性的前沿学科。从众多应用研究领域取得的丰硕成果来看,人工神经网络的发展具有强大的生命力。当前存在的问题是智能水平还不高,许多应用方面的要求还不能得到很好的满足;网络分析与综合的一些理论性问题(如稳定性、收敛性的分析,网络的结构综合等)还未得到很好的解决。随着人们对大脑信息处理机理认知的深化,以及人工神经网络智能水平的提高,人工神经网络必将在科学技术领域发挥更大的作用。人工神经网络的应用领域

极其广泛,1988年《DARPA神经网络研究报告》列举了不同领域神经网络的应用实例,见下表1。从表中可以看出,神经网络在人工智能、自动控制、计算机科学、信息处理、机器人、模式识别等方面都有重要的应用实例。随着人工神经网络技术的发展,其用途日益广泛,应用领域也在不断拓展,已在各工程领域中得到广泛的应用。

表1 神经网络应用实例

神经网络比较擅长的应用领域如下:

①模式识别:神经网络经过训练可有效的提取信号、语言、图像、雷达、声纳等感知

模式的特征,并能解决现有启发模式识别系统不能很好解决的不变量测量、自适应、抽象或概括等问题。这方面的主要应用有:图形、符号、手写体及语音识别,雷达及声纳等目标识别,药物构效关系等化学模式信息辨认,机器人视觉、听觉,各种最近相邻模式聚类及识别分类,遥感、医学图像分析,计算机视觉、计算机输入装置等。神经网络可应用于模式识别的各个环节:特征提聚、聚类分析、边缘检测、信号增强、噪音抑制、数据压缩以及各种变换、分类判决等。模式识别是人工神经网络特别适宜求解的一类问题,神经网络模式识别技术在各领域中的广泛应用是神经网络技术发展的一个重要侧面。②人工智能:专家系统是人工智能领域研究时间最长,应用最成功的技术,但人们在应用专家系统解决诸如语音识别、图像处理和机器人控制等这类似于人脑的形象思维的问题时,却遇到很大的困难。神经网络的问世为人工智能开辟了一条崭新的途径,成为人工智能研究领域中的后起之秀,它具有的自学习能力是传统专家系统望尘莫及的。神经网络技术能对不完整信息进行补全,根据已学会的知识和处理问题的经验对复杂问题作出合理的判断决策,给出较满意的解答,或对未来过程作出有效的预测和估计,从而使之在人工智能领域获得广泛的应用。这个方面的主要应用有:自然语言处理、市场分析、预测估值、系统诊断、事故检查、密码破译、语言翻译、逻辑推理、知识表达、智能机器人、模糊评判等。③控制工程:神经网络在诸如机器人运动控制、工业生产中的过程控制等复杂控制问题方面有独到之处。较之基于传统数学计算机的离散控制方式,神经网络更适宜于组成快速实施自适应控制系统。这方面的主要应用有:多变量自适应控制、变结构优化控制、并行分布控制、智能及鲁棒控制等。④优化计算和联想控制:由于并行、分布式的计算结构,神经网络在求解诸如组合优化(NP完备问题)、费心性优化等一系列问题上表现出高速的集体计算能力。在VLSI自动排版、高速通信开关控制、航班分配、货物调度、路径选择、组合编码、排序、系统规划、交通管理以及图论中各类问题的计算等方面得到了成功应用。联想记忆的作用是用一个不完整的模糊的信息联想出储存在记忆中的某个完整、清晰的模式来。如何提高模式储存量和联想质量仍是神经网络的热点之一。目前在这方面的应用又内容寻址器、人脸识别器、知识数据库等。⑤信号处理:神经网络的自学习和自适应能力使其成为对各类信号进行多用途加工处理的一种天然工具,主要用于解决信号处理中的自适应和非线性问题。包括自适应均衡、自适应滤波、回拨抵消、自适应波束形成、自适应编码等自适应问题和各种非线性问题,如非线性区域的模式分类、系统辨识和高维非线性系统的检测、估计等问题,还可对病态问题进行求解。神经网络在弱信号检测、通信、自适应滤波等方面的应用尤其引人注目,并已

在许多行业得到应用。

最后神经网络在许多领域内都有成功的应用实例,但神经网络也不是尽善尽美的。目前,神经网络的理论研究和实际用途都在进一步探索之中,相信随着人工神经网络研究的进一步深入,其应用领域会更广,用途会更大。

第三部分 人工神经网络的基本原理

人工神经元模式:神经网络是由大量简单处理单元组成,通过可变权值连接而成的并行分布式

图1 神经元的一般描述

系统。神经元是人工神经网络的基本处理单元,它是一个多输入-单输出的非线性器件,其结构如图所示。图中,xi为输入信号,wij表示从第i个神经元到第j个神经元的连接权值,θj为第j个神经元的阈值。设sj为外部输入信号,yj为输出信号,在上述模型中第j个神经元的变换可描述为

yjf(wijxijsj)

这里采用的非线性函数f(x)可以是阶跃函数、分段函数及Sigmoid型函数。 连接权值:人工神经网络的处理单元间相互连接,所有的连接构成一有向图。每一连接对应于一个实数,称为连接权值,或称为权重。权值的集合可看作是长期记忆。我们可以用权矩阵W来表示网络中的连接模式,W中的元素是wij。连接权值的类型一般分为激发和抑制形式,正的权值表示激发连接,相反,负的权值表示抑制连接。连接权值的连接方式是人工神经网络的特征描述。 i

神经网络状态:在时刻t,每一个神经元都有一个实数值,称之为神经元状态,也叫做神经元的激励值,用xi表示神经元uj的状态,用X(t)表示神经网络的状态空间。在各种不同的神经网络类型中,状态空间可以作各种不同的假设。状态空间可能是续的,也可能是离散的;可能是有界的,也可能是无界的;可能在一个实数区间上取值,也可能取有限值;最常见的情形是取二值,即0和1两种状态,或-1和1两种状态,亦或是取连续实数值。

神经网络的输出:对于每一个神经元,都有一个输出,并通过连接权值将输出传送给其相连的处理单元,输出信号直接依赖于处理单元的状态或激励值。这种依赖性通过输出变换函数fj对于处理单元uj的作用来表示。假如我们用zj(t)来定义t时刻神经元的ui输出那么

zj(t)=fj(xj(t))

或写成向量的形式

Z(t)=f(X(t))

这里,Z(t)是神经网络的输出向量,f定义为状态向量与每一个分量的对应函数。一般是在区间(0,1)上的有界函数。人工神经网络模型,按它的网络性能分类,可以分成确定性的、随机性的、连续型的和离散型的网络。Hopfield网络模型就存在离散和连续两类。确定性是相对于随机性而言,当网络状态按概率分布变化就呈现了随机性。Boltzmann机就是这种类型的人工神经网络模型,该神经元取0和1两种状态,每个神经元状态的转换是一随机函数。

神经网络的结构:除单元特性外,网络的拓扑结构也是NN的一个重要特性,按网络的拓扑结构分类,人工神经网络可分成3类:①相互连接的网络:相互连接的网络中任意神经元之间都可能有连接,信息在神经元之间可以反复传递,造成网络状态的不断变化。系统整体从某一初始状态开始,经过不断的变化过程,最后进入某一平衡状态、周期振荡或其他状态。②分层前馈型网络分层前馈网络的神经元分层排列,并将其分为输入层、隐含层和输出层。各神经元接受前一层的输入,并输出给下一层,没有反馈(如图2所示)。节点分为两类,即输入单元和计算单元,每一计算单元可有任意多个输入,但只有一个输出(它可以耦合到任意多个其他节点作为其输入)。前馈型网络可分为不同的层,每一层的神经元只接收前一层神经元的输入,输入层接收外界的输入模式。输入模式经过各层神经元的响应处理变为输出层的输出。最常用的前馈神经网络就是BP神经网络(Backpropagation Neural Network)和RBF径向基函数网络(Radial Basis Function Neural Network)。

图2 具有一个隐层的前馈型网络

③反馈分层网络:如图3所示,该网络是在分层前馈网络基础上,将网络的输出反馈到网络的输入,反馈可以将全部输出反馈,也可以将部分输出反馈。所有节点都是计算单元,同时也可接受输入,并向外界输出。最典型的反馈神经网络就是Hopfield神经网络。ANN的工作过程主要分为两个阶段,一个阶段是学习期,此时各计算单元状态不变,各连线上的权值通过学习来修改。第二阶段是工作期,此时连接权值固定,计算单元状态变化,以达到某种稳定状态。

图3单层全连接反馈型网络

从作用效果来看,前馈型网络主要是函数映射,可用于模式识别和函数逼近。按对能量函数的所有极小点的利用情况,可将反馈型网络分为两类:一类是能量函数的所有极小点都起作用,主要用作各种联想存储器;另一类只利用全局极小点,它主要用于求解优化问题。

神经网络的主要特点:①分布式储存信息。其信息的储存分布在不同的位置,神经网络是用大量神经元之间的连接及对各连接权值的分布来表示特定的信息,

从而使

网络在局部网络受损或输入信号因各种原因发生部分畸变时,仍然能够保证网络的正确输出,提高网络的容错性和鲁棒性。②并行协同处理信息。神经网络中的每个神经元都可根据接收到的信息进行独立的运算和处理,并输出结果,同一层中的各个神经元的输出结果可被同时计算出来,然后传输给下一层做进一步处理,这体现了神经网络并行运算的特点,这一特点使网络具有非常强的实时性。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为是极其丰富多彩的。③信息处理与储存合二为一。神经网络的每个神经元都兼有信息处理和储存功能,神经元之间连接强度的变化,既反应了对信息的记忆,同时又与神经元对激励的响应以其反映了对信息的处理。④对信息的处理具有自组织、自学习的特点,便于联想、综合和推广。神经网络的神经元之间的连接强度用权值大小来表示,这些神经元之间的连接强度会不断增加,从而提高神经元对这些样本特征的反应灵敏度。

第四部分 BP神经网络算法的改进及其仿真研究

随着控制领域中不断出现新的控制思路和手段,人工神经网络作为一种新型的信息获取、描述和处理方式,正在引起过程控制届的注意。神经网络具有能够逼近任意非线性函数关系的能力和比较方便的学习手段,因此,它可以用来作为一种复杂工业过程建模的新型方法[7]。本文针对常用BP算法收敛速度慢,易陷入局部极小等缺点,对以往BP算法的各种改进进行了深入的分析和探讨。同时,借鉴Fletcher-Reeves线性搜索方法[8],探讨了基于Fletcher-Reeves方法的改进共轭梯度法。并对各种算法进行仿真和比较,实验结果表明,本文提出的改进共轭梯度方法可以有效提高网络的收敛速度,同时避免网络陷入局部极小点,达到全局最优。

4.1 BP算法的数学描述

1986年Rumelhart,Hinton和Williams完整而简明地提出一种ANN的误差反向传播训练算法(简称BP算法),系统地解决了多层网络中隐含单元连接权的学习问题,由此算法构成的网络我们称为BP网络。BP网络是前向反馈网络的一种,也是当前应用最为广泛的一种网络。误差反传算法的主要思想是把学习过程分为两个阶段:第一阶段(正向传播过程),给出输入信息通过输入层经隐含层处理并计算每个单元的实际输出值;第二阶段(反向过程),若在输出层未能得到期望的输出值,则逐层递归地计算实际输出与期望输出之差值(即误差),以便根据此差值调节权值,具体来说,就是可对每一权重计算出接收单元的误差值与发送单元的激活值的积。基于BP算法的多层前馈型网络的结构如图4所示。

这种网络不仅有输入层节点,输出层节点,而且有一层或多层隐含节点。对于输入信息,首先向前传播到隐含层的节点上,经过各单元的激活函数(又称作用函数、转换函数)运算后,把隐含节点的输出信息传播到输出节点,最后给出输出结果。网络的学习过程由正向和反向传播两部分组成。在正向传播过程中,每一层的神经元的状态只影响下一层神经元网络。如果输出层不能得到期望输出,就是实际输出值与期望输出值之间有误差,那么转向反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,再经过正向传播过程,这两个过程的反复运用,使得误差信号最小。实际上,误差达到人们所希望的要求时,

图4 基于BP算法的多层前馈型网络的结构

BP算法是在导师指导下,适合于多层神经元网络的一种学习,它是建立在梯度下降法的基础上的。理论证明,含有一个隐含层的BP网络可以实现以任意精度近似任何连续非线性函数。设含有共L层和n个节点的一个任意网络,每层单元只接受前一层的输出信息并输出给下一层各单元,各节点(有时称为单元)的特性为Sigmoid型(它是连续可微的,不同于感知器中的线性阈值函数,因为它是不连续的)。为简单起见,认为网络只有一个输出y。设给定N个样本(xk,yk)(k=1,2,...,N),任一节点i的输出为i,对某一个输入为xk,网络的输出为yk,节点i的输出为ik,现在研究第l层的第j个单元,当输入第k 个样本时,节点j的输入为

lll1wijjk netij

j

l

jkf(netl

jk)

1其中l

jk表示l-1层,输入第k个样本时,第j个单元节点的输出。

采用的误差函数为

Ek

1 2

(y)lklk

2l

其中lk为单元j的实际输出。总误差为

1

E

2N

E

k1

N

k

l

定义 jk

Ek

netljk

l

EkEknetjkEkl1ll1

于是 ljkjkjk lll

wijnetjkwijnetjk

下面分两种情况来讨论:

(1)若节点j为输出单元,则ljkjk

ljk

EkEkjk

(ykk)f(netljk) ll

netjkjknetjk

(2)若节点j不是输出单元,则

l

EkEkjkEkl

 f(netjk) lll

netjkjknetjkjk

ljk

式中ljk是送到下一层(l+1)层的输入,计算

在(l+1)层第m个单元时

Ek

要从(l+1)层算回来。 ljk

l1

EkEknetmkEkl1l1l1

mkwmj ll1ll1mj

jknetnetmmmmkjkmk

将式代入得

1l1

wmjf(netljk) ljklmk

m

总结上述结果,有

l1l1

ljkmkwmjf(netljk)mEk

ll1

ljkjk

 wij

因此,反向传播算法的步骤可概括如下:

(1)选定权系数初值;

(2)重复下述过程,直到误差指标满足精度要求,即:

1

E

2N

E

k1

N

k

,:精度

对k=1到N

1

正向过程计算:计算每层单元的ljk,netljk和k,k=2,...,N。

反向过程:对各层(l=L-1到2),对每层各单元,计算ljk。 修正权值

wijwij

(3)结束。

这里,训练样本的呈现顺序从一个回合到另一个回合必须是随机的。动量和学习率参数随着训练迭代次数的增加而调整(通常是减少的)。 4.2 BP网络学习算法

标准的BP算法是基于梯度下降法,通过计算目标函数对网络权值和阈值进行修正的。改进算法大多是在标准梯度下降法的基础上发展起来的,它们只用到目标函数对权值和阈值的一阶导数(梯度)信息。 4.2.1标准BP算法

在标准BP算法中,设k为迭代次数,则每一层权值和阈值的修正按下式进

x(k1)x(k)g(k)

E

0 wij

式中:x(k)为第k次迭代各层次之间的连接权向量或阈值向量。

g(k)

E(k)

为第k 次迭代的神经网络输出误差对各权值或阈值的梯度向量。x(k)

负号表示梯度的反方向,即梯度的速度下降方向。

为学习速率,在训练时是一个常数。在MATLAB神经网络工具箱中,其默认值是0.01,可以通过改变训练参数进行设置。

Ek为第k次迭代的网络输出的总误差性能函数,在MATLAB神经网络工具箱中,BP网络误差性能函数的默认值为均方误差MSE(mean square error),以二层BP网络为例,只有一个输入样本时,有

1s22

E(k)E[e(k)]2[tiai2(k)]2

si1

2

s2

a2i(k)f2{[i2,j(k)ai1(k)bi2(k)]}

j1

f2{[i2,j(k)f1((ii1(k)piibi1(k)))bi2(k)]}

j1

j1

s2s1

下面我们用一个具体实例来说明

例4·1已知某系统输出y与输入x的部分对应关系如表2所示。设计一BP神经网络,完成y=f(x)的曲线拟合。

表2 函数y=f(x)的部分对应关系

以隐层节点数为15的单输入和单输出两层BP网络来实现其曲线拟和,其仿真图如下

10

1

Performance is 0.00099991, Goal is 0.001

10

Training-Blue Goal-Black

10

-1

10

-2

10

-3

10

-4

0200400600

[1**********]

1878 Epochs

[1**********]0

图5 标准BP算法的误差性能曲线仿真结果

从仿真结果可以看出,权值和阈值的修正是在所有样本输入后,计算总的误差后

进行的,这样标准BP算法的收敛速度比较慢。 4.2.2动量BP算法

它的实质就是改变学习率η来提高网络性能,其网络连接权的迭代关系式由 传统BP算法

w(t1)

变为

w(t1)

E

w(t) w

E w

其中,动量项w(t)([w(t)w(t1)])。为动量因子,01。动量项的作用在于记忆上一时刻的连接权的变化方向(即变化量的值),这样就可以用较大的学习速率系数η以提高学习速度。附加动量项利用其“惯性效应”来抑制网络训练中可能出现的振荡,起到了缓冲平滑的作用。

此外,附加动量项还有利于脱离平坦区。如果网络的训练已进入了误差曲面 的平坦区域,那么误差将变化很小,于是w(t1)近似于w(t),而平均的w(t)将变



w(E/w)

1

为了便于比较我们就以例4·1为例,用动量BP算法进行仿真,其结果如图6所示:

由仿真结果可知,与传统BP算法的连接权修正量关系式比较,可见添加附加动量项后,式中的系数增大为/(1),从而有利于加快脱离饱和区。

10

Performance is 0.000998261, Goal is 0.001

10

Training-Blue Goal-Black

10

10

10

10

10

0200400600

[1**********] Epochs

[1**********]0

图6 动量BP算法的误差性能曲线仿真结果

4.2.3学习率可变的BP算法

该方法被认为是一种最简单最有效的方法。在BP算法中,连接权的调整决定于学习速率和梯度,但是,在基本BP算法中,学习速率是不变的。实际上学习速率对收敛速度的影响也很大,通过对它的在线调整,可以大大提高收敛速度。

学习速率的调整原则上是使它在每一步保持尽可能大的值,而又不致使学习过程失去稳定性。学习速率可以根据误差变化的信息和误差函数对连接权梯度变化的信息进行启发式调整,也可以根据误差函数对学习速率的梯度直接进行调整。

对于批处理可以根据总误差变化的信息进行启发式调整,其规则是: (1)若总误差E减小,则学习率增加。

(2)若总误差E增加,则学习率减小。当新误差与老误差之比超过一定值(例如1.04),则学习率快速下降(例如将实际值乘以因子b=0.7). 上述规则可用如下迭代方程来描述:

a(n1),ifE[W(n)]W[W(n1)]

b(n1),ifE[W(n)]kE[W(n)]

(n1),else

其中参数的典型值为:a=1.05,b=0.7,k=1.04。上述方法可以在学习过程的每一步进行学习率的调整。

我们仍以例4·1为例,用学习率可变BP算法进行仿真,其结果如下

10

Performance is 0.000929811, Goal is 0.001

10

Training-Blue Goal-Black

10

10

10

10

050100

150291 Epochs

200250

图7 学习率可变BP算法的误差性能曲线仿真结果

4.3 BP算法的缺陷

基于BP算法的神经网络从运行过程中的信息流向来看,它是前馈型网络。这种网络仅提供许多具有简单处理能力的神经元的复合作用使网络具有复杂的非线性映射能力而没有反馈,因此它不属于一个非线性动力学系统,而只是一个非线性映射。尽管如此,由于它理论上的完整性和应用的广泛性,所以它仍然有重要的意义,但它也存在着不少问题。①BP算法按照均方误差的梯度下降方向收敛,但均方误差的梯度曲线存在不少局部和全局最小点,这就使得神经网络易陷入局部极小(local

minima);②BP学习算法的收敛速度很慢,可能会浪费大量时间;③网络的隐含节

点数的选取尚缺少统一而完整的理论指导(即没有很好的解析式来表示);④已学习好的网络的泛化能力较差。

针对这些问题,需对基本BP算法做必要的改进,以加快收敛速度,达到最优化。

4.4 BP算法的一种改进——变梯度BP算法

BP网络采用的是基本BP算法,即负梯度算法,这种算法沿网络性能函数的负

梯度方向调整权值和阈值。但是算法中相邻迭代的搜索方向正交,当接近极值时会发生“锯齿”形的振荡。虽然这是减低网络性能函数值的最快方法,但它存在收敛速度

慢和易陷入局部极小的缺点。本文在此探讨通过变换梯度来加快网络训练的收敛速度的共轭梯度算法,利用这种算法改善收敛速度与收敛性能。 4.4.1共轭梯度法

与梯度下降法不同,基于数值优化的算法不仅利用了目标函数的一阶导数信息,而且往往利用了目标函数的二阶导数信息。它可以统一描述为

(k1)

)minf(Xk(k)s(X(k)))f(X

(k1)(k)(k)(k)

Xs(X)X

其中,X为网络的所有权值和阈值组成的向量,S(X)为由X各分量组成的向量空间的搜索方向,a为在S(X)方向上使达到极小的步长。这样,网络权值的寻优便可分为以下两步:①首先确定当前迭代的最佳搜索方向;②在此方向上寻求最优迭代步长。

共轭梯度法力图避免梯度下降法收敛速度较慢和计算复杂的缺点,第一步沿负梯度方向进行搜索,然后再沿当前搜索的共轭方向进行搜索,从而可以迅速达到最优值。

共轭梯度法比大多数常规的梯度法收敛快,并且只需增加很少的存储量和计算量。对于权值很多的网络,采用共轭梯度法不失为一种较好的选择。

共轭梯度法是重要的无约束最优化方法。其基本思想就是使得最速下降方向具有共轭性,并据此搜索目标函数极值,从而提高算法的有效性和可靠性。图3·4·1中g(k)即为共轭梯度矢量。它的方向矢量不是预先给定的,而是在现行的负梯度与前一个方向矢量的线性组合的方向上进行的。梯度g(k)被定义为f(x)对x的微分,即

(k)

(k)

(k)(k)

f(x)。但是该方法中的方向矢量的共轭性仅依赖于负梯度的初始方向,所以

x

在解点附近很可能失去共轭方向的优点,因此这种算法的缺点在于算法不是全局最优的。

g(x)

根据Fletcher-Reeves处理非二次问题的思想——在算法实施过程中,每n步

做一次纯最速下降步骤,并以此作为一个间插步骤,因为其它步骤不使目标函数增加,因此能保证算法的全局收敛性。所谓间插步骤就是在某种算法进行过程中插入一步其它算法,大多是不规则的但又是频繁的(如最速下降法),以保证整个复合过程的收敛性。间插步骤的唯一要求是使它们不增加下降函数的值。基于以上思想,提出共轭梯度的改进算法。 4.4.2改进共轭梯度法

改进共轭梯度算法在不增加算法复杂性的前提下可以提高收敛速度,并且可以沿共轭方向达到全局最优即全局极值点。它要求在算法进行过程中使用线性搜索,本文采用Fletcher-Reeves线性搜索方法,以保证算法的收敛速度。

梯度矢量g(x)与方向矢量d(0),d(1),...,d(k-1)构成的子空间正交,每迭代一次,子空间的维数加1,学习速率(k)每次迭代时沿搜索方向d(k)发生变化,其大小取决于Fletcher-Reeves线性搜索的结果。

如果共轭梯度法在第k+1次的学习速率(k)使得目标函数值增加,即当由于误差积累使某步的搜索方向变为非下降方向时,根据全局收敛定理,目标函数在整个迭代过程中必须连续递减,因此,将k+1次学习速率(k)置0,这时实施一步间插步骤,即令梯度g(k-1)=g(k),方向矢量d(k-1)=d(k),共轭梯度法重新开始。此时,相当于对共轭梯度法实施一次速下降步骤,迭代完毕,所得结果收敛于全局极小点。

将改进共轭梯度法应用于BP网络的算法如下: ①选取初始点w(0)和初始搜索方向d(0)=-g(0);

②对k=0,1,2,...,n-1,BP网络的权值修正公式为w(k1)w(k)(k)d(k) 式中(k)为学习速率,使上式取得极小;d(k)为第k次迭代的共轭方向。 ③计算新的梯度矢量g(k+1);

④若k=n-1,则用w(n)代替w(0),并返回步骤①;否则转步骤⑤; ⑤计算第k+1次迭代的共轭方向d(k+1),

d(k1)g(k1)(k)d(k)

其中

gT(k)g(k)

-Fletcher-Reeves公式 (k)T

g(k1)g(k1)

⑥如果dT(k1)g(k1)0,则用w(n)代替w(0),并返回步骤①;否则转步骤②。 我们还是以例4·1为例,用改进共轭梯度BP算法进行仿真,其结果如下

10

Performance is 0.000944982, Goal is 0.001

10

Training-Blue Goal-Black

10

10

10

10

10

01020

30

56 Epochs

4050

图8 改进共轭梯度BP算法的误差性能曲线仿真结果

由此可见,改进共轭梯度算法在保证全局收敛的同时,也兼顾到算法的收敛速度。为了确保搜索方向的共轭性,初始搜索方向取负梯度方向;且当误差积累是某步的搜索方向变为非下降方向时,也以负梯度方向重新开始后续搜索。

第五部分BP网络应用实例

在本节的仿真研究中,我们借助MATLAB中的Simulink工具并辅助神经网络的编程形式对改进的BP算法进行测试,并对前面介绍的各种算法构成的BP神经网络进行仿真比较。

5.5.1一般BP算法及其改进算法训练过程的不同

我们就以例4·1为例用改进的BP算法完成y=f(x)的曲线拟合。采用基本BP算法来对其进行仿真逼近,其训练结果与误差如图9和图10所示。

10

1

Performance is 0.000801035, Goal is 0.001

10

Training-Blue Goal-Black

10

-1

10

-2

10

-3

10

-4

020406080

100120203 Epochs

[1**********]0

图9 例4·1训练的误差性能曲线

-1

-0.8-0.6-0.4-0.200.20.40.60.81

图10 例4·1曲线拟和的仿真结果

通过比较我们可以发现,采用附加动量之后,其所加入的动量项实际上相当于阻尼项,它减小了学习过程的震荡趋势,从而改变了收敛性。因此比较图像,我们可以知道,网络的训练速度加快,误差的收敛速度也加快。

通过仿真研究,我们发现,一般梯度法都被用来同时训练神经网络的所有权值,

一旦到达一个局部极小点后,网络的训练过程就停止了,网络的性能就由这个局部极小点决定,从而无法达到最好的优化效果。在本例的训练过程中,改进共轭梯度BP算法的训练速度明显加快,收敛性能得到改善,在训练过程中寻求全局最优,从而得到令人满意的收敛效果。

5.5.2 BP神经网络的函数逼近

需要指出的是,迄今为止,关于BP神经网络隐层神经元数目的选取还没有完整的理论依据,因此,在实际仿真过程中,隐层神经元的数目的选取一般凭经验或试凑得到。只要网络能够满足给定的性能指标,那么就选取能够满足要求的隐层神经元个数即可。隐层神经元数目选取过多,会增加网络训练的时间和复杂度。

总结:

人工神经网络,是由大量处理单元(神经元)组成的非线性大规模自适应动力系

统。它具有自组织,自适应和自学习能力,以及具有非线性、非局域性,非定常性和非凸性等特点。它是在现代神经科学研究成果的基础上提出的,试图通过模拟大脑神经网络处理,记忆信息的方式设计一种新的机器使之具有人脑那样的信息处理能力。

本文描述了BP神经网络的基本原理和基本算法,针对BP神经网络的基本BP

训练算法收敛速度慢和易陷入局部极小值的缺陷,在分析了前人研究成果的基础上,提出了改进共轭梯度算法,有效地改善了网络的收敛性能和训练速度。

在理论方面,详细分析了算法提出的理论依据与总体思路、给出了算法中用到的

改进共轭梯度法。

在仿真方面,本文将改进共轭梯度学习算法和一般的学习算法进行了比较,从多

方面分析了算法的性能,指出了算法的优缺点。仿真结果表明,由于本算法能够通过变换梯度来加快网络训练的收敛速度,减小训练误差,因此,训练后的误差反传神经网络的性能也得到了进一步改善,能够达到令人满意的函数逼近效果。

从以上研究结果可以看出,BP神经网络是一种性能优良,具有巨大应用潜力的

神经网络。由于本人能力有限,因此本课题在以后的研究中还需要进一步完善。

参考文献

[1]海金(HayKin,S.),叶世伟.神经网络原理(原书第2版)[M].北京:机械工业社,2004.

[2]高隽.人工神经网络原理及仿真实例[M].北京:机械工业出版社,2003.

[3]周开利,康耀红.神经网络模型及其MATLAB仿真程序设计[M]. 北京:清华大学 出版社,2004.

[4]袁曾任.人工神经元网络及其应用[M].北京:清华大学出版社,1999.

[5]吴涛,许晓鸣,戚晓薇,张浙.基于改进BP算法的人工神经网络建模及其在干燥过程中的应用[J].中国控制会议路论文集,1998(9):677-681.

[6]陈桦,程云艳.BP神经网络算法的改进及在MATLAB中的实现.陕西科技大学学报,2004,22(2):45-47.

[7]周建华.共轭梯度法在BP网络中的应用[J].计算机工程与应用,1999:17-19.

附 录

标准BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traingd','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.goal = 0.001;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

动量BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traingdm','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.goal = 0.001;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

学习率可变BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traingdx','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

改进共轭梯度BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traincgf','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.goal = 0.001;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

例4·1训练的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traincgb','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

例4·1曲线拟和的仿真程序:

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

hold on

plot(p,t,'*');

load E53net net;

p=-1:0.01:0.9;

r=sim(net,p);

plot(p,r);

hold off

神经网络技术及其应用作业

题目:BP神经网络算法及应用

姓名: 学号: 2013020456 学院:管理科学学院

专业:基 础 数 学

BP神经网络算法及应用

第一部分 人工神经网络的发展历史

人工神经网络(Artificial Neural Network,ANN),是借鉴人脑的结构和特点,通过大量简单处理单元(神经元或节点)互连组成的大规模并行分布式信息处理和非线性动力学系统,它是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。因为人脑是由极大量基本单元(称之为神经元)经过复杂的相互连接而成的一种高度复杂的、非线性的、并行处理的信息处理系统,所以人工神经网络具有巨量并行性、结构可变性、高度非线性、自学习性和自组织性等特点。它能解决常规信息处理方法难以解决或无法解决的问题,尤其是那些属于思维(形象思维)、推理及意识方面的问题。

从人脑的生理结构出发来研究人的智能行为,模拟人脑信息处理的过程,即人工神经网络的研究,自20世纪40年代以来,它的发展经历了一条由兴起、萧条和兴盛三个阶段构成的曲折道路。在1943年美国哈佛大学精神病学家和神经解剖学家McCulloch与数学家Pitts在数学生物物理学会刊《Bulletin of Mathematical Biophysics》上发表文章,总结了生物神经元的一些基本生理特征,提出了形式神经元的数学描述与结构,即MP模型。他们的神经元模型假定遵循一种所谓“有或无”(all-or-none)规则。如果如此简单的神经元数目足够多和适当设置突触连接并且同步操作,McCulloch和Pitts证明这样构成的网络原则上可以计算任何可计算函数。这是一个有重大意义的结果,有了它就标志着神经网络和人工智能学科的诞生。1949年生理学家D.O.Hebb出版了《The Organization of Behavior》(行为组织学)一书。该书第一次鲜明提出了神经元连接强度的Hebb规则。他认为学习过程是在突触上发生的,突触的联系强度随其前后神经元的活动而变化。根据这一假设提出的学习规则为神经网络的学习算法奠定了基础,使神经网络的研究进入了一个重要的发展阶段。1958年,计算机科学家Rosenblatt提出感知机(Perceptron),首次把神经网络理论付诸工程实现。这是一种学习和自组织的心理学模型,它基本上符合神经生物学的知识,模型的学习环境是有噪声的,网络构造中存在随机连接,这是符合动物学习的自然环境。当时,人们对神经网络的研究过于乐观,认为只要将这种神经元互连成一个网络,就可以解决人脑思维的模型问题。但是,随之而来的Minsky和Papert(1969)所著的《Perceptron》一书,利用数学证明单层感知器所能计算的根本局限,提出感知器的处理能力有限,甚至连XOR这样的问题也不能解决,并在多层感知器的总结章中,论述了单层感知器的所有局限性在多层感知器中是不可能被全部克服的。当时人工智能的以功能模拟为目标的另一分支出现了转机,产生了以知识信息处理为基础的知识

工程(Knowledge Engineering),给人工智能从实验室走向实用带来了希望。同时,微电子技术的发展,使传统的计算机的处理能力有很大提高,数字计算机的发展使当时科学界普遍认为它能解决一切问题,包括模式识别、机器人控制等。因而不必去寻找新的计算理论与实现方法。而且,当时的工艺水平还未能达到制作实用的具有足够规模的神经网络,用分离的电子管即使是晶体管所制作的神经网络也只能作示教星的表演。这些因素的共同作用,促使人们降低了对神经网络研究的热情,从而使神经网络进入萧条时期。1982年,美国加州工学院Hopfield提出Hopfield神经网络模型,开创了神经网络用于联想记忆和优化计算的新途径,有力地推动了神经网络的发展。1985年,Hinton和Sejnowsky等人提出了Boltzmann模型,首次采用了多层网络的学习算法,在学习中采用统计热力学模拟退火技术,保证整个系统趋于全局稳定点。1986年Remelhart和McClelland等人提出了并行分布处理的理论,同时,Werbos和Parker独立发展了多层网络的BP算法,这是目前最普遍的网络,广泛用于实际问题求解。

第二部分 人工神经网络的主要应用

神经网络的发展如今已到了一个新时期,它涉及的范围还在不断扩大,其应用渗透到各个领域。在连接主义模式下,进化与学习结合的思想正在迅速发展,神经计算、进化计算正成为其发展的一个重要方向。日本学者Amari.S将微分流形和信息集合应用于人工神经网络的研究,探索系统化的新的神经信息处理理论基础,为人工神经网络的理论研究开辟了条崭新的途径。神经网络理论有极强的数学性质和生物学特征,尤其是在神经科学、心理学和认识科学等方面提出了一些重大问题,是向神经网络理论研究的新挑战,也是它发展的机会。21世纪神经网络理论日益变得更加外向,不断产生具有重要意义的概念和方法,推进神经网络向更高阶段发展。并且神经网络的应用,已渗透到模式识别、图像处理、非线性优化、语音处理、自然语言理解、自动目标识别、机器人、专家系统等各个领域,并取得了令人瞩目的成果。神经网络理论也已成为涉及神经生理科学、认识科学、数理科学、心理学、信息科学、计算机科学、微电子学、光学、生物电子学等多学科的新兴的、综合性的前沿学科。从众多应用研究领域取得的丰硕成果来看,人工神经网络的发展具有强大的生命力。当前存在的问题是智能水平还不高,许多应用方面的要求还不能得到很好的满足;网络分析与综合的一些理论性问题(如稳定性、收敛性的分析,网络的结构综合等)还未得到很好的解决。随着人们对大脑信息处理机理认知的深化,以及人工神经网络智能水平的提高,人工神经网络必将在科学技术领域发挥更大的作用。人工神经网络的应用领域

极其广泛,1988年《DARPA神经网络研究报告》列举了不同领域神经网络的应用实例,见下表1。从表中可以看出,神经网络在人工智能、自动控制、计算机科学、信息处理、机器人、模式识别等方面都有重要的应用实例。随着人工神经网络技术的发展,其用途日益广泛,应用领域也在不断拓展,已在各工程领域中得到广泛的应用。

表1 神经网络应用实例

神经网络比较擅长的应用领域如下:

①模式识别:神经网络经过训练可有效的提取信号、语言、图像、雷达、声纳等感知

模式的特征,并能解决现有启发模式识别系统不能很好解决的不变量测量、自适应、抽象或概括等问题。这方面的主要应用有:图形、符号、手写体及语音识别,雷达及声纳等目标识别,药物构效关系等化学模式信息辨认,机器人视觉、听觉,各种最近相邻模式聚类及识别分类,遥感、医学图像分析,计算机视觉、计算机输入装置等。神经网络可应用于模式识别的各个环节:特征提聚、聚类分析、边缘检测、信号增强、噪音抑制、数据压缩以及各种变换、分类判决等。模式识别是人工神经网络特别适宜求解的一类问题,神经网络模式识别技术在各领域中的广泛应用是神经网络技术发展的一个重要侧面。②人工智能:专家系统是人工智能领域研究时间最长,应用最成功的技术,但人们在应用专家系统解决诸如语音识别、图像处理和机器人控制等这类似于人脑的形象思维的问题时,却遇到很大的困难。神经网络的问世为人工智能开辟了一条崭新的途径,成为人工智能研究领域中的后起之秀,它具有的自学习能力是传统专家系统望尘莫及的。神经网络技术能对不完整信息进行补全,根据已学会的知识和处理问题的经验对复杂问题作出合理的判断决策,给出较满意的解答,或对未来过程作出有效的预测和估计,从而使之在人工智能领域获得广泛的应用。这个方面的主要应用有:自然语言处理、市场分析、预测估值、系统诊断、事故检查、密码破译、语言翻译、逻辑推理、知识表达、智能机器人、模糊评判等。③控制工程:神经网络在诸如机器人运动控制、工业生产中的过程控制等复杂控制问题方面有独到之处。较之基于传统数学计算机的离散控制方式,神经网络更适宜于组成快速实施自适应控制系统。这方面的主要应用有:多变量自适应控制、变结构优化控制、并行分布控制、智能及鲁棒控制等。④优化计算和联想控制:由于并行、分布式的计算结构,神经网络在求解诸如组合优化(NP完备问题)、费心性优化等一系列问题上表现出高速的集体计算能力。在VLSI自动排版、高速通信开关控制、航班分配、货物调度、路径选择、组合编码、排序、系统规划、交通管理以及图论中各类问题的计算等方面得到了成功应用。联想记忆的作用是用一个不完整的模糊的信息联想出储存在记忆中的某个完整、清晰的模式来。如何提高模式储存量和联想质量仍是神经网络的热点之一。目前在这方面的应用又内容寻址器、人脸识别器、知识数据库等。⑤信号处理:神经网络的自学习和自适应能力使其成为对各类信号进行多用途加工处理的一种天然工具,主要用于解决信号处理中的自适应和非线性问题。包括自适应均衡、自适应滤波、回拨抵消、自适应波束形成、自适应编码等自适应问题和各种非线性问题,如非线性区域的模式分类、系统辨识和高维非线性系统的检测、估计等问题,还可对病态问题进行求解。神经网络在弱信号检测、通信、自适应滤波等方面的应用尤其引人注目,并已

在许多行业得到应用。

最后神经网络在许多领域内都有成功的应用实例,但神经网络也不是尽善尽美的。目前,神经网络的理论研究和实际用途都在进一步探索之中,相信随着人工神经网络研究的进一步深入,其应用领域会更广,用途会更大。

第三部分 人工神经网络的基本原理

人工神经元模式:神经网络是由大量简单处理单元组成,通过可变权值连接而成的并行分布式

图1 神经元的一般描述

系统。神经元是人工神经网络的基本处理单元,它是一个多输入-单输出的非线性器件,其结构如图所示。图中,xi为输入信号,wij表示从第i个神经元到第j个神经元的连接权值,θj为第j个神经元的阈值。设sj为外部输入信号,yj为输出信号,在上述模型中第j个神经元的变换可描述为

yjf(wijxijsj)

这里采用的非线性函数f(x)可以是阶跃函数、分段函数及Sigmoid型函数。 连接权值:人工神经网络的处理单元间相互连接,所有的连接构成一有向图。每一连接对应于一个实数,称为连接权值,或称为权重。权值的集合可看作是长期记忆。我们可以用权矩阵W来表示网络中的连接模式,W中的元素是wij。连接权值的类型一般分为激发和抑制形式,正的权值表示激发连接,相反,负的权值表示抑制连接。连接权值的连接方式是人工神经网络的特征描述。 i

神经网络状态:在时刻t,每一个神经元都有一个实数值,称之为神经元状态,也叫做神经元的激励值,用xi表示神经元uj的状态,用X(t)表示神经网络的状态空间。在各种不同的神经网络类型中,状态空间可以作各种不同的假设。状态空间可能是续的,也可能是离散的;可能是有界的,也可能是无界的;可能在一个实数区间上取值,也可能取有限值;最常见的情形是取二值,即0和1两种状态,或-1和1两种状态,亦或是取连续实数值。

神经网络的输出:对于每一个神经元,都有一个输出,并通过连接权值将输出传送给其相连的处理单元,输出信号直接依赖于处理单元的状态或激励值。这种依赖性通过输出变换函数fj对于处理单元uj的作用来表示。假如我们用zj(t)来定义t时刻神经元的ui输出那么

zj(t)=fj(xj(t))

或写成向量的形式

Z(t)=f(X(t))

这里,Z(t)是神经网络的输出向量,f定义为状态向量与每一个分量的对应函数。一般是在区间(0,1)上的有界函数。人工神经网络模型,按它的网络性能分类,可以分成确定性的、随机性的、连续型的和离散型的网络。Hopfield网络模型就存在离散和连续两类。确定性是相对于随机性而言,当网络状态按概率分布变化就呈现了随机性。Boltzmann机就是这种类型的人工神经网络模型,该神经元取0和1两种状态,每个神经元状态的转换是一随机函数。

神经网络的结构:除单元特性外,网络的拓扑结构也是NN的一个重要特性,按网络的拓扑结构分类,人工神经网络可分成3类:①相互连接的网络:相互连接的网络中任意神经元之间都可能有连接,信息在神经元之间可以反复传递,造成网络状态的不断变化。系统整体从某一初始状态开始,经过不断的变化过程,最后进入某一平衡状态、周期振荡或其他状态。②分层前馈型网络分层前馈网络的神经元分层排列,并将其分为输入层、隐含层和输出层。各神经元接受前一层的输入,并输出给下一层,没有反馈(如图2所示)。节点分为两类,即输入单元和计算单元,每一计算单元可有任意多个输入,但只有一个输出(它可以耦合到任意多个其他节点作为其输入)。前馈型网络可分为不同的层,每一层的神经元只接收前一层神经元的输入,输入层接收外界的输入模式。输入模式经过各层神经元的响应处理变为输出层的输出。最常用的前馈神经网络就是BP神经网络(Backpropagation Neural Network)和RBF径向基函数网络(Radial Basis Function Neural Network)。

图2 具有一个隐层的前馈型网络

③反馈分层网络:如图3所示,该网络是在分层前馈网络基础上,将网络的输出反馈到网络的输入,反馈可以将全部输出反馈,也可以将部分输出反馈。所有节点都是计算单元,同时也可接受输入,并向外界输出。最典型的反馈神经网络就是Hopfield神经网络。ANN的工作过程主要分为两个阶段,一个阶段是学习期,此时各计算单元状态不变,各连线上的权值通过学习来修改。第二阶段是工作期,此时连接权值固定,计算单元状态变化,以达到某种稳定状态。

图3单层全连接反馈型网络

从作用效果来看,前馈型网络主要是函数映射,可用于模式识别和函数逼近。按对能量函数的所有极小点的利用情况,可将反馈型网络分为两类:一类是能量函数的所有极小点都起作用,主要用作各种联想存储器;另一类只利用全局极小点,它主要用于求解优化问题。

神经网络的主要特点:①分布式储存信息。其信息的储存分布在不同的位置,神经网络是用大量神经元之间的连接及对各连接权值的分布来表示特定的信息,

从而使

网络在局部网络受损或输入信号因各种原因发生部分畸变时,仍然能够保证网络的正确输出,提高网络的容错性和鲁棒性。②并行协同处理信息。神经网络中的每个神经元都可根据接收到的信息进行独立的运算和处理,并输出结果,同一层中的各个神经元的输出结果可被同时计算出来,然后传输给下一层做进一步处理,这体现了神经网络并行运算的特点,这一特点使网络具有非常强的实时性。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为是极其丰富多彩的。③信息处理与储存合二为一。神经网络的每个神经元都兼有信息处理和储存功能,神经元之间连接强度的变化,既反应了对信息的记忆,同时又与神经元对激励的响应以其反映了对信息的处理。④对信息的处理具有自组织、自学习的特点,便于联想、综合和推广。神经网络的神经元之间的连接强度用权值大小来表示,这些神经元之间的连接强度会不断增加,从而提高神经元对这些样本特征的反应灵敏度。

第四部分 BP神经网络算法的改进及其仿真研究

随着控制领域中不断出现新的控制思路和手段,人工神经网络作为一种新型的信息获取、描述和处理方式,正在引起过程控制届的注意。神经网络具有能够逼近任意非线性函数关系的能力和比较方便的学习手段,因此,它可以用来作为一种复杂工业过程建模的新型方法[7]。本文针对常用BP算法收敛速度慢,易陷入局部极小等缺点,对以往BP算法的各种改进进行了深入的分析和探讨。同时,借鉴Fletcher-Reeves线性搜索方法[8],探讨了基于Fletcher-Reeves方法的改进共轭梯度法。并对各种算法进行仿真和比较,实验结果表明,本文提出的改进共轭梯度方法可以有效提高网络的收敛速度,同时避免网络陷入局部极小点,达到全局最优。

4.1 BP算法的数学描述

1986年Rumelhart,Hinton和Williams完整而简明地提出一种ANN的误差反向传播训练算法(简称BP算法),系统地解决了多层网络中隐含单元连接权的学习问题,由此算法构成的网络我们称为BP网络。BP网络是前向反馈网络的一种,也是当前应用最为广泛的一种网络。误差反传算法的主要思想是把学习过程分为两个阶段:第一阶段(正向传播过程),给出输入信息通过输入层经隐含层处理并计算每个单元的实际输出值;第二阶段(反向过程),若在输出层未能得到期望的输出值,则逐层递归地计算实际输出与期望输出之差值(即误差),以便根据此差值调节权值,具体来说,就是可对每一权重计算出接收单元的误差值与发送单元的激活值的积。基于BP算法的多层前馈型网络的结构如图4所示。

这种网络不仅有输入层节点,输出层节点,而且有一层或多层隐含节点。对于输入信息,首先向前传播到隐含层的节点上,经过各单元的激活函数(又称作用函数、转换函数)运算后,把隐含节点的输出信息传播到输出节点,最后给出输出结果。网络的学习过程由正向和反向传播两部分组成。在正向传播过程中,每一层的神经元的状态只影响下一层神经元网络。如果输出层不能得到期望输出,就是实际输出值与期望输出值之间有误差,那么转向反向传播过程,将误差信号沿原来的连接通路返回,通过修改各层神经元的权值,逐次地向输入层传播去进行计算,再经过正向传播过程,这两个过程的反复运用,使得误差信号最小。实际上,误差达到人们所希望的要求时,

图4 基于BP算法的多层前馈型网络的结构

BP算法是在导师指导下,适合于多层神经元网络的一种学习,它是建立在梯度下降法的基础上的。理论证明,含有一个隐含层的BP网络可以实现以任意精度近似任何连续非线性函数。设含有共L层和n个节点的一个任意网络,每层单元只接受前一层的输出信息并输出给下一层各单元,各节点(有时称为单元)的特性为Sigmoid型(它是连续可微的,不同于感知器中的线性阈值函数,因为它是不连续的)。为简单起见,认为网络只有一个输出y。设给定N个样本(xk,yk)(k=1,2,...,N),任一节点i的输出为i,对某一个输入为xk,网络的输出为yk,节点i的输出为ik,现在研究第l层的第j个单元,当输入第k 个样本时,节点j的输入为

lll1wijjk netij

j

l

jkf(netl

jk)

1其中l

jk表示l-1层,输入第k个样本时,第j个单元节点的输出。

采用的误差函数为

Ek

1 2

(y)lklk

2l

其中lk为单元j的实际输出。总误差为

1

E

2N

E

k1

N

k

l

定义 jk

Ek

netljk

l

EkEknetjkEkl1ll1

于是 ljkjkjk lll

wijnetjkwijnetjk

下面分两种情况来讨论:

(1)若节点j为输出单元,则ljkjk

ljk

EkEkjk

(ykk)f(netljk) ll

netjkjknetjk

(2)若节点j不是输出单元,则

l

EkEkjkEkl

 f(netjk) lll

netjkjknetjkjk

ljk

式中ljk是送到下一层(l+1)层的输入,计算

在(l+1)层第m个单元时

Ek

要从(l+1)层算回来。 ljk

l1

EkEknetmkEkl1l1l1

mkwmj ll1ll1mj

jknetnetmmmmkjkmk

将式代入得

1l1

wmjf(netljk) ljklmk

m

总结上述结果,有

l1l1

ljkmkwmjf(netljk)mEk

ll1

ljkjk

 wij

因此,反向传播算法的步骤可概括如下:

(1)选定权系数初值;

(2)重复下述过程,直到误差指标满足精度要求,即:

1

E

2N

E

k1

N

k

,:精度

对k=1到N

1

正向过程计算:计算每层单元的ljk,netljk和k,k=2,...,N。

反向过程:对各层(l=L-1到2),对每层各单元,计算ljk。 修正权值

wijwij

(3)结束。

这里,训练样本的呈现顺序从一个回合到另一个回合必须是随机的。动量和学习率参数随着训练迭代次数的增加而调整(通常是减少的)。 4.2 BP网络学习算法

标准的BP算法是基于梯度下降法,通过计算目标函数对网络权值和阈值进行修正的。改进算法大多是在标准梯度下降法的基础上发展起来的,它们只用到目标函数对权值和阈值的一阶导数(梯度)信息。 4.2.1标准BP算法

在标准BP算法中,设k为迭代次数,则每一层权值和阈值的修正按下式进

x(k1)x(k)g(k)

E

0 wij

式中:x(k)为第k次迭代各层次之间的连接权向量或阈值向量。

g(k)

E(k)

为第k 次迭代的神经网络输出误差对各权值或阈值的梯度向量。x(k)

负号表示梯度的反方向,即梯度的速度下降方向。

为学习速率,在训练时是一个常数。在MATLAB神经网络工具箱中,其默认值是0.01,可以通过改变训练参数进行设置。

Ek为第k次迭代的网络输出的总误差性能函数,在MATLAB神经网络工具箱中,BP网络误差性能函数的默认值为均方误差MSE(mean square error),以二层BP网络为例,只有一个输入样本时,有

1s22

E(k)E[e(k)]2[tiai2(k)]2

si1

2

s2

a2i(k)f2{[i2,j(k)ai1(k)bi2(k)]}

j1

f2{[i2,j(k)f1((ii1(k)piibi1(k)))bi2(k)]}

j1

j1

s2s1

下面我们用一个具体实例来说明

例4·1已知某系统输出y与输入x的部分对应关系如表2所示。设计一BP神经网络,完成y=f(x)的曲线拟合。

表2 函数y=f(x)的部分对应关系

以隐层节点数为15的单输入和单输出两层BP网络来实现其曲线拟和,其仿真图如下

10

1

Performance is 0.00099991, Goal is 0.001

10

Training-Blue Goal-Black

10

-1

10

-2

10

-3

10

-4

0200400600

[1**********]

1878 Epochs

[1**********]0

图5 标准BP算法的误差性能曲线仿真结果

从仿真结果可以看出,权值和阈值的修正是在所有样本输入后,计算总的误差后

进行的,这样标准BP算法的收敛速度比较慢。 4.2.2动量BP算法

它的实质就是改变学习率η来提高网络性能,其网络连接权的迭代关系式由 传统BP算法

w(t1)

变为

w(t1)

E

w(t) w

E w

其中,动量项w(t)([w(t)w(t1)])。为动量因子,01。动量项的作用在于记忆上一时刻的连接权的变化方向(即变化量的值),这样就可以用较大的学习速率系数η以提高学习速度。附加动量项利用其“惯性效应”来抑制网络训练中可能出现的振荡,起到了缓冲平滑的作用。

此外,附加动量项还有利于脱离平坦区。如果网络的训练已进入了误差曲面 的平坦区域,那么误差将变化很小,于是w(t1)近似于w(t),而平均的w(t)将变



w(E/w)

1

为了便于比较我们就以例4·1为例,用动量BP算法进行仿真,其结果如图6所示:

由仿真结果可知,与传统BP算法的连接权修正量关系式比较,可见添加附加动量项后,式中的系数增大为/(1),从而有利于加快脱离饱和区。

10

Performance is 0.000998261, Goal is 0.001

10

Training-Blue Goal-Black

10

10

10

10

10

0200400600

[1**********] Epochs

[1**********]0

图6 动量BP算法的误差性能曲线仿真结果

4.2.3学习率可变的BP算法

该方法被认为是一种最简单最有效的方法。在BP算法中,连接权的调整决定于学习速率和梯度,但是,在基本BP算法中,学习速率是不变的。实际上学习速率对收敛速度的影响也很大,通过对它的在线调整,可以大大提高收敛速度。

学习速率的调整原则上是使它在每一步保持尽可能大的值,而又不致使学习过程失去稳定性。学习速率可以根据误差变化的信息和误差函数对连接权梯度变化的信息进行启发式调整,也可以根据误差函数对学习速率的梯度直接进行调整。

对于批处理可以根据总误差变化的信息进行启发式调整,其规则是: (1)若总误差E减小,则学习率增加。

(2)若总误差E增加,则学习率减小。当新误差与老误差之比超过一定值(例如1.04),则学习率快速下降(例如将实际值乘以因子b=0.7). 上述规则可用如下迭代方程来描述:

a(n1),ifE[W(n)]W[W(n1)]

b(n1),ifE[W(n)]kE[W(n)]

(n1),else

其中参数的典型值为:a=1.05,b=0.7,k=1.04。上述方法可以在学习过程的每一步进行学习率的调整。

我们仍以例4·1为例,用学习率可变BP算法进行仿真,其结果如下

10

Performance is 0.000929811, Goal is 0.001

10

Training-Blue Goal-Black

10

10

10

10

050100

150291 Epochs

200250

图7 学习率可变BP算法的误差性能曲线仿真结果

4.3 BP算法的缺陷

基于BP算法的神经网络从运行过程中的信息流向来看,它是前馈型网络。这种网络仅提供许多具有简单处理能力的神经元的复合作用使网络具有复杂的非线性映射能力而没有反馈,因此它不属于一个非线性动力学系统,而只是一个非线性映射。尽管如此,由于它理论上的完整性和应用的广泛性,所以它仍然有重要的意义,但它也存在着不少问题。①BP算法按照均方误差的梯度下降方向收敛,但均方误差的梯度曲线存在不少局部和全局最小点,这就使得神经网络易陷入局部极小(local

minima);②BP学习算法的收敛速度很慢,可能会浪费大量时间;③网络的隐含节

点数的选取尚缺少统一而完整的理论指导(即没有很好的解析式来表示);④已学习好的网络的泛化能力较差。

针对这些问题,需对基本BP算法做必要的改进,以加快收敛速度,达到最优化。

4.4 BP算法的一种改进——变梯度BP算法

BP网络采用的是基本BP算法,即负梯度算法,这种算法沿网络性能函数的负

梯度方向调整权值和阈值。但是算法中相邻迭代的搜索方向正交,当接近极值时会发生“锯齿”形的振荡。虽然这是减低网络性能函数值的最快方法,但它存在收敛速度

慢和易陷入局部极小的缺点。本文在此探讨通过变换梯度来加快网络训练的收敛速度的共轭梯度算法,利用这种算法改善收敛速度与收敛性能。 4.4.1共轭梯度法

与梯度下降法不同,基于数值优化的算法不仅利用了目标函数的一阶导数信息,而且往往利用了目标函数的二阶导数信息。它可以统一描述为

(k1)

)minf(Xk(k)s(X(k)))f(X

(k1)(k)(k)(k)

Xs(X)X

其中,X为网络的所有权值和阈值组成的向量,S(X)为由X各分量组成的向量空间的搜索方向,a为在S(X)方向上使达到极小的步长。这样,网络权值的寻优便可分为以下两步:①首先确定当前迭代的最佳搜索方向;②在此方向上寻求最优迭代步长。

共轭梯度法力图避免梯度下降法收敛速度较慢和计算复杂的缺点,第一步沿负梯度方向进行搜索,然后再沿当前搜索的共轭方向进行搜索,从而可以迅速达到最优值。

共轭梯度法比大多数常规的梯度法收敛快,并且只需增加很少的存储量和计算量。对于权值很多的网络,采用共轭梯度法不失为一种较好的选择。

共轭梯度法是重要的无约束最优化方法。其基本思想就是使得最速下降方向具有共轭性,并据此搜索目标函数极值,从而提高算法的有效性和可靠性。图3·4·1中g(k)即为共轭梯度矢量。它的方向矢量不是预先给定的,而是在现行的负梯度与前一个方向矢量的线性组合的方向上进行的。梯度g(k)被定义为f(x)对x的微分,即

(k)

(k)

(k)(k)

f(x)。但是该方法中的方向矢量的共轭性仅依赖于负梯度的初始方向,所以

x

在解点附近很可能失去共轭方向的优点,因此这种算法的缺点在于算法不是全局最优的。

g(x)

根据Fletcher-Reeves处理非二次问题的思想——在算法实施过程中,每n步

做一次纯最速下降步骤,并以此作为一个间插步骤,因为其它步骤不使目标函数增加,因此能保证算法的全局收敛性。所谓间插步骤就是在某种算法进行过程中插入一步其它算法,大多是不规则的但又是频繁的(如最速下降法),以保证整个复合过程的收敛性。间插步骤的唯一要求是使它们不增加下降函数的值。基于以上思想,提出共轭梯度的改进算法。 4.4.2改进共轭梯度法

改进共轭梯度算法在不增加算法复杂性的前提下可以提高收敛速度,并且可以沿共轭方向达到全局最优即全局极值点。它要求在算法进行过程中使用线性搜索,本文采用Fletcher-Reeves线性搜索方法,以保证算法的收敛速度。

梯度矢量g(x)与方向矢量d(0),d(1),...,d(k-1)构成的子空间正交,每迭代一次,子空间的维数加1,学习速率(k)每次迭代时沿搜索方向d(k)发生变化,其大小取决于Fletcher-Reeves线性搜索的结果。

如果共轭梯度法在第k+1次的学习速率(k)使得目标函数值增加,即当由于误差积累使某步的搜索方向变为非下降方向时,根据全局收敛定理,目标函数在整个迭代过程中必须连续递减,因此,将k+1次学习速率(k)置0,这时实施一步间插步骤,即令梯度g(k-1)=g(k),方向矢量d(k-1)=d(k),共轭梯度法重新开始。此时,相当于对共轭梯度法实施一次速下降步骤,迭代完毕,所得结果收敛于全局极小点。

将改进共轭梯度法应用于BP网络的算法如下: ①选取初始点w(0)和初始搜索方向d(0)=-g(0);

②对k=0,1,2,...,n-1,BP网络的权值修正公式为w(k1)w(k)(k)d(k) 式中(k)为学习速率,使上式取得极小;d(k)为第k次迭代的共轭方向。 ③计算新的梯度矢量g(k+1);

④若k=n-1,则用w(n)代替w(0),并返回步骤①;否则转步骤⑤; ⑤计算第k+1次迭代的共轭方向d(k+1),

d(k1)g(k1)(k)d(k)

其中

gT(k)g(k)

-Fletcher-Reeves公式 (k)T

g(k1)g(k1)

⑥如果dT(k1)g(k1)0,则用w(n)代替w(0),并返回步骤①;否则转步骤②。 我们还是以例4·1为例,用改进共轭梯度BP算法进行仿真,其结果如下

10

Performance is 0.000944982, Goal is 0.001

10

Training-Blue Goal-Black

10

10

10

10

10

01020

30

56 Epochs

4050

图8 改进共轭梯度BP算法的误差性能曲线仿真结果

由此可见,改进共轭梯度算法在保证全局收敛的同时,也兼顾到算法的收敛速度。为了确保搜索方向的共轭性,初始搜索方向取负梯度方向;且当误差积累是某步的搜索方向变为非下降方向时,也以负梯度方向重新开始后续搜索。

第五部分BP网络应用实例

在本节的仿真研究中,我们借助MATLAB中的Simulink工具并辅助神经网络的编程形式对改进的BP算法进行测试,并对前面介绍的各种算法构成的BP神经网络进行仿真比较。

5.5.1一般BP算法及其改进算法训练过程的不同

我们就以例4·1为例用改进的BP算法完成y=f(x)的曲线拟合。采用基本BP算法来对其进行仿真逼近,其训练结果与误差如图9和图10所示。

10

1

Performance is 0.000801035, Goal is 0.001

10

Training-Blue Goal-Black

10

-1

10

-2

10

-3

10

-4

020406080

100120203 Epochs

[1**********]0

图9 例4·1训练的误差性能曲线

-1

-0.8-0.6-0.4-0.200.20.40.60.81

图10 例4·1曲线拟和的仿真结果

通过比较我们可以发现,采用附加动量之后,其所加入的动量项实际上相当于阻尼项,它减小了学习过程的震荡趋势,从而改变了收敛性。因此比较图像,我们可以知道,网络的训练速度加快,误差的收敛速度也加快。

通过仿真研究,我们发现,一般梯度法都被用来同时训练神经网络的所有权值,

一旦到达一个局部极小点后,网络的训练过程就停止了,网络的性能就由这个局部极小点决定,从而无法达到最好的优化效果。在本例的训练过程中,改进共轭梯度BP算法的训练速度明显加快,收敛性能得到改善,在训练过程中寻求全局最优,从而得到令人满意的收敛效果。

5.5.2 BP神经网络的函数逼近

需要指出的是,迄今为止,关于BP神经网络隐层神经元数目的选取还没有完整的理论依据,因此,在实际仿真过程中,隐层神经元的数目的选取一般凭经验或试凑得到。只要网络能够满足给定的性能指标,那么就选取能够满足要求的隐层神经元个数即可。隐层神经元数目选取过多,会增加网络训练的时间和复杂度。

总结:

人工神经网络,是由大量处理单元(神经元)组成的非线性大规模自适应动力系

统。它具有自组织,自适应和自学习能力,以及具有非线性、非局域性,非定常性和非凸性等特点。它是在现代神经科学研究成果的基础上提出的,试图通过模拟大脑神经网络处理,记忆信息的方式设计一种新的机器使之具有人脑那样的信息处理能力。

本文描述了BP神经网络的基本原理和基本算法,针对BP神经网络的基本BP

训练算法收敛速度慢和易陷入局部极小值的缺陷,在分析了前人研究成果的基础上,提出了改进共轭梯度算法,有效地改善了网络的收敛性能和训练速度。

在理论方面,详细分析了算法提出的理论依据与总体思路、给出了算法中用到的

改进共轭梯度法。

在仿真方面,本文将改进共轭梯度学习算法和一般的学习算法进行了比较,从多

方面分析了算法的性能,指出了算法的优缺点。仿真结果表明,由于本算法能够通过变换梯度来加快网络训练的收敛速度,减小训练误差,因此,训练后的误差反传神经网络的性能也得到了进一步改善,能够达到令人满意的函数逼近效果。

从以上研究结果可以看出,BP神经网络是一种性能优良,具有巨大应用潜力的

神经网络。由于本人能力有限,因此本课题在以后的研究中还需要进一步完善。

参考文献

[1]海金(HayKin,S.),叶世伟.神经网络原理(原书第2版)[M].北京:机械工业社,2004.

[2]高隽.人工神经网络原理及仿真实例[M].北京:机械工业出版社,2003.

[3]周开利,康耀红.神经网络模型及其MATLAB仿真程序设计[M]. 北京:清华大学 出版社,2004.

[4]袁曾任.人工神经元网络及其应用[M].北京:清华大学出版社,1999.

[5]吴涛,许晓鸣,戚晓薇,张浙.基于改进BP算法的人工神经网络建模及其在干燥过程中的应用[J].中国控制会议路论文集,1998(9):677-681.

[6]陈桦,程云艳.BP神经网络算法的改进及在MATLAB中的实现.陕西科技大学学报,2004,22(2):45-47.

[7]周建华.共轭梯度法在BP网络中的应用[J].计算机工程与应用,1999:17-19.

附 录

标准BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traingd','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.goal = 0.001;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

动量BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traingdm','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.goal = 0.001;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

学习率可变BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traingdx','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

改进共轭梯度BP算法的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traincgf','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.goal = 0.001;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

例4·1训练的误差性能曲线仿真程序:

%Example53STr

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

net=newff([-1 1],[15 1],{'tansig' 'purelin'},'traincgb','learngdm');

net.trainParam.epochs = 2500;

net.trainParam.show = 10;

net.trainParam.lr=0.05;

net = train(net,p,t);

save E53net net;

例4·1曲线拟和的仿真程序:

clear all;

p=-1:0.1:0.9;

t=[-0.832 -0.423 -0.024 0.344 1.282 3.456 4.02 3.232 2.102 1.504 0.248

1.242 2.344 3.262 2.052 1.684 1.022 2.224 3.022 1.984];

hold on

plot(p,t,'*');

load E53net net;

p=-1:0.01:0.9;

r=sim(net,p);

plot(p,r);

hold off


相关文章

  • 遗传算法与神经网络
  • 遗 传 算 法 与 神 经 网 络 1 遗传算法 ............................................................................................... ...查看


  • 无人机航迹规划常用算法
  • V01.37,No.8Aug.2012 Fire 火力与指挥控制 Control&CommandControl 第37卷第8期 2012年8月 文章编号:1002-0640(2012)08-0005-04 无人机航迹规划常用算法 王 ...查看


  • 智能优化算法概述
  • 本栏目责任编辑:李桂瑾人工智能及识别技术 智能优化算法概述 蒋腾旭 (九江职业大学计算机系,江西九江332000) 摘要:本文简要介绍了几种常见的智能优化算法,并给出了不同智能优化算法的优缺点及在优化应用领域的使用情况,指出了不同智能优化算 ...查看


  • 2015考研英语单词汇总
  • 第33卷第6期2013年12月南京邮电大学学报(自然科学版) Journal of Nanjing University of Posts and Telecommunications (Natural Science )Vol.33No. ...查看


  • 人工智能学年论文--对人工神经网络学习的探讨
  • 人工智能课程论文 学 院 计算机与信息技术 专 业 计算机科学与技术 年 级 2010级计科一班 姓 名 课 题 对人工神经网络学习的探讨 对人工神经网络学习的探讨 摘要: 随着智能技术研究和应用的不断深入,人工智能越来越受到社会的关注.在 ...查看


  • 最优问题的论文
  • 交通建模中的最短路径算法分析与测试 任 刚,张 永,周竹萍 (东南大学江苏省交通规划与管理重点实验室,南京 210096) 摘 要:交通建模一直以来就是最短路径算法极为重要的应用领域.介绍主流的最短路径算法--标号算法, 通过交通网络特征分 ...查看


  • 智能优化算法综述
  • Nanjing University of Science and Technology 智能优化算法的统一框架 110040692 5班 2011年6月20日 目录 1 概述................................ ...查看


  • 一种新的无线传感器网络拓扑发现算法
  • 第26卷第5期2009年5月 计算机应用研究 App"cationResearchofComputer8 V01.26No.5 Mav2009 一种新的无线传感器网络拓扑发现算法 申军,齐望东 (解放军理工大学指挥自动化学院计算机 ...查看


  • 毕业论文初稿1
  • 华中农业大学楚天学院本科毕业论文(设计) 目 录 摘 要 ·························· 错误!未定义书签. 关键词 ·························· 错误!未定义书签. Abstract ···· ...查看


热门内容