1、1实验一 感知器的 MATLAB 仿真感知器(Pereceptron) 是一种特殊的神经网络模型,是由美国心理学家F.Rosenblatt 于 1958 年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题,也可用于基于模式分类的学习控制和多模态控制中。一、感知器神经元模型感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图 1.1 为感知器神经元模型。图 1.1 感知器神经元模型感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。由于阀值函数的引入,从而使得感知器可以将输入向量分为两个区域
2、,通常阀函数采用双极阶跃函数,如:(1.1)0,1)(xf而感知器神经元模型的实际输出为(1.2)Riibwfo1其中 b 为阀值二、感知器的网络结构图 1.2 所描述的是一个简单的感知器网络结构,输入层有 R 个输入,x1x2xRoooiwi1wi2wiR1o2Q 个输出,通过权值 wij 与 s 个感知器神经元连接组成的感知器神经网络。3根据网络结构,可以写出感知器处理单元对其输入的加权和操作,即:(1.3)Rjjiipwn1而其输出 ai 为ai=f (ni+bi) (1.4)由式 2.1 易知(1.5)01ii则当输入 ni+bi 大于等于 0,即有 nib i 时,感知器的输出为 1
3、;否则输出为 0。上面所述的单层感知器神经网络是不可能解决线性不可分的输入向量分类问题,也不能推广到一般的前向网络中去。为解决这一问题,我们可以设计多层感知器神经网络以实现任意形状的划分。图 1.3 描述了一个双层感知器神经网络。其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。三、感知器神经网络的学习规则感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网P o N1 o bRQ SRS1SQnSQa图 1.2 感知器神经网络结构P o w11 o bRQ SRS1a1 W2 a2图 1.3 感知器神经网络结构o b4络的输入向量进行正确的分类。如图 1
4、.2 所示的输入向量 P、输出和量 a 和目标向量为 t 的感知器神经网络,感知器的学习规则是根据以下输出矢量 a 可能出现的几种情况未进行参与调整的:1)如果第 i 个神经元的输出是正确的,即有 ait 1,则与第 i 个神经元联接的权值和阀值保持不变。2)如果第 i 个神经元的输出是不正确,应该有两种情况。i)实际输出为 0,而理想输出为 1,即有 ai=0,而 ti1,则所有的输入j 对权值和阀值进行调整,修正值 w 1j=pj,b j=1。ii)实际输出为 1,而期望输出为 0,即有 ai=1,而 ti=0,则对所有的输入 j 进行权值和阀值调整, w1j=p j,b i=1。基于感知
5、器误差 e=ta,感知器学习规则可望写为:w 1j=eipj可以证明当前输入样本来自线性可分的模式时,上述学习算法在有限步同收敛,这时所得的权值能对所有样本正确分类,这一结论被称为感知器收敛定理。四、感知器神经网络的训练要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情,并把所学到的知识记忆在网络的权值中。感知器神经网络的训练是采用由一组样本组成的集合来进行。在训练期间,将这些样本重复输入,通过调整权值使感知器的输出达到所要求的理想输出。感知器的训练主要是反复对感知器神经网络进行仿真和学习,最终得到最优的网络阀值和权值。我们可以用以下方法训练网络:1) 确定我们所解决的
6、问题的输入向量 P、目标向量 t,并确定各向量的维数,以及网络结构大小、神经元数目。假定我们采用图 2.2 的网络结构。2)初始化:权值向量 w 和阀值向量 b 分别赋予 1,+1之间的随机值,并且给出训练的最大次数。53)根据输入向量 P、最新权值向量 w 和阀值向量 b,计算网络输出向量 a。4)检查感知器输出向量与目标向量是否一致,或者是否达到了最大的训练次数,如果是则结束训练,否则转入(5) 。5)根据感知器学习规则调查权向量,并返回 3) 。五、重要的感知器神经网络函数的使用方法对于感知器的初始化、训练、仿真,在 MATLABP 神经网络工具箱中分别提供了 init( ), trai
7、np( )和 sim( )函数。1初始化函数 init( )感知器初始化函数 init( )可得到 R 个输入,S 个神经元数的感知器层的权值和阀值,其调用格式为:w,b=init(R,S)另外,也可以利用输入向量 P 和目标向量 t 来初始化。w,b=init(p ,t)在介绍 trainp( )函数前,让我们先介绍一下训练的控制参数 tp。tp=disp_freq max_epoch其中 disp_freq 指定两次显示间训练次数,缺省值为 1;map_epoch 指定训练的最大次数,缺省值为 100。2. 训练函数 trainp( )调用训练函数 trainp( )函数后又得到新的权值矩
8、阵,阀值向量以及误差te。 trainp( )函数所需要的输入变量为:输入向量 P、目标向量 t 以及网络的初始权值和阀值,训练的控制参数 tp。调用格式为:w,b,te=trainp(w,b,p,t,tp)由于函数 trainp( )并不能保证感知器网络所得到的网络权值和阀值达到要求。因此,在训练完后,要用下列验证语句验证一下。a=sim(p, w, b);if all(a= =t),disp( It works! ),end假如网络不能成功运行,就可以继续运用 trainp( )函数对网络进行训练。经足够的训练后,网络仍达不到要求,那么就应当认真分析一下,感知器6网络是否适合于这个问题。3
9、仿真函数 sim( )sim( )函数主要用于计算网络输出。它的调用比较简单。a=sim(p,w,b)六、感知器神经网络应用举例为了便于消化与理解感知器神经网络的四个问题,下面将给出一个具体的问题进行分析,问题的描述如下:两种蠓虫 Af 和 Apf 已由生物学家 W.L.Grogan 与 w. w. Wirth(1981)根据它们触角长度和翼长中以区分。见表 1.1 中 9Af 蠓和 6 只 Apf 蠓的数据。根据给出的触角长度和翼长可识别出一只标本是 Af 还是 Apf。1给定一只 Af 或者 Apf 族的蒙,你如何正确地区分它属于哪一族?2将你的方法用于触角长和翼中分别为(1.24,1.8
10、0) 、 (1.28,1.84) 、(1.40,2.04)的三个标本表 1.1触重长 1.24 1.36 1.38 1.378 1.38 1.40 1.48 1.54 1.56Af翼 长 1.72 1.74 1.64 1.82 1.90 1.70 1.70 1.82 2.08触角长 1.14 1.18 1.20 1.26 1.28 1.30Apf 翼 长 1.78 1.96 1.86 2.00 2.00 1.96输入向量为:p=1.24 1.36 1.38 1.378 1.38 1.40 1.48 1.54 1.56 1.14 1.18 1.20 1.26 1.28 1.30;1.72 1.7
11、4 1.64 1.82 1.90 1.70 1.70 1.82 2.08 1.78 1.96 1.86 2.00 2.00 1.96 目标向量为:t=1 1 1 1 1 1 1 1 1 0 0 0 0 0 0图形显示,目标值 1 对应的用“+ ”、目标值 0 对应的用“o”来表示:plotpv(p,t)为解决该问题,利用函数newp 构造输入量在0,2.5之间的感知器神经网络模型: 0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.81.41.51.61.71.81.922.12.22.3Vectors to be ClassifiedP(1)P(2)图 1.4 样本图形
12、显示7net=newp(0 2.5;0 2.5,1)初始化网络:net=init(net)利用函数 adapt 调整网络的权值和阀值,直到误差为 0 时训练结束:net, y, e=adapt(net, p, t)训练结束后可得如图 1.5 的分类方式,可见感知器网络将样本正确地分成两类:0.9 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.81.41.51.61.71.81.922.12.22.3Vectors to be ClassifiedP(1)P(2)图 1.5 网络训练结果感知器网络训练结束后,可以利用函数 sim 进行仿真,解决实际的分类问题:p1=1.24;1
13、.80a1=sim(net,p1)p2=1.28;1.84a2=sim(net,p2)p3=1.40;2.04a3=sim(net,p3)网络仿真结果为:a1=0 a2=0 a3=08实验二 线性神经网络的 MATLAB 实现线性神经网络是最简单的一种神经元网络,由一个或多个线性神经元构成。1959 年,美国工程师 B.widrow 和 M.Hoft 提出自适应线性元件(Adaptive linear element,简称 Adaline)是线性神经网络的最早典型代表。它是感知器的变化形式,尤其在修正权矢量的方法上进行了改进,不仅提高了训练收敛速度,而且提高了训练精度。线性神经网络与感知器神经
14、网络的主要不同之处在于其每个神经元的传递函数为线性函数,它允许输出任意值,而不是象感知器中只能输出 0 或 1。此外,线性神经网络一般采用 WidrowHoff(简称 W H)学习规则或者最小场方差( Least mean Square,简称 LMS)规则来调整网络的权值和阀值。线性神经网络的主要用途是线性逼近一个函数表达式,具有联想功能。另外,它还适用于信号处理滤波、预测、模式识别和控制等方面。一、线性神经元模型线性神经元可以训练学习一个与之对应的输入输出函数关系,或线性逼近任意一个非线性函数,但它不能产生任何非线性的计算特性。图 2.1 描述了一个具有 R 个输入的由纯线性函数组成的线性神
15、经元。图 2.1 线性神经元模型由于线性神经网络中神经元的传递函数为线性函数,其输入与输出之间是简单的比例关系:a=g(w*p,b)P1P2PRooow1w2wRb1a9其中函数 g(x)为线性函数。二、线性神经网络结构如图 2.2 描述了一个由 S 个神经元相并联形成一层网络,这种网络也称为 Madaline 网络。WH 学习规则只能训练单层的线性神经网络,但这并不是什么严重问题。因为对线性神经网络而言,完全可以设计出一个性能完全相当的单层线性神经网络。三、线性神经学习网络的学习规则前面我们提到过,线性神经网络采用 WH 学习规则。W H 学习规则是 Widrow 是 Hoft 提出的用来求
16、得权值和阀值的修正值的学习规则。首先要定义一个线性网络的输出误差函数:E(w,b)= (ta) 2= (tw*p) 2 2.11由式 2.1 可看出,线性网络具有抛物线型误差函数所形成的误差表面。所以只有一个误差最小值。通过 WH 学习规则来计算权值和偏差的变化,并使网络的误差平方和最小化,总能够训练一个网络的误差趋于最小值。这可通过沿着相对于误差平方和最速下降方向连续调整网络的权值和阀值来实现。根据梯度下降法,权矢量的修正值正比于当前位置上 E(w,b)的梯度,对于第 i 输出节点为:2.2jiiijij patwE)(或表示为:P o N1 o bR1 SRS1S1nS1a图 2.2 线性
17、神经元网络102.3jiijpw2.4b这里 i 定义为第 i 个输出节点的误差: i=tia i 2.5式 2.3 称为 WH 学习规则。WH 学习规则的权值变化量正比于网络的输出误差及网络的输入向量。它不需求导数,所以算法简单,又具有收敛速度快和精度高的优点。式 2.3 中的称为学习率,学习率的选取可以适当防止学习过程中产生振荡,提高收敛速度和精度。四、线性神经网络训练首先给线性神经网络提供输入向量 P,计算线性网络层的输出向量 a,并求得误差 e=ta ;然后比较输出的误差平方和是否小于期望的误差平方和,如果是,则停止训练;否则,采用 WH 规则调整权值和阀值,反复进行。如果经过训练网络
18、不能达到期望目标,可以继续对网络进行训练。经过足够的训练后,网络还是达不到要求。那么就仔细地分析一下, 所要解决的问题,是否适合于线性神经网络。五、重要线性神经网络函数的使用方法在 MATLAB 神经网络工具箱中提供了基于线性神经网络的初始化函数 initlin( )、设计函数 solvelin( )、仿真函数 simulin( )以及训练函数trainwh 和 adaptwh。下面我们将分别介绍多种函数的使用方法。1初始化函数 initlin( )函数 initlin( )对线性神经网络初始化时,将权值和阀值取为绝对值很小的数。其使用格式w,b=initlin(R,S)R 为输入数,S 为神
19、经元数。另外,R 和 S 也可用输入向量 P 和目标向量 t 来代替,即w,b=initlin(p,t)2设计函数 solvelin( )11与大多数其它神经网络不同,只要已知其输入向量 P 和目标向量 t,就可以直接设计出线性神经网络使得线性神经网络的权值矩阵误差最小。其调用命令如下:w,b=solve lin(p,t);3仿真函数 simulin( )函数 simulin( )可得到线性网络层的输出a=simulin(p,w,b)其中 a 为输出向量,b 为阀值向量4训练函数 trainwh 和 adaptwh( )线性神经网络的训练函数有两种:trainwh( )和 adaptwh( )
20、。其中函数trainwh 可以对线性神经网络进行离线训练;而函数 adaptwh( ) 可以对线性神经网络进行在线自适应训练。利用 trainwh( )函数可以得到网络的权矩阵 w,阀值向量 b,实际训练次数 te 以及训练过程中网络的误差平方和 lr。w,b,te,lr=trainwh(w,b,p,t,tp)输入变量中训练参数 tp 为:tp(1)指定两次更新显示间的训练次数,其缺省值为 25;tp(2)指定训练的最大次数,其缺省值为 100;tp(3)指定误差平方和指标,其缺省值为 0.02;tp(4)指定学习速率,其缺省值可由 maxlinlr( )函数(此函数主要用于计算采用 W H
21、规则训练线性网络的最大的稳定的分辨率)得到。而利用函数 adaptwh( )可以得到网络的输出 a、误差 e、权值矩阵 w 和阀值向量 b。a,e,w,b=adaptwh(w,b,p,t,lr)输入变量 lr 为学习速率,学习速率 lr 为可选参数,其缺省值为10。另外,函数 maxlinlr( )的调用格式为:lr=maxlinlr(p);六、线性神经网络的应用举例12为了理解线性神经网络的理论及其应用问题,下面给出一个实际问题进行分析,设计一个线性神经网络,用于信号仿真及信号预测。首先输入信号样本为:time=1:0.0025:5;p=sin(sin(time)*time*10);目标信号
22、为:t=p*2+2;图形显示样本信号的规律为:plot(time, p, time, t, -)title(Input and Target Signals)xlabel(Time)ylabel(Input_ Target_)1 1.5 2 2.5 3 3.5 4 4.5 5-1-0.500.511.522.533.54 Tnput and Target SignalsTimeInput_ Target_图 2.3 样本信号利用输入样本信号和理想输出进行线性神经网络初始化:w,b=initlin(p,t)然后利用函数 adaptwh 对构造的网络进行训练,lr=0.01; a, e, w, b
23、=adaptwh(w, b, p, t, lr)其中 lr 为学习率,a 为网络的输出,e 为误差。仿真结果与目标信号对比分析:plot(time, a, time, t, -)13title(Output and Target Signals)xlabel(Time); ylabel(Output_ Target_)1 1.5 2 2.5 3 3.5 4 4.5 500.511.522.533.54 Output and Target SignalsTimeOutput_ Target_图 2.4 仿真结果与目标信号对比分析误差分析:plot(time,e)hold on; plot(min
24、(time) max(time),0 0,:r)xlabel(Time); ylabel(Error)1 1.5 2 2.5 3 3.5 4 4.5 5-0.500.511.522.533.54TimeErrorError Signal图 2.5 误差分析14实验三 BP 神经网络的 MATLAB 实现感知器神经网络模型和线性神经网络模型虽然对人工神经网络的发展起了很大的作用,它们的出现也曾掀起了人们研究神经网络的热潮。但它们有许多不足之处。人们也曾因此失去了对神经网络研究的信心,但rumelhart、mcclellard 和他们的同事洞悉到网络信息处理的重要性,并致力于研究并行分布信息处理方
25、法,探索人类认知的微结构,于 1985 年发展了BP 网络的学习算法。从而给人工神经网络增添了活力,使其得以全面迅速地恢复发展起来。BP 网络是一种多层前馈神经网络,其神经元的激励函数为 S 型函数,因此输出量为 0 到 1 之间的连续量,它可以实现从输入到输出的任意的非线性映射。由于其权值的调整是利用实际输出与期望输出之差,对网络的各层连接权由后向前逐层进行校正的计算方法,故而称为反向传播(Back-Propogation)学习算法,简称为 BP 算法。BP 算法主要是利用输入、输出样本集进行相应训练,使网络达到给定的输入输出映射函数关系。算法常分为两个阶段:第一阶段(正向计算过程)由样本选
26、取信息从输入层经隐含层逐层计算各单元的输出值;第二阶段(误差反向传播过程)由输出层计算误差并逐层向前算出隐含层各单元的误差,并以此修正前一层权值。BP 网络主要用于函数逼近、模式识别、分类以及数据压缩等方面。一、BP 网络的网络结构BP 网络通常至少有一个隐含层,如图 3.1 所示的是一个具有 R 个输入和一个隐含层的神经网络模型。感知器与线性神经元的主要差别在于激励函数上:前者是二值型的,而后者是线性的。BP 网络除了在多层网络上与已介绍过的模型有不同外,图 3.1 具有一个隐含层的 BP 网络结构P o W11 o B1RQS1RS11a2a1f11 ow2S2S1b2S1q f2 S2q
27、隐含层 输出层15其主要差别也表现在激励函数上。图 3.2 所示的两种 S 型激励函数的图形,可以看到 f( )是连续可微的单调递增函数,这种激励函数的输出特性比较软,其输出状态的取值范围为0 ,1 或者 -1,+1,其硬度可以由参数 来调节。函数的输入输出关系表达式如下所示:双极型的 S 型激励函数: , f(net)(-)exp(12)(ntntf1,1)单极型的 S 型激励函数: , f(net)e()(ttf(0,1)图 3.2 sigmoid 型函数图形对于多层网络,这种激励函数所划分的区域不再是线性划分,而是由一个非线性的超平面组成的区域。因为 S 型函数具有非线性的大系数功能。它
28、可以把输入从负无穷到正无穷大的信号变换成1 到1 之间输出,所以采用 S 型函数可以实现从输入到输出的非线性映射。二、BP 网络学习规则BP 网络最为核心的部分便是网络的学习规则。用 BP 算法训练网络时有两种方式:一种是每输入一样本修改一次权值;另一种是批处理方式,16即使组成一个训练周期的全部样本都依次输入后计算总的平均误差。这里我们主要探讨的是后一种方式。下面我们给出两层网络结构示意简图 4.3,并以此探讨 BP 算法。BP 网络的学习过程主要由以下四部分组成:1)输入样本顺传播输入样本传播也就是样本由输入层经中间层向输出层传播计算。这一过程主要是输入样本求出它所对应的实际输出。 隐含层
29、中第 i 个神经元的输出为(3.1)1111 ,2sibpwfaRjijii 输出层中第 k 个神经元的输出为:(3.2)22122 ,siafkSiik 其中 f1(), f2 ()分别为隐含层的激励函数。2)输出误差逆传播在第一步的样本顺传播计算中我们得到了网络的实际输出值,当这些实际的输出值与期望输出值不一样时,或者说其误差大于所限定的数值时,就要对网络进行校正。首先,定义误差函数E(w,b)= (3.3)21)(2kskat其次,给出权值的变化 输出层的权值变化从第 i 个输入到第 k 个输出的权值为:(3.4)ikkii awE122其中: (3.5)2feki17(3.6)kkal
30、e2 隐含层的权值变化从第 j 个输入到第 i 个输出的权值为:( 为学习系数) 101 jiijij pwE(3.7)其中:(3.8)1feiij(3.9)kiiskiw212由此可以看出:调整是与误差成正比,即误差越大调整的幅度就越大。调整量与输入值大小成比例,在这次学习过程中就显得越活跃,所以与其相连的权值的调整幅度就应该越大,调整是与学习系数成正比。通常学习系数在 0.10.8 之间,为使整个学习过程加快,又不会引起振荡,可采用变学习率的方法,即在学习初期取较大的学习系数随着学习过程的进行逐渐减小其值。最后,将输出误差由输出层经中间层传向输入层,逐层进行校正。3)循环记忆训练为使网络的
31、输出误差尽可能的小,对于 BP 网络输入的每一组训练样本,一般要经过数百次甚至上万次的反复循环记忆训练,才能使网络记住这一样本模式。这种循环记忆训练实际上就是反复重复上面介绍的输入模式正向传播和输出误差逆传播过程。4)学习结束的检验当每次循环记忆结束后,都要进行学习是否结束的检验。检验的目的主要是检查输出误差是否已经符合要求。如果小到了允许的程度,就可以结束整个学习过程,否则还要进行循环训练。三、BP 网络的训练对 BP 网络进行训练时,首先要提供一组训练样本,其中每个样本由18输入样本和输出对组成。当网络的所有实际输出与其理想输出一致时,表明训练结束。否则,通过修正权值,使网络的实际输出与理
32、想输出一致。实际上针对不同具体情况,BP 网络的训练有相应的学习规则,即不同的最优化算法,沿减少理想输出与实际输出之间误差的原则,实现 BP 网络的函数逼近、向量分类和模式识别。以图 3.3 为例来说明 BP 网络训练的主要过程。图 3.3 含一个隐含层的 BP 网络结构首先:网络初始化,构造合理的网络结构(这里我们采用图 4.3 的网络结构) ,取可调参数(权和阀值)为-1,1 上服从均匀分布随机数,并取定期望误差、最大循环次数和修正权值的学习率的初始值。其次,利用相应的 BP 网络学习规则对网络进行训练,求得权值修正后的误差平方和。最后,检查网络误差平方和是否降低到期望误差之下,若是,训练
33、结束,否则继续。四、重要 BP 神经网络函数的使用方法函数 initff( )和 simuff 可以用来初始化和仿真不超过三层的前馈型网络。函数 trainbp( )、trainbpx( )、 trainlm( )可用来训练 BP 网络。其中 trainlm( )的训练速度最快,但它需要更大的存储空间,也就是说它是以空间换取了时间;trainbpx( )的训练速度次之;trainlm( )最慢。1初始化函数 initff( )函数 initff( )的主要功能就是对至多三层的 BP 网络初始化。其使用格式有多种,现列如下:w,b=initff(p, s, f)19w1, b1, w2, b2=
34、initff(p, s1, f1, s2, f2)w1, b1, w2, b2, w3, b3=initff(p, s1, f1, f2, s3, f3)w, b=initff(p, s, t)w1,b1,w2,b2=initff(p, s1, f1, s2, t)w1, b1, w2, b2, w3, b3=initff(p, s1, f1, s2, f2, s3, t)w, b=initff(p, s, f)可得到 s 个神经元的单层神经网络的权值和阀值,其中 p 为输入向量,f 为神经元的激励函数。BP 网络有一个特点很重要,即 p 中的每一行中必须包含网络期望输入的最大值和最小值,这样
35、才能合理地初始化权值和阀值。2仿真函数 simuff( )BP 网络是由一系列网络层组成,每一层都从前一层得到输入数据,函数 simuff( )可仿真至多三层前馈型网络。对于不同的网络层数,其使用格式为:a=simuff(p, w1, b1, f1)a=simuff(p, w1, b1, f1, w2, b2, f2)a=simuff(p, w1, b1, f1, w2, b2, f2, w3, b3, f3)以上三式分别为单层、双层和三层网络结构的仿真输出。3训练函数关于前面所提到的几种 BP 网络训练函数,在这里只介绍其中之一:trainbp( )。函数 trainbp( )利用 BP 算
36、法训练前馈型网络。trainbp( )函数可以训练单层、双层和三层的前馈型网络,其调用格式分别为:w, b, te, tr=trainbp(w, b, f,p, t, tp)w1, b1, w2, b2, te, tr=trainbp(w1,b1, f1,w2, b2, f2,p, t, tp)w1,b1,w2,b2,w3,b3,te,tr=trainbp(w1, b1, f1,w2, b2, f2 ,w3, b3, f3 ,p, t, tp)可选训练参数 tp 内的四个参数依次为:tp(1)指定两次显示间的训练次数,其缺省值 25;tp(2)指定训练的最大次数,其缺省值 100;20tp(3
37、)指定误差平方和指标,其缺省值 0.02;tp(4)指定学习速率,其缺省值 0.01;只有网络误差平方和降低到期望误差之下,或者达到了最大训练次数,网络才停止学习。学习速率指定了权值与阀值的更新比例,较小学习速率会导致学习时间较长,但可提高网络权值收敛效果。五、BP 网络的应用举例BP 网络的函数逼近举例:设计一个 BP 网络,其隐含层神经元的激励函数为双曲正切函数,输出层神经元的激励函数为线性函数,学习样本为21 组单输入矢量,理想输出为相应的单输出矢量。输入矢量为:p=-1:0.1:1;理想输出矢量为:t=-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.46
38、1 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201;输入输出的函数关系曲线:plot(p,t)xlabel(Input)ylabel(Output)-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1-0.8-0.6-0.4-0.200.20.40.60.8InputOutput图 3.4 输入输出关系21利用输入和理想输出进行 BP 神经网络初始化:w1,b1,w2,b2=initff(p,5,tansig,
39、t,purelin)利用函数 trainbp 对构造的 BP 网络进行训练:df=10me=8000eg=0.02lr=0.01tp=df me eg lrw1,b1,w2,b2,ep,tr=trainbp(w1,b1,tansig,w2,b2,purelin,p,t,tp)其中 df 指定两次显示间的训练次数,其缺省值 25;me 指定训练的最大次数,其缺省值 100;eg 指定误差平方和指标,其缺省值 0.02;lr 指定学习速率,其缺省值 0.01;训练结果与理想输出对比分析:-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-1-0.8-0.6-0.4
40、-0.200.20.40.60.8 Function ApproximationInputOutput: -,Target: +图 3.5 训练结果与理想输出对比分析网络的训练过程中,网络收敛效果一定程度上要受网络初始化的初始值的影响,实际输出和理想输出的误差的变化情况可以反映网络学习的效果,这一点可以通过如图 3.6 反映:ploterr(tr, eg)22其中 tr 为网络学习的循环次数。0 50 100 150 200 250 300 350 400 450 50010-210-1100101102 Sum-Squared Network Error for 535 EpochsEpochSum-SquaredError图 3.6 误差曲线