《神经网络》课件第3章_第1页
《神经网络》课件第3章_第2页
《神经网络》课件第3章_第3页
《神经网络》课件第3章_第4页
《神经网络》课件第3章_第5页
已阅读5页,还剩153页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.1感知器算法及其应用3.2

BP神经网络及其算例3.3其它前向网络3.4神经网络模型辨识3.5神经网络自适应控制系统结构3.6神经元自适应控制系统MATLAB仿真3.7小结习题

本章首先介绍单层计算单元的网络:感知器,对其线性可分性进行了讨论,并用我们开发的三种MATLAB感知器分类程序详细地阐述了分类方法;然后讨论BP网络的基本功能和特性,还分别介绍了GMDH网络和RBF网络;接着阐述BP学习正弦、马鞍曲线等非线性函数的程序;最后讨论神经网络控制方法及单神经元控制非线性系统的程序。3.1.1感知器的概念

感知器(Perceptron)是美国心理学家Rosenblatt于1957年提出来的,它是最基本的但具有学习功能的层状网络(LayedNetwork)。最初的感知器由三层组成,即S(Sensory)层、A(Association)层和R(Response)层,如图3-1所示。S层和A层之间的耦合是固定的,只有A层和R层之间的耦合程度(即权值)可通过学习改变。若在感知器的A层和R层加上一层或多层隐单元,则构成的多层感知器具有很强的处理功能,可用定理3.1来描述。3.1感知器算法及其应用

定理3.1

如感知器隐层的节点可根据需求自由设置,那么用三层(不包括S层)的阈值网络可以实现任意的二值逻辑函数。

图3-1三层感知器应注意,感知器学习方法在函数不是线性可分时得不出任意结果,另外也不能推广到一般前向网络中去。其主要原因是转移函数为阈值函数,为此,人们用可微函数如Sigmoid函数

来代替阈值函数,然后采用梯度算法来修正权值。BP网络就是采用这种算法的典型网络。3.1.2感知器的局限性

这里只讨论R层只有一个节点的感知器,它相当于单个神经元,简化结构如图3-2所示。当输入的加权大于或等于阈值时,感知器的输出为1,否则为0(或-1),因此它可以用于两类模式分类。当两类模式可以用一个超平面分开时,权值w在学习中一定收敛,反之,不收敛。Minsky和Papert(1969)曾经对感知器的分类能力作了严格的评价,并指出了其局限

性,例如,它连最常用的异或(XOR)逻辑都无法实现。图3-2单神经元结构感知器模型下面来分析感知器为什么不能实现异或逻辑运算。针对两类模式分类,在图3-2中单神经元只有两个输入,且x1和x2的状态分别为1或0,寻找合适的权值w1、w2和θ满足下列不等式:(3-1)显然不存在一组(w1,w2,θ)满足上面不等式。异或逻辑运算真值表见表3-1。表3-1中的4组样本也可分为两类,把它们标在图3-3所示的平面坐标系中,任何一条直线也不可能把两类样本分开。若两类样本可以用直线、平面或超平面分开,则称之为线性可分,否则,称之为线性不可分。从图3-3可见,异或逻辑运算从几何意义上讲是线性不可分的。因此,感知器不能实现异或逻辑运算。

表3-1“异或”真值表图3-3异或线性不可分示意图3.1.3感知器的线性可分性

对于线性可分的样本,感知器可以实现对其分类。逻辑运算与和或都可以看做线性可分的分类问题,下面讨论单神经元结构感知器如何实现与逻辑运算和或逻辑运算。

与逻辑运算的真值表如表3-2所示。表3-2“与”运算真值表图3-4与运算分类示意图从表3-2可看出,4组样本的输出有两种状态,输出状态为“0”的有3组样本,输出状态为“1”

的有1组样本。对应的与运算分类示意图如图3-4所示。图中“*”表示输出为逻

辑“1”,“○”表示输出为逻辑“0”,把“*”和“○”分开的直线称为分类线。

现在采用图3-2所示单神经元感知器学习规则对与逻辑运算进行训练,令阈值θ=-0.3,则单神经元感知器输入网net为

0.2x1+0.2x2-0.3=0(3-4)

该方程决定了图3-4与运算分类示意图中的直线,但该直线并非唯一的,其权值可能有多组。或逻辑运算的真值表如表3-3所示,表中4组样本的输出有两种状态,输出状态为“0”的有1组样本,输出状态为“1”的有3组样本。同理可得到“或”运算分类示意图如图3-5所示。不难验证,利用图3-2单神经元感知器、感知器输入网net(式(3-2))及感知器的输出y(式(3-3))同样可以完成逻辑或分类,训练后得到连接权值w1=w2=0.4,从而可得到逻辑或的分类判别方程为

0.4x1+0.4x2-0.3=0(3-5)

显然,其权值也可能有多组,分类直线不唯一。表3-3或逻辑运算真值表

图3-5或运算分类示意图3.1.4感知器分类的MATLAB仿真

感知器权值的学习是通过给定的教师信号(即希望的输出)按δ学习规则,即式(3-6)进行的:

w(k+1)=w(k)+η[yd(k)-y(k)]x(3-6)

式中,w(k)为当前的权值矩阵;yd(k)为教师信号;h为控制权

值修正速度的常数(0<h≤1);y(k)为感知器的输出值;即(3-7)由于感知器一般用于线性可分样本的分类,激发函数选为阈值型函数,因而当式(3-7)中的w0=1,x0=θ时,该式可写成权值的初值一般取较小的非零随机数。

【例3-1】采用图3-2所示的单神经元结构感知器对两类样本进行分类。X为输入样本,T为目标向量。

X=[x1

x2]T,其中:

