实验六MATLAB神经网络工具箱DOC

实验七MATLAB神经网络工具箱一、实验目的1、掌握 Matlab 对感知器网络的构建与训练方法。2、掌握 Matlab 对线性神经网络的构建与训练方法。3、掌握 Matlab 对 BP 神经网络的构建与训练方法。二、实验原理1、感知器的 MATLAB 仿真感知器 (Pereceptron)是一种特殊的神经网络模型,是由美国心理学家 F.Rosenblatt 于 1958 年提出的,一层为输入层,另一层具有计算单元,感知器特别适合于简单的模式分类问题, 也可用于基于模式分类的学习控制和多模态控制中。(一)感知器神经元模型感知器神经元通过对权值的训练,可以使感知器神经元的输出能代表对输入模式进行的分类,图1.1 为感知器神经元模型。x1o1wi1x2ow i2iow iRxRo图 1.1感知器神经元模型感知器神经元的每一个输入都对应于一个合适的权值,所有的输入与其对应权值的加权和作为阀值函数的输入。 由于阀值函数的引入, 从而使得感知器可以将输入向量分为两个区域,通常阀函数采用双极阶跃函数,如:1, x0f (x)( 1.1)0, x0而感知器神经元模型的实际输出为1Ro fwi xi b( 1.2)i1其中 b 为阀值(二)感知器的网络结构图 1.2所描述的是一个简单的感知器网络结构,输入层有R 个输入, Q个输出,通过权值 wij与 s 个感知器神经元连接组成的感知器神经网络。PoNnaR QS RS QS Q1obS 1图 1.2感知器神经网络结构根据网络结构,可以写出感知器处理单元对其输入的加权和操作,即:Rniwijp j( 1.3)j 1而其输出 ai 为ai=f (ni +bi)( 1.4)由式 2.1 易知ai1nibi0(1.5)0nibi0则当输入 ni+bi 大于等于0,即有 ni bi 时,感知器的输出为1;否则输出为 0。上面所述的单层感知器神经网络是不可能解决线性不可分的输入向量分类问题, 也不能推广到一般的前向网络中去。 为解决这一问题, 我们可以设计多层感知器神经网络以实现任意形状的划分。图 1.3 描述了一个双层感知器神经网络。 其工作方式与单层感知器网络一样,只不过是增加了一层而已,具体的内容这里不做讨论。Pow1a1R QS Ra2W21obboS 12图 1.3感知器神经网络结构(三)感知器神经网络的学习规则感知器的学习规则主要是通过调整网络层的权值和阀值以便能够地网络的输入向量进行正确的分类。如图 1.2 所示的输入向量P、输出和量a 和目标向量为t 的感知器神经网络,感知器的学习规则是根据以下输出矢量a 可能出现的几种情况未进行参与调整的:1)如果第i 个神经元的输出是正确的,即有ait1,则与第 i 个神经元联接的权值和阀值保持不变。2)如果第i 个神经元的输出是不正确,应该有两种情况。i)实际输出为0,而理想输出为1,即有 ai=0,而 ti 1,则所有的输入j对权值和阀值进行调整,修正值w1j =pj,bj=1 。ii) 实际输出为 1,而期望输出为 0,即有 ai=1,而 ti=0 ,则对所有的输入 j 进行权值和阀值调整,w1j= pj, bi= 1。基于感知器误差 e=t a,感知器学习规则可望写为:w1j =ei pj可以证明当前输入样本来自线性可分的模式时,上述学习算法在有限步同收敛, 这时所得的权值能对所有样本正确分类,这一结论被称为感知器收敛定理。(四)感知器神经网络的训练要使前向神经网络模型实现某种功能,必须对它进行训练,让它逐步学会要做的事情, 并把所学到的知识记忆在网络的权值中。感知器神经网络的训练是采用由一组样本组成的集合来进行。在训练期间, 将这些样本重复输入,通过调整权值使感知器的输出达到所要求的理想输出。感知器的训练主要是反复对感知器神经网络进行仿真和学习, 最终得到最优的网络阀值和权值。我们可以用以下方法训练网络:1) 确定我们所解决的问题的输入向量P、目标向量t,并确定各向量的维数, 以及网络结构大小、神经元数目。 假定我们采用图2.2 的网络结构。2)初始化:权值向量w 和阀值向量b 分别赋予 1,+1 之间的随机值,3并且给出训练的最大次数。3)根据输入向量P、最新权值向量w 和阀值向量b,计算网络输出向量 a。4)检查感知器输出向量与目标向量是否一致,或者是否达到了最大的训练次数,如果是则结束训练,否则转入(5)。5)根据感知器学习规则调查权向量,并返回3)。(五)重要的感知器神经网络函数的使用方法对于感知器的初始化、训练、仿真,在MA TLABP神经网络工具箱中分别提供了init( ), trainp( ) 和 sim( ) 函数。1初始化函数init( )感知器初始化函数init( ) 可得到 R 个输入, S 个神经元数的感知器层的权值和阀值,其调用格式为:w,b=init(R,S)另外,也可以利用输入向量P 和目标向量t 来初始化。w , b=init(p , t)在介绍 trainp( ) 函数前,让我们先介绍一下训练的控制参数tp。tp=disp_freqmax_epoch其中 disp_freq 指定两次显示间训练次数,缺省值为1;map_epoch 指定训练的最大次数,缺省值为100。2. 训练函数trainp( )调用训练函数trainp( ) 函数后又得到新的权值矩阵,阀值向量以及误差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( ) 函数对网络进行训练。4AfApf经足够的训练后,网络仍达不到要求,那么就应当认真分析一下,感知器网络是否适合于这个问题。3仿真函数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.80)、( 1.28,1.84 )、(1.40,2.04) 的三个标本表 1.1触重长1.241.361.381.3781.381.401.481.541.56翼 长1.721.741.641.821.901.701.701.822.08触角长1.141.181.201.261.281.30翼 长1.781.961.862.002.001.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.74 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 0Vectors to be Classified图形显示,目标值1 对应的用2.32.2“ +”、目标值 0 对应的用“ o”来2.1表示:2)1.92plotpv(p , t)(P1.8为 解 决 该 问 题 , 利 用 函 数1.7newp 构造输入量在 0,2.5 之间的1.61.551.40.911.11.21.31.41.51.61.71.8P(1)图 1.4样本图形显示感知器神经网络模型:net=newp(0 2.5 ; 0 2.5 , 1)初始化网络:net=init(net)利用函数 adapt 调整网络的权值和阀值,直到误差为0 时训练结束:net, y, e=adapt(net, p, t)训练结束后可得如图1.5 的分类方式, 可见感知器网络将样本正确地分成两类:Vectors to be Classified2.32.22.12)1.92(P1.81.71.61.51.40.911.11.21.31.41.51.61.71.8P(1)图 1.5 网络训练结果感知器网络训练结束后, 可以利用函数 sim 进行仿真, 解决实际的分类问题:p1=1.24;1.80a1=sim(net,p1)p2=1.28;1.84a2=sim(net,p2)p3=1.40;2.04a3=sim(net,p3)网络仿真结果为:a1=0a2=0a3=062、线性神经网络的MATLAB实现线性神经网络是最简单的一种神经元网络,由一个或多个线性神经元构成。1959 年,美国工程师B.widrow 和 M.Hoft 提出自适应线性元件 ( Adaptivelinear element,简称Adaline )是线性神经网络的最早典型代表。它是感知器的变化形式, 尤其在修正权矢量的方法上进行了改进,不仅提高了训练收敛速度, 而且提高了训练精度。线性神经网络与感知器神经网络的主要不同之处在于其每个神经元的传递函数为线性函数,它允许输出任意值,而不是象感知器中只能输出0 或 1。此外,线性神经网络一般采用Widrow Hoff(简称 W H )学习规则或者最小场方差(Least mean Square,简称 LMS )规则来调整网络的权值和阀值。线性神经网络的主要用途是线性逼近一个函数表达式,具有联想功能。另外,它还适用于信号处理滤波、预测、模式识别和控制等方面。(一)线性神经元模型线性神经元可以训练学习一个与之对应的输入输出函数关系,或线性逼近任意一个非线性函数,但它不能产生任何非线性的计算特性。图 2.1 描述了一个具有R 个输入的由纯线性函数组成的线性神经元。1oPw 1P2ow 2aw RPRob1图 2.1线性神经元模型由于线性神经网络中神经元的传递函数为线性函数,其输入与输出之间是简单的比例关系:a=g(w*p , b)7其中函数 g(x) 为线性函数。(二)线性神经网络结构如图 2.2 描述了一个由S 个神经元相并联形成一层网络,这种网络也称为 Madaline 网络。PoNaR1nS RS 11obS 1S 1图 2.2线性神经元网络W H 学习规则只能训练单层的线性神经网络,但这并不是什么严重问题。因为对线性神经网络而言,完全可以设计出一个性能完全相当的单层线性神经网络。(三)线性神经学习网络的学习规则前面我们提到过,线性神经网络采用W H 学习规则。 W H 学习规则是 Widrow 是 Hoft 提出的用来求得权值和阀值的修正值的学习规则。首先要定义一个线性网络的输出误差函数:E(w,b)= 1 (t a)2= 1 (t w*p) 22.122由式 2.1 可看出,线性网络具有抛物线型误差函数所形成的误差表面。所以只有一个误差最小值。通过W H 学习规则来计算权值和偏差的变化,并使网络的误差平方和最小化, 总能够训练一个网络的误差趋于最小值。 这可通过沿着相对于误差平方和最速下降方向连续调整网络的权值和阀值来实现。根据梯度下降法,权矢量的修正值正比于当前位置上 E( w,b)的梯度,对于第 i 输出节点为:wijE(tiai ) p j2.2wij或表示为:8wiji p j2.3bii2.4这里 i 定义为第i 个输出节点的误差: i=t iai2.5式 2.3 称为 W H 学习规则。 W H 学习规则的权值变化量正比于网络的输出误差及网络的输入向量。 它不需求导数, 所以算法简单, 又具有收敛速度快和精度高的优点。式 2.3 中的 称为学习率,学习率的选取可以适当防止学习过程中产生振荡,提高收敛速度和精度。(四)线性神经网络训练首先给线性神经网络提供输入向量P,计算线性网络层的输出向量a,并求得误差e=t a;然后比较输出的误差平方和是否小于期望的误差平方和,如果是,则停止训练;否则,采用W H 规则调整权值和阀值,反复进行。如果经过训练网络不能达到期望目标,可以继续对网络进行训练。经过足够的训练后,网络还是达不到要求。那么就仔细地分析一下,所要解决的问题,是否适合于线性神经网络。(五)重要线性神经网络函数的使用方法在 MA TLAB 神经网络工具箱中提供了基于线性神经网络的初始化函数initlin( ) 、设计函数solvelin( ) 、仿真函数simulin( ) 以及训练函数trainwh 和adaptwh。下面我们将分别介绍多种函数的使用方法。1初始化函数initlin( )函数 initlin( ) 对线性神经网络初始化时,将权值和阀值取为绝对值很小的数。其使用格式w,b=initlin(R,S)R 为输入数, S 为神经元数。另外, R 和 S 也可用输入向量P 和目标向量t 来代替,即w,b=initlin(p,t)2设计函数solvelin( )9与大多数其它神经网络不同,只要已知其输入向量P 和目标向量t,就可以直接设计出线性神经网络使得线性神经网络的权值矩阵误差最小。其调用命令如下:w,b=solve lin(p,t);3仿真函数simulin( )函数 simulin( ) 可得到线性网络层的输出a=simulin(p,w,b)其中 a 为输出向量 ,b 为阀值向量4训练函数trainwh和 adaptwh( )线性神经网络的训练函数有两种:trainwh()和 adaptwh( ) 。其中函数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 规则训练线性网络的最大的稳定的分辨率)得到。而利用函数 adaptwh( )可以得到网络的输出 a、误差 e、权值矩阵 w 和阀值向量 b。a,e,w,b=adaptwh(w,b,p,t,lr)输入变量 lr 为学习速率,学习速率lr 为可选参数,其缺省值为10。另外,函数maxlinlr( ) 的调用格式为:lr=maxlinlr(p);(六)线性神经网络的应用举例为了理解线性神经网络的理论及其应用问题,下面给出一个实际问题进10行分析,设计一个线性神经网络,用于信号仿真及信号预测。首先输入信号样本为:time=1 : 0.0025: 5;p=sin(sin(time)*time*10);目标信号为:t=p*2+2 ;图形显示样本信号的规律为:plot(time, p, time, t, - )title( Input and Target Signals )xlabel( Time)ylabel( Input__Target__)Tnput and Target Signals43.532.5__t2ergaT 1.5__tup1nI0.50-0.5-111.522.533.544.55Time图 2.3 样本信号利用输入样本信号和理想输出进行线性神经网络初始化:w , b=initlin(p , t)然后利用函数adaptwh 对构造的网络进行训练,lr=0.01 ;a, e, w, b=adaptwh(w, b, p, t, lr)其中 lr 为学习率, a 为网络的输出,e 为误差。仿真结果与目标信号对比分析:plot(time, a, time, t, -)title( Output and Target Signals)11xlabel( Time);ylabel( Output__Target__)Output and Target Signals43.53__2.5tegraT2__tuptu1.5O10.5011.522.533.544.55Time图 2.4 仿真结果与目标信号对比分析误差分析:plot(time,e)hold on ;plot(min(time) max(time),0 0,:r)xlabel(Time) ;ylabel(Error)Error Signal43.532.5r2orrE1.510.50-0.51.522.533.544.551Time图 2.5误差分析123、 BP神经网络的MATLAB实现感知器神经网络模型和线性神经网络模型虽然对人工神经网络的发展起了很大的作用,它们的出现也曾掀起了人们研究神经网络的热潮。但它们有许多不足之处。 人们也曾因此失去了对神经网络研究的信心,但 rumelhart 、mcclellard 和他们的同事洞悉到网络信息处理的重要性,并致力于研究并行分布信息处理方法,探索人类认知的微结构,于1985 年发展了BP 网络的学习算法。 从而给人工神经网络增添了活力,使其得以全面迅速地恢复发展起来。BP 网络是一种多层前馈神经网络,其神经元的激励函数为S 型函数,因此输出量为0 到 1 之间的连续量, 它可以实现从输入到输出的任意的非线性映射。 由于其权值的调整是利用实际输出与期望输出之差,对网络的各层连 接 权 由 后 向 前 逐 层 进 行 校 正 的 计 算 方 法 , 故 而 称 为 反 向 传 播( Back-Propogation )学习算法, 简称为 BP 算法。 BP 算法主要是利用输入、输出样本集进行相应训练, 使网络达到给定的输入输出映射函数关系。 算法常分为两个阶段: 第一阶段 (正向计算过程) 由样本选取信息从输入层经隐含层逐层计算各单元的输出值; 第二阶段 (误差反向传播过程) 由输出层计算误差并逐层向前算出隐含层各单元的误差,并以此修正前一层权值。BP网络主要用于函数逼近、模式识别、分类以及数据压缩等方面。(一) BP网络的网络结构BP 网络通常至少有一个隐含层,如图3.1 所示的是一个具有R 个输入和一个隐含层的神经网络模型。隐含层输出层PoW1a1w2a2RQf1 S1qS1 RS2S1f2 S2 q1oB11 ob2S11图 3.1 具有一个隐含层的BP网络结构感知器与线性神经元的主要差别在于激励函数上:前者是二值型的, 而后者是线性的。BP 网络除了在多层网络上与已介绍过的模型有不同外,其13主要差别也表现在激励函数上。图 3.2 所示的两种 S 型激励函数的图形,可以看到 f( )是连续可微的单调递增函数, 这种激励函数的输出特性比较软, 其输出状态的取值范围为 0 , 1或者 -1, +1 ,其硬度可以由参数 来调节。函数的输入输出关系表达式如下所示:双极型的 S 型激励函数:单极型的 S 型激励函数:2f (net) , f(net) ( -1,1) 1 exp( net)1f (net) , f(net) ( 0,1) 1 exp( net)图 3.2 sigmoid 型函数图形对于多层网络, 这种激励函数所划分的区域不再是线性划分,而是由一个非线性的超平面组成的区域。因为 S 型函数具有非线性的大系数功能。它可以把输入从负无穷到正无穷大的信号变换成1 到 1 之间输出,所以采用S 型函数可以实现从输入到输出的非线性映射。(二) BP网络学习规则BP 网络最为核心的部分便是网络的学习规则。用BP 算法训练网络时有两种方式: 一种是每输入一样本修改一次权值;另一种是批处理方式,即使组成一个训练周期的全部样本都依次输入后计算总的平均误差。这里我们主要探讨的是后一种方式。14下面我们给出两层网络结构示意简图4.3,并以此探讨BP 算法。BP 网络的学习过程主要由以下四部分组成:1)输入样本顺传播输入样本传播也就是样本由输入层经中间层向输出层传播计算。程主要是输入样本求出它所对应的实际输出。 隐含层中第i 个神经元的输出为Ra1if1w1ij p jb1ii 1,2, , s1j 1 输出层中第 k 个神经元的输出为:S1a2 k f 2w2 ki a1i b2k ,i 1,2, s2i1其中 f1( ), f 2 ( )分别为隐含层的激励函数。2)输出误差逆传播这一过( 3.1)( 3.2)在第一步的样本顺传播计算中我们得到了网络的实际输出值, 当这些实际的输出值与期望输出值不一样时, 或者说其误差大于所限定的数值时, 就要对网络进行校正。首先,定义误差函数E(w,b)=1 s2(t k a2k ) 2( 3.3)2 k1其次,给出权值的变化 输出层的权值变化从第 i 个输入到第k 个输出的权值为:w2kiEa1i( 3.4)kiw2ki其中:( 3.5)kiek f 2ekl k a2k( 3.6) 隐含层的权值变化15从第 j 个输入到第i 个输出的权值为:Ewijij p j01 (为学习系数 )w1ij( 3.7)其中:ijei f1( 3.8)s2eikiw2ki( 3.9)k1由此可以看出: 调整是与误差成正比, 即误差越大调整的幅度就越大。调整量与输入值大小成比例, 在这次学习过程中就显得越活跃, 所以与其相连的权值的调整幅度就应该越大, 调整是与学习系数成正比。 通常学习系数在 0.10.8 之间,为使整个学习过程加快,又不会引起振荡,可采用变学习率的方法, 即在学习初期取较大的学习系数随着学习过程的进行逐渐减小其值。最后,将输出误差由输出层经中间层传向输入层,逐层进行校正。3)循环记忆训练为使网络的输出误差尽可能的小,对于 BP 网络输入的每一组训练样本,一般要经过数百次甚至上万次的反复循环记忆训练,才能使网络记住这一样本模式。这种循环记忆训练实际上就是反复重复上面介绍的输入模式正向传播和输出误差逆传播过程。4)学习结束的检验当每次循环记忆结束后,都要进行学习是否结束的检验。检验的目的主要是检查输出误差是否已经符合要求。如果小到了允许的程度,就可以结束整个学习过程,否则还要进行循环训练。(三) BP 网络的训练对 BP 网络进行训练时,首先要提供一组训练样本,其中每个样本由输入样本和输出对组成。 当网络的所有实际输出与其理想输出一致时, 表明训练结束。否则,通过修正权值,使网络的实际输出与理想输出一致。16实际上针对不同具体情况,BP 网络的训练有相应的学习规则,即不同的最优化算法,沿减少理想输出与实际输出之间误差的原则,实现BP 网络的函数逼近、向量分类和模式识别。以图3.3 为例来说明BP 网络训练的主要过程。图 3.3含一个隐含层的BP 网络结构首先:网络初始化,构造合理的网络结构(这里我们采用图4.3 的网络结构),取可调参数(权和阀值)为-1 , 1 上服从均匀分布随机数,并取定期望误差、最大循环次数和修正权值的学习率的初始值。其次,利用相应的BP 网络学习规则对网络进行训练,求得权值修正后的误差平方和。最后,检查网络误差平方和是否降低到期望误差之下,若是,训练结束,否则继续。(四)重要 BP神经网络函数的使用方法函数 initff( ) 和 simuff 可以用来初始化和仿真不超过三层的前馈型网络。函数 trainbp( )、 trainbpx( )、 trainlm()可用来训练BP 网络。其中trainlm( )的训练速度最快,但它需要更大的存储空间,也就是说它是以空间换取了时间; trainbpx( ) 的训练速度次之;trainlm( ) 最慢。1初始化函数initff( )函数 initff( ) 的主要功能就是对至多三层的BP 网络初始化。 其使用格式有多种,现列如下:w,b=initff(p, s, f)w1, b1, w2, b2=initff(p, s1, f1, s2, f2)w1, b1, w2, b2, w3, b3=initff(p, s1, f1, f2, s3, f3)17w, 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 中的每一行中必须包含网络期望输入的最大值和最小值,这样才能合理地初始化权值和阀值。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 算法训练前馈型网络。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;tp(3)指定误差平方和指标,其缺省值0.02;tp(4)指定学习速率,其缺省值 0.01;18只有网络误差平方和降低到期望误差之下,或者达到了最大训练次数,网络才停止学习。学习速率指定了权值与阀值的更新比例,较小学习速率会导致学习时间较长,但可提高网络权值收敛效果。(五) BP网络的应用举例BP 网络的函数逼近举例:设计一个BP 网络,其隐含层神经元的激励函数为双曲正切函数,输出层神经元的激励函数为线性函数,学习样本为21 组单输入矢量,理想输出为相应的单输出矢量。输入矢量为:p=-1 : 0.1: 1;理想输出矢量为:t=-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 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)0.80.60.40.2t0uptuO -0.2 -0.4-0.6 -0.8-1-1-0.8-0.6-0.4-0.200.20.40.60.81Input图 3.4 输入输出关系利用输入和理想输出进行 BP 神经网络初始化:w1,b1,w2,b2=initff(p,5,tansig,t,purelin)19利用函数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;训练结果与理想输出对比分析:Function Approximation0.80.60.4+ 0.2:tegr0aT,-:t-0.2uptuO-0.4-0.6-0.8-1-1-0.8-0.6-0.4-0.200.20.40.60.81Input图 3.5 训练结果与理想输出对比分析网络的训练过程中, 网络收敛效果一定程度上要受网络初始化的初始值的影响,实际输出和理想输出的误差的变化情况可以反映网络学习的效果,这一点可以通过如图3.6 反映:ploterr(tr, eg)其中 tr 为网络学习的循环次数。20210101rorrEder0au10qS-muSSum-Squared Network Error for 535 Epochs-110-210050100150200250300350400450500Epoch图 3.6误差曲线三、实验步骤1、利用感知器进行分类一个经过训练的 2 输入神经元对 5 个输入向量进行分类 (2 类 )。结合一个例子给出步骤。步骤一:两个长度为 5 的向量构成输入样本矩阵 P,行向量 T 为指导向量。利用 PLOTPV 画出这个向量的图像。例如:P = -0.5 -0.5 +0.3 -0.1 -4; -0.5 +0.5 -0.5 +1.0 5; T = 1 1 0 0 1;plotpv(P,T);/plotpv 函数利用感知器的输入向量和目标向量来画输入向量的图像步骤二建立神经网络MATLAB 提供函数 newp 来创建一个指定的感知器。第一个参数指定了期望的两个输入向量的取值范围,第二个参数指定了只有一个神经元。21net = newp(-40 1;-1 50,1);注意:这个神经元的传递函数是 hardlim 函数,也就是阶跃函数。取 0, 1 两个值。 Hardlims 函数,取 -1, 1 两个值。步骤三添加神经元的初始化值到分类图初始化的权值被设为 0,因此任何输入都会给出同样的输出,并且分类线不会出现在这个图中,不用害怕,我们会继续训练这个神经网。hold onlinehandle = plotpc(net.IW1,net.b1);/plotpc 函数用来画神经网络的分类线步骤四训练感知器Matlab 提供了 adapt 函数来训练感知器, adapt函数返回一个新的能更好的执行分类、网络的输出、和误差的神经网络,这个划线函数允许网络从3 个角度去调整,画分类线一直到误差为0为止。E = 1;/E 为误差net.adaptParam.passes = 3;while (sse(E)/sse函数是用来判定误差E 的函数net,Y,E = adapt(net,P,T);/利用输入样本调节神经网netlinehandle = plotpc(net.IW1,net.b1,linehandle);/ 画出调整以后的分类线drawnow;/延迟一段时间end步骤五模拟 simSIM 函数能被用来划分任何别的输入向量,例如划分一个输入向量 0.7; 1.2.这个新点的图像为红色, 他将用来显示这个感知器如何把这个新点从最初的训练集取分开来。p = 0.7; 1.2;22a = sim(net,p);/利用模拟函数sim 计算出新输入 p 的神经网络的输出plotpv(p,a);circle = findobj(gca,type,line);set(circle,Color,red);打开 Hold,以便于以前的图像不被删除。增加训练装置和分类线在图中。hold on;plotpv(P,T);plotpc(net.IW1,net.b1);hold off;axis(-2 2 -2 2);最后放大感兴趣的区域。这个感知器正确的区分了我们的新点 (用红色表示 )作为 ”zero类”(用圆圈表示 ),而不是 ”one类”(用+号表示 ),尽管需要比较长的训练时间,这个感知器仍然适当的进行了学习。2、BP 神经网络进行函数逼近。第一步 问题的提出设计一个简单的 BP 网络,实现对非线性函数的逼近,通过改变 BP网络的隐层神经元的数目,采用不同的训练方法来观察训练时间和训练误差的变化情况。假设将要将要逼近的函数为正弦函数,其频率参数 N=1,绘制此函数见图 2 所示。N=1;p= - 1:0.05:1 ;t=si

matlab 求obb,实验六MATLAB神经网络工具箱DOC相关推荐

  1. matlab数值拟合r2_用MATLAB求RMSE怎么用MATLAB计算均方误差

    用MATLAB求RMSE 怎么用MATLAB计算均方误差 www.zhiqu.org     时间: 2020-12-07 function f=RMSE(h1,h2) %RMSE return RM ...

  2. matlab时域微分,实验一 MATLAB用于时域分析.doc

    实验一 MATLAB用于时域分析 实验一 MATLAB用于时域分析 一.实验目的 学会LTI系统模型的建立: 掌握相关函数的调用格式及作用: 掌握连续信号的基本运算. 二.实验设备 计算机一台,装有M ...

  3. 深度学习 实验六 卷积神经网络(1)卷积 torch.nn

    目录 第5章 卷积神经网络 5.1 卷积 5.1.1 二维卷积运算 5.1.2 二维卷积算子 5.1.3 二维卷积的参数量和计算量 5.1.4 感受野 5.1.5 卷积的变种 5.1.5.1 步长(S ...

  4. matlab音频信号处理实验报告,matlab音频信号处理实验报告.docx

    matlab音频信号处理实验报告 MATLAB音频信号处理实验 南昌航空大学信息工程学院 课程实验报告 实验名称:实验时间:2014年4月23日 指导教师: 班级: 学号: 姓名: 成绩: 南昌航空大 ...

  5. matlab 状态观测器 ppt,实验六利用MATLAB设计状态观测器

    实验六利用MATLAB设计状态观测器 现代控制理论第五次上机实验报告 实验六实验六利用利用 MATLABMATLAB 设计状态观测器设计状态观测器 实验目的:实验目的: 1.学习观测器设计算法: 2. ...

  6. matlab符号运算实验目的,MATLAB符号计算实验报告.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab MATLAB符号计算实验报告.doc11页 本文档 ...

  7. 实验5 matlab程序设计2,实验5 Matlab程序设计2

    实验5 Matlab程序设计2 1. 实验目的: 2. 掌握建立和执行M文件的方法: 3. 掌握实现选择结构的方法: 4. 掌握实现循环结构的方法. 5. 熟悉利用向量运算来代替循环操作的方法. 6. ...

  8. matlab矩阵处理实验报告,matlab实验报告一二三

    <matlab实验报告一二三>由会员分享,可在线阅读,更多相关<matlab实验报告一二三(37页珍藏版)>请在金锄头文库上搜索. 1.2015 秋秋 2013 级级MATLA ...

  9. MATLAB图像基本变换实验报告,MATLAB图像增强与变换处理实验报告

    实验一 MATLAB图像增强与变换处理实验 一.实验目的 1.熟悉掌握数字图像处理的基本概念. 2.了解MATLAB的的编程环境,图像处理工具箱的使用方法. 3.掌握数字图像处理图像增强的基本方法. ...

最新文章

  1. 全流程游戏模型制作学习教程
  2. 数据库中INFORMATION_SCHEMA的说明及使用
  3. 如何通过SpringMVC框架响应JSON数据
  4. 神策数据:从产品与运营视角,了解教育行业转介绍
  5. 【trie树】HDU1247Hat’s Words
  6. 湘西州计算机等级考试内容,2020年3月湖南省湘西州市计算机等级考试注意事项...
  7. 0409互联网新闻 | 微信:朋友圈广告@好友评论互动能力全量开放;视频会议软件Zoom将于4月18日在纳斯达克交易所挂牌上市...
  8. Internationalization(i18n) support in SAP CRM,UI5 and Hybris
  9. 同事操作两个数据源保持事务一致_「微服务架构」微服务架构中的数据一致性...
  10. 用于WebKit的CSS诀窍-图片版
  11. 怎么使用 soapui 做接口测试?
  12. JavaScript TypeScript 学习总结
  13. iOS:开发者账号申请
  14. 用python画小鸭_python中的鸭子类型(协议)和接口
  15. 大二数据库实验报告答案
  16. linux的三权分立设计思路和用户创建(安全管理员、系统管理员和审计管理员)
  17. Frp内网穿透实现远程桌面连接
  18. CCS中的IER和IFR寄存器:Symbol ‘IER‘ could not be resolved
  19. numpy 光速入门示例
  20. 伪原创是可以变为新文章的方法

热门文章

  1. clearcasse 命令
  2. 队列 (Queue)
  3. oracle查询不走索引的一些情况(索引失效)
  4. 多元线性回归-Lasso
  5. 中国开发者真实现状:40 岁不做开发,算法工程师最稀缺!
  6. python twisted安装_图文详解python之twisted模块安装
  7. windows c++ (3) windows获取进程PID、进程路径、进程启停及文件相关操作
  8. 【ORACLE】ORACLE IMPDP导入提示ORA-01918:user‘XXX’ does not exist
  9. 字节跳动后端面经(18)
  10. 凯泽窗带通滤波器MATLAB,用凯泽窗设计线性相位带通FIR滤波器