x1=[-0.5,-0.5,0.3,0.1,-0.1,0.8,0.2,0.3]

x2=[0.3,-0.2,-0.6,0.1,-0.5,1.0,0.3,0.9]

T=[0,0,0,1,0,1,1,1]解(1)根据题意,采用MATLAB编程如下(光盘中该程序名为FLch3eg1):

clear

X=[-0.5,-0.5,0.3,0.1,-0.1,0.8,0.2,0.3;0.3,-0.2,-0.6,0.1,-0.5,1.0,0.3,0.9];

T=[0,0,0,1,0,1,1,1];M=20;

[R,Q]=size(X);%R=2;Q=8为X阵的维数;

[S,Q]=size(T);%S=1;Q=8为T阵的维数;

%W=rands(S,R);%根据输入样本X和目标向量T的维数产生随机权值阵W的初值;

W=[-0.10.2];Wc=W′

%打印权值的初值;

C=rands(S,1);

%产生随机阈值初值;

C

%打印随机产生的阈值初值;

Y=W*X+C;

%计算感知器输出;

forj=1:M

%循环开始

fori=1:8

%对感知器输出分类;

ifY(1,i)>0;%求感知器阈值激发后的输出,F表

示式(3-8)中的y(k);

F(1,i)=1;

else,F(1,i)=0;

end

end%一次分类循环结束;

ifall(F==T)%感知器的输出F和目标T不等时修正权值阵和阈值;

break

end

dW=(T-F)*X';

E=[0.01;0.01;0.0;0.0;0.01;0.01;0.01;0.01];

%dC=0.1*(T-F)*E,表示阈值不修正;

W=W+dW;

Wz(:,j)=W;%存储分类过程中的动态权值;

%C=C+dC;%表示阈值不修正;

Y=W*X+C;

end%循环结束

Wz%打印分类过程中的动态权值;

%开始绘图

plotpv(X,T);%绘点

plotpc(W,C);%绘分割线;

gridon

%xlabel('k'),ylabel('v');title('感知器分类')

(2)感知器分类结果如图3-6所示。图3-6例3-1单神经元感知器分类结果图中,“o”代表目标向量T中的“0”,“+”

代表目标向量T中的“1”,横轴x1表示样本1,纵轴x2表示样本。

(3)感知器的参数。

感知器的权值矩阵初值Wc、阈值初值C和分类过程中的动态权值矩阵Wz如下:

Wc=

-0.1000

0.2000

C=-0.0213

Wz=

0.50000.20000.70000.40000.9000

0.00000.60000.30000.90000.6000从程序看,分类循环次数M设置为20次;从打印出的分类过程中的动态权值矩阵Wz来看,Wz只有5组权值,说明程序只循环了5次就满足了分类的误差要求:

E=[0.01;0.01;0.0;0.0;0.01;0.01;0.01;0.01]

(4)程序分析。

①在程序中权值矩阵初值Wc和阈值初值C可以分别采用W=rands(S,R);Wc=W′和C=rands(S,1)产生随机数,也可以直接设置随机小数。程序中Wc采用置随[JP2]机小数,而阈值

初值C采用产生随机数指令实现。如果Wc和C均采用rands指令产生随机数实现,也可以得到类似图3-6的分类结果,读者不妨一试(可以修改光盘中的该程序)。②本例的样本为随机数,无量纲,无规律。目标向量T=[0,0,0,1,0,1,1,1]正好与样本巧合,才得到了图3-6所示的分类结果。如果目标向量随机给定,如T=[1,0,0,1,0,1,0,0],

则该程序无法分类,相当于对线性不可分的样本分类,单神经元感知器无能为力(如例3-2)。

【例3-2】样本矩阵同例3-1,随机目标向量T=[1,0,0,1,0,1,0,0]。

(1)根据题意,采用MATLAB编程如下(在光盘中该程序名为FLch3eg2):

clear

X=[-0.5,-0.5,0.3,0.1,-0.1,0.8,0.2,0.3;0.3,-0.2,-0.6,0.1,-0.5,1.0,

0.3,0.9];

T=[1,0,0,1,0,1,0,0];

%随机目标向量

M=20;

[R,Q]=size(X);%R=2;Q=8为X阵的维数

[S,Q]=size(T);%S=1;Q=8为T阵的维数W=[-0.10.2];

Wc=W′%打印权值的初值

C=rands(S,1);%产生随机阈值初值

C%打印随机产生的阈值初值

Y=W*X+C;%计算感知器输出

forj=1:M%循环开始

fori=1:8%对感知器输出分类

ifY(1,i)>0;

%求感知器阈值激发后的输出,F表示式(3-8)中的y(k)F(1,i)=1;

else,F(1,i)=0;

end

end%一次分类循环结束

ifall(F==T)

%感知器的输出F和目标T不等时修正权值阵和阈值

break

end

dW=(T-F)*X′;

E=[0.01;0.01;0.0;0.0;0.01;0.01;0.01;0.01];

W=W+dW;

Wz(:,j)=W;%存储分类过程中的动态权值

Y=W*X+C;

end%循环结束

Wz%打印分类过程中的动态权值

%开始绘图[HJ]

plotpv(X,T);%绘点

plotpc(W,C);%绘分割线

gridon

xlabel(′x1′),ylabel(′x2′)

(2)感知器分不开类的结果如图3-7所示

图3-7例3-2感知器分不开类的结果

(3)感知器的参数。感知器的权值矩阵初值Wc、阈值初值C和分类过程中的动态权值矩阵Wz如下:

Wc=

-0.1000

0.2000

C=-0.0280

Wz=

Columns1through6

-0.50000.2000-0.3000-0.30000.90000.4000

-0.90001.80000.6000-0.40002.00000.8000

Columns7through12

-0.10000.60000.1000-0.40001.10000.1000

-0.40002.30001.1000-0.10001.70000.8000

Columns13through18

-0.40000.80000.3000-0.20000.50000.0000

-0.40002.00000.8000-0.40002.30001.1000

Columns19through20

-0.50001.0000

-0.10001.7000

由图3-7可知,随机目标向量T与样本X规律不同,单神经元感知器不能分类。如果输入样本具有物理量纲,并对样本从小到大或从大到小排列,目标向量T要符合样本的排列规律,即使目标向量T在一定范围内变化,则分类问题无疑可实现。

【例3-3】有两篮水果,其中有大小不同的火龙果

、蛇果、莲雾等,水果的大小用其直径(cm)来确定,其中X为输入样本,T为目标向量。X=[x1

x2]T。两篮水果的直径参数分别为

x1=[3.6,9.3,7.1,4.0,4.2,2.8,7.1,9.2,8.1,2.9,9.3,4.2,];

x2=[6.6,6.3,8.1,4.1,4.2,2.9,7.3,7.6,7.8,4.9,8.2,3.5];

目标向量为T=[0,0,0,0,0,0,1,1,1,1,1,1],采用单神经元感知器对两篮水果按大小分类解根据题意,直接无法分类。因此先对样本从小到大排队,然后进行分类。

(1)编程如下(光盘中该程序名为FLch3eg3):

clear

%清空间

z=[3.6,9.3,7.1,4.0,4.2,2.8,7.1,9.2,8.1,2.9,9.3,4.2];

%读取样本x1,对其从小到大排队

j=0;i=0;b=0;N=12

forj=1:N

fori=1:N-j

ifz(i)>z(i+1)

b=z(i);z(i)=z(i+1);z(i+1)=b;%把较大的值放在z(i+1)中

else

end

end

end

X(1,:)=z;

%x1从小到大排队结果

z=[6.6,6.3,8.1,4.1,4.2,2.9,7.3,7.6,7.8,4.9,8.2,3.5];

%读取样本x2,对其从小到大排队

j=0;i=0;b=0;

forj=1:N

fori=1:N-j

ifz(i)>z(i+1)

b=z(i);z(i)=z(i+1);z(i+1)=b;%把较大的值放在z(i+1)中

else

end

end

endX(2,:)=z

%打印样本从小到大排队结果

M=1360%给M赋循环次数

T=[0,0,0,0,0,0,1,1,1,1,1,1]

[R,Q]=size(X);%R=2;Q=8为X阵的维数

[S,Q]=size(T);%S=1;Q=8为T阵的维数

%W=rands(S,R);%根据输入样本X和目标向量T的维数产生随机权值阵W的初值

W=[-0.10.2];Wc=W′

%打印权值的初值

C=rands(S,1);

%产生随机阈值初值

C

%打印随机产生的阈值初值

Y=W*X+C;

%计算感知器输出

forj=1:M

%循环开始

fori=1:N

%对感知器输出分类ifY(1,i)>0;[DW]%求感知器阈值激发后的输出,F表示式(3-8)中的y(k)

F(1,i)=1;

else,F(1,i)=0;

end

end[DW]%一次分类循环结束

ifall(F==T)[DW]%感知器的输出F和目标T不等时修正权值阵和阈值

break

end

dW=(T-F)*X′;

E=[0.01;0.01;0.0;0.0;0.01;0.01;0.01;0.01;0.01;0.01;0.01;0.01];W=W+dW;

Wz(:,j)=W;[DW]%存储分类过程中的动态权值

Y=W*X+C;

end[DW]%循环结束

Wz[DW]%打印分类过程中的动态权值

[DW]%开始绘图

plotpv(X,T);[DW]%绘点

plotpc(W,C);[DW]%绘分割线

gridon

xlabel(′x1′),ylabel(′x2′)

(2)感知器对两篮水果分类的结果如图3-8所示。图3-8感知器对两篮水果分类的结果

(3)感知器的参数。

打印的样本从小到大排队,其结果X、感知器的权值矩阵初值Wc、阈值初值C和分类过程中的动态权值矩阵Wz部分值如下

X=

Columns1through7

2.80002.90003.60004.00004.20004.20007.1000

2.90003.50004.10004.20004.90006.30006.6000Columns8through12

7.10008.10009.20009.30009.3000

7.30007.60007.80008.10008.2000

Wc=

-0.6024

0.2504

C=0.4667

Wz=Columns805through810

135.2000142.3000135.5000142.6000135.8000142.9000

-134.9000-127.6000-134.7000-127.4000-134.5000-127.2000

Columns937through942

140.6000147.7000140.9000148.0000141.2000148.3000

-138.1000-130.8000-137.9000-130.6000-137.7000-130.4000需要对例3-3加以说明:

①源程序设定分类次数M=1360,但程序运行到980次结束,因此只打印出805~810次和937~942次分类过程的动态权值阵。

②由于目标向量为T=[0,0,0,0,0,0,1,1,1,1,1,1],所给的样本直接无法分类,因此先对样本从小到大排队(因为在目标向量中,“1”代表大,“0”代表小),然后进行分类。③如果目标向量中“1”在前,“0”在后,例如T=[1,1,1,1,0,0,0,0,0,0,0,0],所给的样本直接无法分类,此时应先对样本从大到小排队,然后进行分类。另外,目标函数中的“1”或“0”的个数可以根据需要变化。3.2

BP神经网络及其算例在多层感知器的基础上增加误差反向传播信号,就可以处理非线性的信息,把这种网络称之为误差反向传播的(BackPropagation,BP)前向网络。BP网络可以用在系统模型辨识、

预测或控制中。BP网络又称为多层并行网,其激发函数通常选用连续可导的Sigmoid函数:(3-9)当被辨识的模型特性或被控制的系统特性在正负区间变化时,激发函数选对称的Sigmoid函数,又称双曲函数:(3-10)设三层BP网络如图3-9所示,输入层有M个节点,输出层有L个节点,而且隐层只有一层,具有N个节点。一般情况下N>M>L。设输入层神经节点的输出为ai(i=1,2,…,M);隐

层节点的输出为aj(j=1,2,…,N);输出层神经节点的输出

为yk(k=1,2,…,L);神经网络的输出向量为ym;期望的网络输出向量为yp。下面讨论一阶梯度优化方法,即BP算法。图3-9三层BP网络

1.网络各层神经节点的输入输出关系

输入层第i个节点的输入为

(3-11)式中xi(i=1,2,…,M)为神经网络的输入,θi为第i个节点的阈值。对应的输出为

(3-12)在BP网络学习中,非线性特性的学习主要由隐层和输出层来完成。一般令:

ai=xi(3-13)

隐层的第j个节点的输入为

式中,分别为隐层的权值和第个节点阈值。对应的输出为(3-14)(3-15)输出层第k个节点的输入为

式中,wjk、θk分别为输出层的权值和第k个节点的阈值。对应的输出为

(3-16)(3-17)

2.BP网络权值调整规则

定义每一样本的输入输出模式对应的二次型误差函数为

则系统的误差代价函数为

式(3-19)中,P和L分别为样本模式对数和网络输出节点数。问题是如何调整连接权值使误差代价函数E最小。下面讨论基于式(3-18)的一阶梯度优化方法,即最速下降法。

(1)当计算输出层节点时,apk=yk,网络训练规则将使E在每个训练循环按梯度下降,则权系数修正公式为

为了简便,式中略去了Ep的下标。若netk指输出层第k个节点的输入网络;h为按梯度搜索的步长,0<h<1,则(3-20)(3-21)定义输出层的反传误差信号为

对(3-17)式两边求导,有

将式(3-23)代入式(3-22),可得

δk=yk(1-yk)(ypk-yk)

k=1,2,…,L

(3-22)(3-23)(3-24)

(2)当计算隐层节点时,apk=aj,则权系数修正公式为

为了简便,式中略去了Ep的下标,于是(3-25)(3-26)定义隐层的反传误差信号为

其中(3-27)(3-28)又由于f′(netj)=aj(1-aj),所以隐层的误差反传信号为

为了提高学习速率,在输出层权值修正式(3-20)和隐层权值修正式(3-25)的训练规则上,再加一个势态项(MomentumTerm),隐层权值和输出层权值修正式为(3-29)(3-30)(3-31)式中h、a均为学习速率系数。h为各层按梯度搜索的步长,α是各层决定过去权值的变化对目前权值变化的影响的系数,又称为记忆因子。下面给出在系统模型辨识中BP反向传播训练的步骤:

(1)置各层权值和阈值的初值,wjk、wij、θj为小的随机数

阵;误差代价函数ε赋值;设置循环次数R。

(2)提供训练用的学习资料:输入矩阵xki(k=1,2,…,R;i=1,2,…,M),经过参考模型后可得到目标输出ypk(或将现场实际系统统计的输出作为目标信号),即教师信号;经过神经网络后可得到yk,对于每组k进行下面的第(3)~(5)步。

(3)按式(3-17)计算网络输出yk,按式(3-15)计算隐层单元的状态aj。

(4)按式(3-24)计算训练输出层误差值δk,按式(3-29)

计算训练隐层的误差值δj。

(5)按式(3-30)和式(3-31)分别修正隐层权值wij和输出层权值wjk。

(6)每次经过训练后,判断指标是否满足精度要求,即判断误差代价函数式(3-18)是否达到E≤ε。若满足要求则转到第(7)步,否则再判断是否到达设定的循环次数k=R。若循环次数等于R,转到第(7)步,否则转到第(2)步,重新读取一组样本,继续循环训练网络。

(7)停止。

BP模型把一组样本的I/O问题变成了一个非线性的优化问题,使用了优化中最普通的梯度下降法,用迭代运算求解权系数,相应于学习记忆问题。加入隐节点使优化问题的可调参数增加,从而可得到更精确的解。如把这种神经网络看做从输入到输出的映射,则这种映射是一个高度非线性的映射。如输入节点个数为m,输出节点个数为L,则网络是从Rm→RL的映射,即

F:Rm→RL,Y=F(X)(3-32)式中,X、Y分别为样本集合和输出集合。

【例3-4】具有误差反传的“2-3-2”型BP神经网络如图3-10所示,网络的激发函数为Sigmoid函数,试计算神经网络输出层的误差反传信号δk和隐层的误差反传信号δj。

解设该BP神经网络的隐层输出为oj,输出层的输出

yk=[y1

y2]T,教师信号dk=[d1

d2]T。神经网络输出层的误差反传信号δk为

(3-33)式中,神经网络的输出及输出节点的输入网分别为:图3-10具有误差反传的“2-3-2”型神经网络结构式中,输出层的权值

为网络输出层的权值,wjk中的第一行对应神经网络隐层三个神经节点的输出到输出层的第一个节点之间的权值,其第二行对应神经网络隐层三个神经节点的输出到输出层的第二个节点之间的权值。隐层的误差反传信号δj为其中神经网络的隐层输出及隐层节点的输入网分别为:式中,隐层的权值例3-4所给的神经网络为“2-3-2”型BP神经网络,从式(3-34)可看出,所求得的隐层的误差反传信号δj为三维列向量;从式(3-33)可看出,所求得的输出层的误差反传信号δk为二维列向量。3.3其它前向网络

批数据处理(TheGroupMethodofDataHandling,GMDH)模型是由Ivakhnenko(1971)为预报海洋河流中的鱼群而提出的模型。它成功地应用于非线性系统的建模和控制中,如超音速飞机的控制系统(Shrier等,1987)、电力系统的负荷预测(Sagara和Murata,1988)等。由于GMDH模型具有前向网络的结构,因此,人们将它作为前向网络的一种,且称之为多项网络。图3-11为一典型的GMDH网络,它有4个输入节点、一个(单)输出节点。其输入节点只传递输入信号到中间隐节点,每一个隐节点和输出节点正好有两个输入信号,因此,单输出节点的前一级肯定只有两个隐节点。图3-11

GMDH的典型网络结构除了输入层外,每个处理单元具有图3-12所示的形式,其输入输出关系表示为

zk,l=ak,l(zk-1,i)2+bk,lzk-1,izk-1,j+ck,l(zk-1,j)2+dk,lzk-1,i+ek,lzk-1,j+fk,l(3-35)

其中zk,l表示第k层的第l个处理单元,且z0,l=xi。由上式可见,GMDH中的处理单元的输出为两个输入量的二次多项式,因此网的每一层使得多项式的次数增大2阶,其结果是网络的

输出y可以表示成输入的高阶(2k阶)多项式,其中k是网络的层数(不含输入层)。这样的多项式称为Ivakhnenko多项式。

图3-12

GMDH的处理单元下面将讨论如何决定GMDH网络的每一隐层及其处理单元。首先在输入层后加上一层中间级,决定其处理单元的数目和每一个处理单元的多项式。同样在中间层后再增加一层中间层,作相同的处理,直到网络的输出层。每一层的处理内容和方法都相同。处理过程如下:设第k-1层有Mk-1个处理单元,那么,在决定第k层时,首先应有组合的处理单元,即第k-1层的每两个输出的组合都构成第k层处理单元的输入。对于给定的学习样本(x1

,y1),(x2,y2),…,(xi,yi),先计算出第k-1层的输出zk-1,然后,利用最小二乘法,估计出(3-34)式中的多项式的参数(ak,l,bk,l,…,fk,l)。这样的学习方法使得每一层的输出都尽可能地接近于所希望的输出。必须注意的是,用于每一层处理单元学习的样本必须和前面用过的学习样本不同。当同层的每个处理单元的多项式系统都确定后,用新的样本来评价每一个处理单元的输出性能。最简单的方法是计算在新样本下每个处理单元的输出误差的均方差。通常情况下,各个处理单元的均方差会大不相同,因此,可删除具有较大均方差的处理单元。决定均方差的大小无统一标准,但可以根据和最好处理单元的均方差的比值来决定一阈值,然后删除那些高于该阈值的处理单元。通过删除一些性能较差的处理单元,可保证每层处理单元的数目不会因前层输出的组合而急剧增多。决定最佳层数的准则如图3-13所示。起始增大层数时,每层最好的处理单元的均方差E会逐渐变小。当E达到最小值后,再增加层数时,E会增大。因此,对于E取最小值Emin的层数是最佳的,此时取该层的最好处理单元作为输出节点,且删除同层的其它处理单元和前一层中不和输出节点相关的所有处理单元,从而得到了结构简单但性能最好的GMDH网络。GMDH网络提供了拟合一组样本的最佳多项式,但其计算工作量很大。图3-13

GMDH网络中间层的层数和最好单元的均方差关系径向基函数RBF(RadialBasisFunction)网络由三层组成,其结构如图3-14所示。输入层节点只传递输入信号到隐层,隐层节点(即称RBF节点)由像高斯核函数那样的辐射状作用函数构成。而输出节点通常是简单的线性函数(Powell;Hush和Horne,1993)。图3-14

RBF网络

隐层节点的作用函数(核函数)对输入信号将在局部产生响应,换句话说,当输入信号靠近核函数的中央范围时,隐节点将产生较大的输出,为此,RBF网络有时也称为局部感知场网络(Moody和Darken,1988,1989)。

虽然有各种各样的核函数,但最常用的是高斯核函数(GaussianKernelFunction),即隐层的激发函数为高斯函数,网络输出为隐层输出的集合。从理论上看,RBF网络和BP网络一样可以近似任何连续非线性函数(Hartman,Keelerk和Kowalski,1990;Lee和KIL,1991)。两者的主要区别在于各使用不同的激发函数,BP网络的隐节点使用Sigmoid函数,其函数值在输入空间中无限大的范围内为非零值,而RBF网络的激发函数则是局部的RBF网络的算法及其应用将在第8章详细讨论。3.4神经网络模型辨识3.4.1神经网络模型辨识系统结构

模型辨识中有正向建模和逆向建模的结构,正向建模中又分为串-并辨识结构及并联辨识结构;逆向建模分为直接逆向辨识结构和特殊逆向辨识结构。为了在模型辨识中能选准结构,下面分析它们各自的优缺点。在系统辨识中有一个重要问题,是系统的可辨识性,即给定一个特殊的模型结构,被辨识的系统是否可以在该结构内适当地被表示出来。因此,必须预先给予假设(如果采用神经网络方法对系统进行辨识),即所有被研究的系统都属于所选神经网络可以表示的一类。根据这个假设,对同样的初始条件和任何特定输入,模型和系统应产生同样的输出。因此,系统辨识就是指根据模拟系统过程的输出误差,利用网络的算法调节神经元网络的参数,直到模型参数收敛到它们的期望值。如果神经元网络训练过程要表示系统的正向动态,则这种建模方法就叫做正向辨识建模,其结构示于图3-15。图3-15正向辨识建模(串-并辨识)结构图中,TDL代表具有抽头的延时线,神经元网络与过程平行,系统与神经网络的预估误差用作网络的训练信号,这种结构也称为串-并辨识模型。学习的方法是有监督的。教师信号(即系统的输出)直接向神经网络提供目标值,通过网络将预估误差直接反传进行训练。假定所被辨识系统具有以下形式:(3-36)式(3-36)是非线性的离散时间差分方程,yp(k+1)代表在时间k+1时刻系统的输出。它是给神经网络提供的教师信号,取决于过去n个输出值、过去m个输入值。这里只考虑了系统的动态部分,还没有计入系统所承受的扰动。为了系统建模,可将神经网络的输入输出结构选择成与要建模的系统相同。用ym表示网络的输出,则神经网络模型为(3-37)式中,

表示网络输入输出的映射。注意输入到网络的量包括了实际系统的过去值。很明显,在这个结构中利用神经网络输入,再加入系统的过去值,扩大了输入空间。这实质上完成了基于当前最新观测数据对于系统输出的一步超前预报,所以称为一步预报模型。在这种串-并联辨识模型的建立过程中,神经网络的训练等同于静态非线性函数的逼近问题。因为系统是输入有界和输出有界的,所以在辨识过程中所用的信息也是有界的。而且在模型(神经网络)中不存在反馈,因此可以保证辨识系统的稳定性。用这种方法得到的模型,通过自身输出反馈构成一个系统,也可以预测被测对象未来的输出,但只有当对象具有较强的收缩特性时,才能保证模型和系统之间的误差趋近于零。如果将图3-15所示神经网络模型中的输入yp换成ym,模型的输入是由过程的输入和模型自身的输出反馈构成的,这就是正向建模的并联连接结构,如图3-16所示。其模型的输出可写成式(3-38)的形式:(3-38)式中,

表示网络输入输出的映射。在这种情况下,输入到网络的量包括了神经网络模型的过去值。虽然神经网络模型内部还是静态函数,但整体上构成一个动态系统。在训练时通过对网络的参数调整,使模型动态映射到输出,从而逼近被测系统的非线性变化轨线。这种并联辨识的模型,在输入作用下,可以得到更好的输出预测。在这种意义下,我们称该模型为常时段预测模型。图3-16是一种常用的正向建模结构。图3-16正向建模(并联辨识)结构除了上述正向建模(串-并辨识、并联辨识)结构外,还有逆向建模结构。在逆向建模中,有直接逆向辨识和特殊逆向辨识结构。直接逆向辨识建模结构如图3-17所示。由图可见,待辨识系统的输出作为神经网络(NeuralNetwork,NN)的输入,NN输出与系统的输入比较,用其误差来训练NN,因而NN将通过学习建立系统的逆模型。由于这种学习不是目标导向的,在实际工作中,系统的输入u(k)通常是经过调节器得到的,不可能预先定义,因此应采用图3-18所示的双网辨识结构。对于被辨识系统,网络NN1和NN2的权值同时调节,e2=u-v是两个网络的训练信号。当e1接近0时,网络NN1和NN2将是系统逆模型的一个好的近似。这里要求NN1和NN2是相同结构的网络,即网络的输入层、隐层和输出层神经元节点的数目相同。当网络训练好以后,网络NN1相当于一个前馈控制器,使系统的输出y(k)和期望值接近一致,即e1接近于0,网络NN2是系统的逆模型。这种双网结构又称为神经网络的直接逆控制。图3-17直接逆向辨识建模结构图3-18双网辨识结构(直接逆控制)另外,如果把图3-18所示的双网辨识结构稍作改动,即用NN1的输出u(k)作NN2的输入,NN2的输出和系统的输出y(k)比较之差来调节NN2的权值;用系统的输出y(k)和系统输出期望值yd(k)之差来调整NN1的权值。这样的网络结构被称为正-逆建模结构,NN2为逆向辨识建模网络,则NN1是逆控制器。3.4.2神经网络模型辨识MATLAB仿真

【例3-5】采用“3-6-1型”BP神经网络学习非线性正弦信号,其中为正弦信号的频率,k为采样次数。

解由于利用MATLAB的M文件开发程序时不能写脚码,因此将隐层权值矩阵写成wij,输出层权值写成wjk,并令神经网络的输入为xj,神经网络的输出为y。据题意知,隐层权值矩阵wij为3×6维矩阵;输出层权值矩阵wjk为6×1维矩形;xj为神经网络的输入向量。由于在运算中有wij×xj,xj是三维向量,只有将原矩阵wij转置才能满足,因此w10ij表示wij(k-2)为6×3维矩阵;w11ij表示wij(k-1)也为6×3维矩阵;w20jk表示wjk(k-2)为6×1维矩阵;w21jk表示wjk(k-1);q和p为阈值1。另外,学习非线性正弦信号,必须采用双曲函数y=tanh(x)为激发函数。(1)编程如下(在光盘中该开发程序名为FLch3eg5):

%初始化,给各层权值和阈值赋初值、赋学习因子值、学习次数等;

clear

%清空间

w10ij=[.001.001.002;.001.001.02;.01

0.01.001;.001.001.002;.0010.01.002;.0011.001.001];

w11ij=[-.1-.02.11;-.21.10-.19;-.14.15-.16;.14-.13.17;-.13.12.21;-.16-.23.13];w20jk=[.01;.02;.1;.2;.1;.1];%给输出层权值赋初值,w20jk表示wjk(k-2);

w21jk=[.18;.9;.9;.7;.8;.9];%w21jk表示wjk(k-1);

q0j=[.5.8.4.6.1.2];%给隐层阈值赋初值,q0j代表;

q1j=[-.1.02.12.14-.02.02];%q1j代表;

q2j=0;

%给输出层阈值赋初值

p0=.2;

p1=.2;

w23jk=[0;0;0;0;0;0];w22jk=0;w=0;

xj=[0.50.30.2];%网络的输入;

ya=[000];yp=0;yy=0;m1=0;yam=0;yp1=0;qw=0;%清暂存器;

yo=[000];ya1=0;

error=0.0001;;%赋允许误差值;

e1=0;e0=0;e2=0;e3=0;e4=0;%清暂存器;

yo=0;ya=0;yb=0;y0=0;y1=0;y2=0;y3=0; %清暂存器;

u=0;u1=0;u2=0;

dj2=0;e3=.055;a1=0.02;a2=0.05;a3=0.005;%赋学习因子值;

M=120;%赋程序循环次数;%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

form=1:M%采样次数m循环1开始;

yn=sin(pi*0.02*m);%取样本正弦信号;

yp=yn;

fork=1:4%点循环2开始

fori=1:6%calculatingoutputofthehiddenlayer,循环3开始

x1=[w11ij(i,1)*xj(:,1)]+[w11ij(i,2)*xj(:,2)]+[w11ij(i,3)*xj(:,3)];

x=x1+q1j(:,i);

o=tanh(x);

o1j(i)=o;

end%循环3结束,算出了6个隐层节点的输出;

fori=1:6%calculatingoutputoftheoutputlayer,循环4开始

yb=yb+w21jk(i,:)*o1j(:,i);

end%循环4结束,

yi=yb+p1;y=tanh(yi);%算出了1个输出层节点的输出;

%calculatingerrorvaluebetweenaimandpracticevalue

e0=e1;%误差递推暂存;

e1=e2;

e2=[(yp-y).^2]/2;%计算学习均方误差;

fori=1:6%循环5开始,修正隐层权值;

d1=[1-o1j(:,i)]*dj2*w23jk(i,:);%计算隐层误差反传信号;

do=o1j(:,i)*d1;%计算do=qw=q1j(:,i)-q0j(:,i);

q2j=q1j(:,i)+.16*do+.01*qw;%修正的隐层阈值;

q3j(:,i)=q2j;

forj=1:3 %循环6开始;

dw=w11ij(i,j)-w10ij(i,j);

w12ij=w11ij(i,j)+a1*do+a2*dw;%计算修正的隐层权值w12ij=wij(k);

w13ij(i,j)=w12ij;%将修正后的隐层权值w12ij暂存在w13ij(i,j)

end%循环6结束;

end%循环5结束;w10ij=w11ij;w11ij=w13ij;%递推暂存隐层权值;

q0j=q1j;q1j=q3j;

%递推暂存隐层阈值;

fori=1:6

%循环7开始,修正输出

层权值和阈值;

d2j=y*(1-y)*(yp-y);

%计算输出层误差反传信号

%d2j;

dw=w21jk(i,:)-w20jk(i,:);

w22jk=w21jk(i,:)+0.1*d2j*o1j(i)+0.11*dw;

w23jk(i,:)=w22jk;%将修正后的输出层权值w22jk暂存在w23jk(i,:)w20jk=w21jk;w21jk=w23jk;

%递推暂存输出层权值;

ph=p1-p0;

p2=p1+.6*(yp-y)+.1*ph;

%修正的输出层阈值;

p0=p1;p1=p2;

ife2<=.005%循环8开始,判断学习误差到否?;

break;else,

end%循环8结束;

end%循环2结束;yom(m)=y;

%存储神经网络学习过程中的输出;

e3(m)=e2;

%存储学习过程中的误差;

end

%循环1结束;

w13ij

%打印神经网络学习结果的隐层权值;

w23jk

%打印神经网络学习结果的输出层权值;

m=1:M

%grapher

subplot(4,1,1)%绘制第一张图;

plot(ypp)

xlabel('m'),ylabel('ypp')

title('IdentifiedmodelbyBP.algorithm')

subplot(4,1,2)%绘制第二张图;plot(yom,'rx')

xlabel('m'),ylabel('yom')

subplot(4,1,3)%绘制第三张图;

plot(e3)

xlabel('m'),ylabel('e3')

subplot(4,1,4)%绘制第四张图;

plot(m,ypp,m,yom,'rx')

xlabel('m'),ylabel('yom')

legend('ypp=sin(2*pi*m/100)','yom=outputofNN')%图标注

(2)程序运行结果。运行上述程序可以得到对正弦信号

的学习结果,如图3-19所示。图3-19

BP网络对正弦信号的学习结果在图3-19中,第一幅图曲线ypp代表样本正弦信号;第二幅图带×的曲线yom代表BP神经网络的输出;第三幅图曲线e3代表神经网络学习过程中的误差,可见误差在1%之内;第四幅图ypp&yom表示样本ypp和神经网络的输出yom两条曲线绘在同一幅图中,“-”表示样本,“×”表示神经网络的输出。

(3)程序的参数。下面是BP网络的权值、阈值的初值,以及程序对正弦信号学习结果的权值和阈值的参数:

w10ij=

0.00100.00100.0020

0.00100.00100.0200

0.01000.01000.0010

0.00100.00100.0020

0.00100.01000.0020

0.00110.00100.0010w11ij=

-0.1000

-0.0200

0.1100

-0.2100

0.1000

-0.1900

-0.1400

0.1500

-0.1600

0.1400

-0.1300

0.1700

-0.1300

0.1200

0.2100

-0.1600

-0.2300

0.1300w20jk=[0.0100

0.0200

0.1000

0.2000

0.1000

0.1000]T

w21jk=[0.1800

0.9000

0.9000

0.7000

0.8000

0.9000]T

q0j=[0.5000

0.8000

0.4000

0.6000

0.1000

0.2000]

dj2=0w13ij=

-0.1000

-0.0200

0.1100

-0.2100

0.1000

-0.1900

-0.14000.1500

-0.1600

0.1400

-0.1300

0.1700

-0.1300

0.1200

0.2100

-0.1600

-0.2300

0.1300

w23jk=[0.2651

1.0550

0.9712

0.6708

0.8903

1.0470]T

需要说明的是,w13ij和w23jk分别为神经网络对正弦信号的学习结果的隐层和输出层权值。在例3-5程序中,采用了对各层阈值的算法,其中:“q2j=q1j(:,i)+.16*do+.01*qw;”为修正的隐层阈值计算式;“p2=p1+.6*(yp-y)+.1*ph;”为修正的输出层阈值计算式。实际上在神经网络用于学习(辨识)或控制时,网络的阈值可以有针对性地修正或者不修正。但该程序若不修正阈值,修正各层权值的其它学习因子必须重新训练,否则该BP神经网络将无法跟踪非线性的正弦信号。3.5神经网络自适应控制系统结构自适应控制系统是一种高性能复杂控制系统。它既不同于一般的反馈控制系统,也不同于确定性最优控制系统和随机最优控制系统。要阐明自适应控制系统的概念,必须明确它与最优控制系统的区别。这种区别主要在于所研究的对象不同,要解决的问题不同。模型参考自适应系统是最常用的一种自适应系统,它是由参考模型、可调系统和自适应机构三个部分组成的,常见的一种结构为并联模型参考自适应系统,如图3-20所示。图中可调系统包括受控过程、前置控制器和反馈控制器。对可调系统的工作要求,如时域指标δp%、ξ、ts或通频带等,可由参考模型直接决定。因此,参考模型实际上是一个理想的控制系统,这就是模型参考自适应系统不同于其它形式的控制,它无需进行性能指标变换。参考模型与可调系统两者性能之间的一致性由自适应机构保证,所以,自适应机构的设计十分关键,性能一致性程度由状态向量

ex=xm-x(3-39)或输出误差向量

ey=ym-y(3-40)

来度量,式中的xm、ym和x、y分别为参考模型与受控系统的状态和输出。只要误差向量e不为零,自适应机构就按减小偏差方向修正或更新控制律,以便使系统性能指标达到或接近希望的性能指标。具体实施时,可更新前置和反馈控制器参数,也可直接改变加到输入端的信号,前者称为参数自适应方案,后者称为信号综合自适应方案。图3-20并联模型参考自适应系统适当变更参数模型和可调系统的相对位置,便可得到其它结构形式的模型参考自适应控制系统,如图3-21所示。无论这些结构的形式有多大的差异,对它们进行分析与综合的方法都是基本相同的。图3-21其它形式的模型参考自适应系统

(a)并串联;(b)串并联;(c)串联在图3-20和图3-21中,自适应机构在实际中常采用计算机调节程序来实现。若采用神经网络来实现自适应控制,最常用也是最简单的系统结构如图3-22所示。图3-22神经网络自适应控制系统结构在图3-20中,当系统的输出和参考模型的输出有误差e存在时,修正神经网络的权值,直至误差e趋近于0或规定的允许误差范围,系统达到理想工作状态。3.6神经元自适应控制系统MATLAB仿真3.6.1

Kp变化时系统的阶跃响应仿真

【例3-6】一个系统的开环传递函数和反馈传递函数分别为:

现在采用比例调节器,即Gc=Kp,且Kp=0.8,1.1,1.4,…,2.9,分别求系统的阶跃响应,并绘出响应曲线。用下面一段程序可以方便地实现:

(1)程序(该程序在光盘中名为FLch3eg6)如下:

clear

T1=3;T2=0.5;Tf=0.08;%系统参数;

Kproc=5;

%系统开环增益

denG=conv([T11],[T21]);%前向通路传递函数的分母;

Gp=tf(Kproc,denG);%求前向通路传递函数;

H=tf(1,[Tf1]);%反馈通道传递函数;

t=[0:0.02:8];

%时间采样点向量;

forKp=0.8:0.3:2.9%系统比例调节系数Kp从小到大变化;yj=step(Wb,t);%求系统的阶跃响应yj

plot(t,yj)%绘制Kp从小到大变化时的系统的阶跃响应曲线;

ifishold~=1,holdon,end

end%增益从小到大变化结束;

holdoff

(2)程序运行结果。

程序运行结果绘制出系统比例调节系数Kp从小到大变化时系统的阶跃响应曲线,如图3-23所示。图3-23

Kp从小到大变化时的系统的阶跃响应曲线从图3-23系统的阶跃响应曲线可见,随着比例调节系数Kp增加,系统阶跃响应的超调量增加,但稳态误差减小。

程序运行后方便地求出了Kp=0.8到2.9各个不同比例调节系数时的闭环传递函数,下面给出Kp=0.8时的闭环传递函数:3.6.2系统的闭环零点z、极点p和增益k求取仿真

【例3-7】针对例3-6求取的闭环传递函数Wb(s),用下面一段程序可方便地求出该系统的闭环零点z、极点p和增益k;另外可求出系统的状态空间表达式的系数阵A、输入阵B、输出阵C和传递阵D。

(1)程序(该程序在光盘中名为FLch3eg7)如下:

clear

numG=[000.324];

%赋闭环传递函数分子系数

denG=[0.121.783.585];

%赋闭环传递函数分母系数

[z,p,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论