《神經(jīng)網(wǎng)絡(luò)》課件第3章_第1頁
《神經(jīng)網(wǎng)絡(luò)》課件第3章_第2頁
《神經(jīng)網(wǎng)絡(luò)》課件第3章_第3頁
《神經(jīng)網(wǎng)絡(luò)》課件第3章_第4頁
《神經(jīng)網(wǎng)絡(luò)》課件第3章_第5頁
已閱讀5頁,還剩153頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

3.1感知器算法及其應(yīng)用3.2

BP神經(jīng)網(wǎng)絡(luò)及其算例3.3其它前向網(wǎng)絡(luò)3.4神經(jīng)網(wǎng)絡(luò)模型辨識3.5神經(jīng)網(wǎng)絡(luò)自適應(yīng)控制系統(tǒng)結(jié)構(gòu)3.6神經(jīng)元自適應(yīng)控制系統(tǒng)MATLAB仿真3.7小結(jié)習(xí)題

本章首先介紹單層計(jì)算單元的網(wǎng)絡(luò):感知器,對其線性可分性進(jìn)行了討論,并用我們開發(fā)的三種MATLAB感知器分類程序詳細(xì)地闡述了分類方法;然后討論BP網(wǎng)絡(luò)的基本功能和特性,還分別介紹了GMDH網(wǎng)絡(luò)和RBF網(wǎng)絡(luò);接著闡述BP學(xué)習(xí)正弦、馬鞍曲線等非線性函數(shù)的程序;最后討論神經(jīng)網(wǎng)絡(luò)控制方法及單神經(jīng)元控制非線性系統(tǒng)的程序。3.1.1感知器的概念

感知器(Perceptron)是美國心理學(xué)家Rosenblatt于1957年提出來的,它是最基本的但具有學(xué)習(xí)功能的層狀網(wǎng)絡(luò)(LayedNetwork)。最初的感知器由三層組成,即S(Sensory)層、A(Association)層和R(Response)層,如圖3-1所示。S層和A層之間的耦合是固定的,只有A層和R層之間的耦合程度(即權(quán)值)可通過學(xué)習(xí)改變。若在感知器的A層和R層加上一層或多層隱單元,則構(gòu)成的多層感知器具有很強(qiáng)的處理功能,可用定理3.1來描述。3.1感知器算法及其應(yīng)用

定理3.1

如感知器隱層的節(jié)點(diǎn)可根據(jù)需求自由設(shè)置,那么用三層(不包括S層)的閾值網(wǎng)絡(luò)可以實(shí)現(xiàn)任意的二值邏輯函數(shù)。

圖3-1三層感知器應(yīng)注意,感知器學(xué)習(xí)方法在函數(shù)不是線性可分時得不出任意結(jié)果,另外也不能推廣到一般前向網(wǎng)絡(luò)中去。其主要原因是轉(zhuǎn)移函數(shù)為閾值函數(shù),為此,人們用可微函數(shù)如Sigmoid函數(shù)

來代替閾值函數(shù),然后采用梯度算法來修正權(quán)值。BP網(wǎng)絡(luò)就是采用這種算法的典型網(wǎng)絡(luò)。3.1.2感知器的局限性

這里只討論R層只有一個節(jié)點(diǎn)的感知器,它相當(dāng)于單個神經(jīng)元,簡化結(jié)構(gòu)如圖3-2所示。當(dāng)輸入的加權(quán)大于或等于閾值時,感知器的輸出為1,否則為0(或-1),因此它可以用于兩類模式分類。當(dāng)兩類模式可以用一個超平面分開時,權(quán)值w在學(xué)習(xí)中一定收斂,反之,不收斂。Minsky和Papert(1969)曾經(jīng)對感知器的分類能力作了嚴(yán)格的評價,并指出了其局限

性,例如,它連最常用的異或(XOR)邏輯都無法實(shí)現(xiàn)。圖3-2單神經(jīng)元結(jié)構(gòu)感知器模型下面來分析感知器為什么不能實(shí)現(xiàn)異或邏輯運(yùn)算。針對兩類模式分類,在圖3-2中單神經(jīng)元只有兩個輸入,且x1和x2的狀態(tài)分別為1或0,尋找合適的權(quán)值w1、w2和θ滿足下列不等式:(3-1)顯然不存在一組(w1,w2,θ)滿足上面不等式。異或邏輯運(yùn)算真值表見表3-1。表3-1中的4組樣本也可分為兩類,把它們標(biāo)在圖3-3所示的平面坐標(biāo)系中,任何一條直線也不可能把兩類樣本分開。若兩類樣本可以用直線、平面或超平面分開,則稱之為線性可分,否則,稱之為線性不可分。從圖3-3可見,異或邏輯運(yùn)算從幾何意義上講是線性不可分的。因此,感知器不能實(shí)現(xiàn)異或邏輯運(yùn)算。

表3-1“異或”真值表圖3-3異或線性不可分示意圖3.1.3感知器的線性可分性

對于線性可分的樣本,感知器可以實(shí)現(xiàn)對其分類。邏輯運(yùn)算與和或都可以看做線性可分的分類問題,下面討論單神經(jīng)元結(jié)構(gòu)感知器如何實(shí)現(xiàn)與邏輯運(yùn)算和或邏輯運(yùn)算。

與邏輯運(yùn)算的真值表如表3-2所示。表3-2“與”運(yùn)算真值表圖3-4與運(yùn)算分類示意圖從表3-2可看出,4組樣本的輸出有兩種狀態(tài),輸出狀態(tài)為“0”的有3組樣本,輸出狀態(tài)為“1”

的有1組樣本。對應(yīng)的與運(yùn)算分類示意圖如圖3-4所示。圖中“*”表示輸出為邏

輯“1”,“○”表示輸出為邏輯“0”,把“*”和“○”分開的直線稱為分類線。

現(xiàn)在采用圖3-2所示單神經(jīng)元感知器學(xué)習(xí)規(guī)則對與邏輯運(yùn)算進(jìn)行訓(xùn)練,令閾值θ=-0.3,則單神經(jīng)元感知器輸入網(wǎng)net為

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

該方程決定了圖3-4與運(yùn)算分類示意圖中的直線,但該直線并非唯一的,其權(quán)值可能有多組。或邏輯運(yùn)算的真值表如表3-3所示,表中4組樣本的輸出有兩種狀態(tài),輸出狀態(tài)為“0”的有1組樣本,輸出狀態(tài)為“1”的有3組樣本。同理可得到“或”運(yùn)算分類示意圖如圖3-5所示。不難驗(yàn)證,利用圖3-2單神經(jīng)元感知器、感知器輸入網(wǎng)net(式(3-2))及感知器的輸出y(式(3-3))同樣可以完成邏輯或分類,訓(xùn)練后得到連接權(quán)值w1=w2=0.4,從而可得到邏輯或的分類判別方程為

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

顯然,其權(quán)值也可能有多組,分類直線不唯一。表3-3或邏輯運(yùn)算真值表

圖3-5或運(yùn)算分類示意圖3.1.4感知器分類的MATLAB仿真

感知器權(quán)值的學(xué)習(xí)是通過給定的教師信號(即希望的輸出)按δ學(xué)習(xí)規(guī)則,即式(3-6)進(jìn)行的:

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

式中,w(k)為當(dāng)前的權(quán)值矩陣;yd(k)為教師信號;h為控制權(quán)

值修正速度的常數(shù)(0<h≤1);y(k)為感知器的輸出值;即(3-7)由于感知器一般用于線性可分樣本的分類,激發(fā)函數(shù)選為閾值型函數(shù),因而當(dāng)式(3-7)中的w0=1,x0=θ時,該式可寫成權(quán)值的初值一般取較小的非零隨機(jī)數(shù)。

【例3-1】采用圖3-2所示的單神經(jīng)元結(jié)構(gòu)感知器對兩類樣本進(jìn)行分類。X為輸入樣本,T為目標(biāo)向量。

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)根據(jù)題意,采用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陣的維數(shù);

[S,Q]=size(T);%S=1;Q=8為T陣的維數(shù);

%W=rands(S,R);%根據(jù)輸入樣本X和目標(biāo)向量T的維數(shù)產(chǎn)生隨機(jī)權(quán)值陣W的初值;

W=[-0.10.2];Wc=W′

%打印權(quán)值的初值;

C=rands(S,1);

%產(chǎn)生隨機(jī)閾值初值;

C

%打印隨機(jī)產(chǎn)生的閾值初值;

Y=W*X+C;

%計(jì)算感知器輸出;

forj=1:M

%循環(huán)開始

fori=1:8

%對感知器輸出分類;

ifY(1,i)>0;%求感知器閾值激發(fā)后的輸出,F(xiàn)表

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

F(1,i)=1;

else,F(1,i)=0;

end

end%一次分類循環(huán)結(jié)束;

ifall(F==T)%感知器的輸出F和目標(biāo)T不等時修正權(quán)值陣和閾值;

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;%存儲分類過程中的動態(tài)權(quán)值;

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

Y=W*X+C;

end%循環(huán)結(jié)束

Wz%打印分類過程中的動態(tài)權(quán)值;

%開始繪圖

plotpv(X,T);%繪點(diǎn)

plotpc(W,C);%繪分割線;

gridon

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

(2)感知器分類結(jié)果如圖3-6所示。圖3-6例3-1單神經(jīng)元感知器分類結(jié)果圖中,“o”代表目標(biāo)向量T中的“0”,“+”

代表目標(biāo)向量T中的“1”,橫軸x1表示樣本1,縱軸x2表示樣本。

(3)感知器的參數(shù)。

感知器的權(quán)值矩陣初值Wc、閾值初值C和分類過程中的動態(tài)權(quán)值矩陣Wz如下:

Wc=

-0.1000

0.2000

C=-0.0213

Wz=

0.50000.20000.70000.40000.9000

0.00000.60000.30000.90000.6000從程序看,分類循環(huán)次數(shù)M設(shè)置為20次;從打印出的分類過程中的動態(tài)權(quán)值矩陣Wz來看,Wz只有5組權(quán)值,說明程序只循環(huán)了5次就滿足了分類的誤差要求:

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

(4)程序分析。

①在程序中權(quán)值矩陣初值Wc和閾值初值C可以分別采用W=rands(S,R);Wc=W′和C=rands(S,1)產(chǎn)生隨機(jī)數(shù),也可以直接設(shè)置隨機(jī)小數(shù)。程序中Wc采用置隨[JP2]機(jī)小數(shù),而閾值

初值C采用產(chǎn)生隨機(jī)數(shù)指令實(shí)現(xiàn)。如果Wc和C均采用rands指令產(chǎn)生隨機(jī)數(shù)實(shí)現(xiàn),也可以得到類似圖3-6的分類結(jié)果,讀者不妨一試(可以修改光盤中的該程序)。②本例的樣本為隨機(jī)數(shù),無量綱,無規(guī)律。目標(biāo)向量T=[0,0,0,1,0,1,1,1]正好與樣本巧合,才得到了圖3-6所示的分類結(jié)果。如果目標(biāo)向量隨機(jī)給定,如T=[1,0,0,1,0,1,0,0],

則該程序無法分類,相當(dāng)于對線性不可分的樣本分類,單神經(jīng)元感知器無能為力(如例3-2)。

【例3-2】樣本矩陣同例3-1,隨機(jī)目標(biāo)向量T=[1,0,0,1,0,1,0,0]。

(1)根據(jù)題意,采用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];

%隨機(jī)目標(biāo)向量

M=20;

[R,Q]=size(X);%R=2;Q=8為X陣的維數(shù)

[S,Q]=size(T);%S=1;Q=8為T陣的維數(shù)W=[-0.10.2];

Wc=W′%打印權(quán)值的初值

C=rands(S,1);%產(chǎn)生隨機(jī)閾值初值

C%打印隨機(jī)產(chǎn)生的閾值初值

Y=W*X+C;%計(jì)算感知器輸出

forj=1:M%循環(huán)開始

fori=1:8%對感知器輸出分類

ifY(1,i)>0;

%求感知器閾值激發(fā)后的輸出,F表示式(3-8)中的y(k)F(1,i)=1;

else,F(1,i)=0;

end

end%一次分類循環(huán)結(jié)束

ifall(F==T)

%感知器的輸出F和目標(biāo)T不等時修正權(quán)值陣和閾值

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;%存儲分類過程中的動態(tài)權(quán)值

Y=W*X+C;

end%循環(huán)結(jié)束

Wz%打印分類過程中的動態(tài)權(quán)值

%開始繪圖[HJ]

plotpv(X,T);%繪點(diǎn)

plotpc(W,C);%繪分割線

gridon

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

(2)感知器分不開類的結(jié)果如圖3-7所示

圖3-7例3-2感知器分不開類的結(jié)果

(3)感知器的參數(shù)。感知器的權(quán)值矩陣初值Wc、閾值初值C和分類過程中的動態(tài)權(quán)值矩陣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可知,隨機(jī)目標(biāo)向量T與樣本X規(guī)律不同,單神經(jīng)元感知器不能分類。如果輸入樣本具有物理量綱,并對樣本從小到大或從大到小排列,目標(biāo)向量T要符合樣本的排列規(guī)律,即使目標(biāo)向量T在一定范圍內(nèi)變化,則分類問題無疑可實(shí)現(xiàn)。

【例3-3】有兩籃水果,其中有大小不同的火龍果

、蛇果、蓮霧等,水果的大小用其直徑(cm)來確定,其中X為輸入樣本,T為目標(biāo)向量。X=[x1

x2]T。兩籃水果的直徑參數(shù)分別為

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];

目標(biāo)向量為T=[0,0,0,0,0,0,1,1,1,1,1,1],采用單神經(jīng)元感知器對兩籃水果按大小分類解根據(jù)題意,直接無法分類。因此先對樣本從小到大排隊(duì),然后進(jìn)行分類。

(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,對其從小到大排隊(duì)

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從小到大排隊(duì)結(jié)果

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,對其從小到大排隊(duì)

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

%打印樣本從小到大排隊(duì)結(jié)果

M=1360%給M賦循環(huán)次數(shù)

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

[R,Q]=size(X);%R=2;Q=8為X陣的維數(shù)

[S,Q]=size(T);%S=1;Q=8為T陣的維數(shù)

%W=rands(S,R);%根據(jù)輸入樣本X和目標(biāo)向量T的維數(shù)產(chǎn)生隨機(jī)權(quán)值陣W的初值

W=[-0.10.2];Wc=W′

%打印權(quán)值的初值

C=rands(S,1);

%產(chǎn)生隨機(jī)閾值初值

C

%打印隨機(jī)產(chǎn)生的閾值初值

Y=W*X+C;

%計(jì)算感知器輸出

forj=1:M

%循環(huán)開始

fori=1:N

%對感知器輸出分類ifY(1,i)>0;[DW]%求感知器閾值激發(fā)后的輸出,F表示式(3-8)中的y(k)

F(1,i)=1;

else,F(1,i)=0;

end

end[DW]%一次分類循環(huán)結(jié)束

ifall(F==T)[DW]%感知器的輸出F和目標(biāo)T不等時修正權(quán)值陣和閾值

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]%存儲分類過程中的動態(tài)權(quán)值

Y=W*X+C;

end[DW]%循環(huán)結(jié)束

Wz[DW]%打印分類過程中的動態(tài)權(quán)值

[DW]%開始繪圖

plotpv(X,T);[DW]%繪點(diǎn)

plotpc(W,C);[DW]%繪分割線

gridon

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

(2)感知器對兩籃水果分類的結(jié)果如圖3-8所示。圖3-8感知器對兩籃水果分類的結(jié)果

(3)感知器的參數(shù)。

打印的樣本從小到大排隊(duì),其結(jié)果X、感知器的權(quán)值矩陣初值Wc、閾值初值C和分類過程中的動態(tài)權(quán)值矩陣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加以說明:

①源程序設(shè)定分類次數(shù)M=1360,但程序運(yùn)行到980次結(jié)束,因此只打印出805~810次和937~942次分類過程的動態(tài)權(quán)值陣。

②由于目標(biāo)向量為T=[0,0,0,0,0,0,1,1,1,1,1,1],所給的樣本直接無法分類,因此先對樣本從小到大排隊(duì)(因?yàn)樵谀繕?biāo)向量中,“1”代表大,“0”代表小),然后進(jìn)行分類。③如果目標(biāo)向量中“1”在前,“0”在后,例如T=[1,1,1,1,0,0,0,0,0,0,0,0],所給的樣本直接無法分類,此時應(yīng)先對樣本從大到小排隊(duì),然后進(jìn)行分類。另外,目標(biāo)函數(shù)中的“1”或“0”的個數(shù)可以根據(jù)需要變化。3.2

BP神經(jīng)網(wǎng)絡(luò)及其算例在多層感知器的基礎(chǔ)上增加誤差反向傳播信號,就可以處理非線性的信息,把這種網(wǎng)絡(luò)稱之為誤差反向傳播的(BackPropagation,BP)前向網(wǎng)絡(luò)。BP網(wǎng)絡(luò)可以用在系統(tǒng)模型辨識、

預(yù)測或控制中。BP網(wǎng)絡(luò)又稱為多層并行網(wǎng),其激發(fā)函數(shù)通常選用連續(xù)可導(dǎo)的Sigmoid函數(shù):(3-9)當(dāng)被辨識的模型特性或被控制的系統(tǒng)特性在正負(fù)區(qū)間變化時,激發(fā)函數(shù)選對稱的Sigmoid函數(shù),又稱雙曲函數(shù):(3-10)設(shè)三層BP網(wǎng)絡(luò)如圖3-9所示,輸入層有M個節(jié)點(diǎn),輸出層有L個節(jié)點(diǎn),而且隱層只有一層,具有N個節(jié)點(diǎn)。一般情況下N>M>L。設(shè)輸入層神經(jīng)節(jié)點(diǎn)的輸出為ai(i=1,2,…,M);隱

層節(jié)點(diǎn)的輸出為aj(j=1,2,…,N);輸出層神經(jīng)節(jié)點(diǎn)的輸出

為yk(k=1,2,…,L);神經(jīng)網(wǎng)絡(luò)的輸出向量為ym;期望的網(wǎng)絡(luò)輸出向量為yp。下面討論一階梯度優(yōu)化方法,即BP算法。圖3-9三層BP網(wǎng)絡(luò)

1.網(wǎng)絡(luò)各層神經(jīng)節(jié)點(diǎn)的輸入輸出關(guān)系

輸入層第i個節(jié)點(diǎn)的輸入為

(3-11)式中xi(i=1,2,…,M)為神經(jīng)網(wǎng)絡(luò)的輸入,θi為第i個節(jié)點(diǎn)的閾值。對應(yīng)的輸出為

(3-12)在BP網(wǎng)絡(luò)學(xué)習(xí)中,非線性特性的學(xué)習(xí)主要由隱層和輸出層來完成。一般令:

ai=xi(3-13)

隱層的第j個節(jié)點(diǎn)的輸入為

式中,分別為隱層的權(quán)值和第個節(jié)點(diǎn)閾值。對應(yīng)的輸出為(3-14)(3-15)輸出層第k個節(jié)點(diǎn)的輸入為

式中,wjk、θk分別為輸出層的權(quán)值和第k個節(jié)點(diǎn)的閾值。對應(yīng)的輸出為

(3-16)(3-17)

2.BP網(wǎng)絡(luò)權(quán)值調(diào)整規(guī)則

定義每一樣本的輸入輸出模式對應(yīng)的二次型誤差函數(shù)為

則系統(tǒng)的誤差代價函數(shù)為

式(3-19)中,P和L分別為樣本模式對數(shù)和網(wǎng)絡(luò)輸出節(jié)點(diǎn)數(shù)。問題是如何調(diào)整連接權(quán)值使誤差代價函數(shù)E最小。下面討論基于式(3-18)的一階梯度優(yōu)化方法,即最速下降法。

(1)當(dāng)計(jì)算輸出層節(jié)點(diǎn)時,apk=yk,網(wǎng)絡(luò)訓(xùn)練規(guī)則將使E在每個訓(xùn)練循環(huán)按梯度下降,則權(quán)系數(shù)修正公式為

為了簡便,式中略去了Ep的下標(biāo)。若netk指輸出層第k個節(jié)點(diǎn)的輸入網(wǎng)絡(luò);h為按梯度搜索的步長,0<h<1,則(3-20)(3-21)定義輸出層的反傳誤差信號為

對(3-17)式兩邊求導(dǎo),有

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

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

k=1,2,…,L

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

(2)當(dāng)計(jì)算隱層節(jié)點(diǎn)時,apk=aj,則權(quán)系數(shù)修正公式為

為了簡便,式中略去了Ep的下標(biāo),于是(3-25)(3-26)定義隱層的反傳誤差信號為

其中(3-27)(3-28)又由于f′(netj)=aj(1-aj),所以隱層的誤差反傳信號為

為了提高學(xué)習(xí)速率,在輸出層權(quán)值修正式(3-20)和隱層權(quán)值修正式(3-25)的訓(xùn)練規(guī)則上,再加一個勢態(tài)項(xiàng)(MomentumTerm),隱層權(quán)值和輸出層權(quán)值修正式為(3-29)(3-30)(3-31)式中h、a均為學(xué)習(xí)速率系數(shù)。h為各層按梯度搜索的步長,α是各層決定過去權(quán)值的變化對目前權(quán)值變化的影響的系數(shù),又稱為記憶因子。下面給出在系統(tǒng)模型辨識中BP反向傳播訓(xùn)練的步驟:

(1)置各層權(quán)值和閾值的初值,wjk、wij、θj為小的隨機(jī)數(shù)

陣;誤差代價函數(shù)ε賦值;設(shè)置循環(huán)次數(shù)R。

(2)提供訓(xùn)練用的學(xué)習(xí)資料:輸入矩陣xki(k=1,2,…,R;i=1,2,…,M),經(jīng)過參考模型后可得到目標(biāo)輸出ypk(或?qū)F(xiàn)場實(shí)際系統(tǒng)統(tǒng)計(jì)的輸出作為目標(biāo)信號),即教師信號;經(jīng)過神經(jīng)網(wǎng)絡(luò)后可得到y(tǒng)k,對于每組k進(jìn)行下面的第(3)~(5)步。

(3)按式(3-17)計(jì)算網(wǎng)絡(luò)輸出yk,按式(3-15)計(jì)算隱層單元的狀態(tài)aj。

(4)按式(3-24)計(jì)算訓(xùn)練輸出層誤差值δk,按式(3-29)

計(jì)算訓(xùn)練隱層的誤差值δj。

(5)按式(3-30)和式(3-31)分別修正隱層權(quán)值wij和輸出層權(quán)值wjk。

(6)每次經(jīng)過訓(xùn)練后,判斷指標(biāo)是否滿足精度要求,即判斷誤差代價函數(shù)式(3-18)是否達(dá)到E≤ε。若滿足要求則轉(zhuǎn)到第(7)步,否則再判斷是否到達(dá)設(shè)定的循環(huán)次數(shù)k=R。若循環(huán)次數(shù)等于R,轉(zhuǎn)到第(7)步,否則轉(zhuǎn)到第(2)步,重新讀取一組樣本,繼續(xù)循環(huán)訓(xùn)練網(wǎng)絡(luò)。

(7)停止。

BP模型把一組樣本的I/O問題變成了一個非線性的優(yōu)化問題,使用了優(yōu)化中最普通的梯度下降法,用迭代運(yùn)算求解權(quán)系數(shù),相應(yīng)于學(xué)習(xí)記憶問題。加入隱節(jié)點(diǎn)使優(yōu)化問題的可調(diào)參數(shù)增加,從而可得到更精確的解。如把這種神經(jīng)網(wǎng)絡(luò)看做從輸入到輸出的映射,則這種映射是一個高度非線性的映射。如輸入節(jié)點(diǎn)個數(shù)為m,輸出節(jié)點(diǎn)個數(shù)為L,則網(wǎng)絡(luò)是從Rm→RL的映射,即

F:Rm→RL,Y=F(X)(3-32)式中,X、Y分別為樣本集合和輸出集合。

【例3-4】具有誤差反傳的“2-3-2”型BP神經(jīng)網(wǎng)絡(luò)如圖3-10所示,網(wǎng)絡(luò)的激發(fā)函數(shù)為Sigmoid函數(shù),試計(jì)算神經(jīng)網(wǎng)絡(luò)輸出層的誤差反傳信號δk和隱層的誤差反傳信號δj。

解設(shè)該BP神經(jīng)網(wǎng)絡(luò)的隱層輸出為oj,輸出層的輸出

yk=[y1

y2]T,教師信號dk=[d1

d2]T。神經(jīng)網(wǎng)絡(luò)輸出層的誤差反傳信號δk為

(3-33)式中,神經(jīng)網(wǎng)絡(luò)的輸出及輸出節(jié)點(diǎn)的輸入網(wǎng)分別為:圖3-10具有誤差反傳的“2-3-2”型神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)式中,輸出層的權(quán)值

為網(wǎng)絡(luò)輸出層的權(quán)值,wjk中的第一行對應(yīng)神經(jīng)網(wǎng)絡(luò)隱層三個神經(jīng)節(jié)點(diǎn)的輸出到輸出層的第一個節(jié)點(diǎn)之間的權(quán)值,其第二行對應(yīng)神經(jīng)網(wǎng)絡(luò)隱層三個神經(jīng)節(jié)點(diǎn)的輸出到輸出層的第二個節(jié)點(diǎn)之間的權(quán)值。隱層的誤差反傳信號δj為其中神經(jīng)網(wǎng)絡(luò)的隱層輸出及隱層節(jié)點(diǎn)的輸入網(wǎng)分別為:式中,隱層的權(quán)值例3-4所給的神經(jīng)網(wǎng)絡(luò)為“2-3-2”型BP神經(jīng)網(wǎng)絡(luò),從式(3-34)可看出,所求得的隱層的誤差反傳信號δj為三維列向量;從式(3-33)可看出,所求得的輸出層的誤差反傳信號δk為二維列向量。3.3其它前向網(wǎng)絡(luò)

批數(shù)據(jù)處理(TheGroupMethodofDataHandling,GMDH)模型是由Ivakhnenko(1971)為預(yù)報海洋河流中的魚群而提出的模型。它成功地應(yīng)用于非線性系統(tǒng)的建模和控制中,如超音速飛機(jī)的控制系統(tǒng)(Shrier等,1987)、電力系統(tǒng)的負(fù)荷預(yù)測(Sagara和Murata,1988)等。由于GMDH模型具有前向網(wǎng)絡(luò)的結(jié)構(gòu),因此,人們將它作為前向網(wǎng)絡(luò)的一種,且稱之為多項(xiàng)網(wǎng)絡(luò)。圖3-11為一典型的GMDH網(wǎng)絡(luò),它有4個輸入節(jié)點(diǎn)、一個(單)輸出節(jié)點(diǎn)。其輸入節(jié)點(diǎn)只傳遞輸入信號到中間隱節(jié)點(diǎn),每一個隱節(jié)點(diǎn)和輸出節(jié)點(diǎn)正好有兩個輸入信號,因此,單輸出節(jié)點(diǎn)的前一級肯定只有兩個隱節(jié)點(diǎn)。圖3-11

GMDH的典型網(wǎng)絡(luò)結(jié)構(gòu)除了輸入層外,每個處理單元具有圖3-12所示的形式,其輸入輸出關(guān)系表示為

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中的處理單元的輸出為兩個輸入量的二次多項(xiàng)式,因此網(wǎng)的每一層使得多項(xiàng)式的次數(shù)增大2階,其結(jié)果是網(wǎng)絡(luò)的

輸出y可以表示成輸入的高階(2k階)多項(xiàng)式,其中k是網(wǎng)絡(luò)的層數(shù)(不含輸入層)。這樣的多項(xiàng)式稱為Ivakhnenko多項(xiàng)式。

圖3-12

GMDH的處理單元下面將討論如何決定GMDH網(wǎng)絡(luò)的每一隱層及其處理單元。首先在輸入層后加上一層中間級,決定其處理單元的數(shù)目和每一個處理單元的多項(xiàng)式。同樣在中間層后再增加一層中間層,作相同的處理,直到網(wǎng)絡(luò)的輸出層。每一層的處理內(nèi)容和方法都相同。處理過程如下:設(shè)第k-1層有Mk-1個處理單元,那么,在決定第k層時,首先應(yīng)有組合的處理單元,即第k-1層的每兩個輸出的組合都構(gòu)成第k層處理單元的輸入。對于給定的學(xué)習(xí)樣本(x1

,y1),(x2,y2),…,(xi,yi),先計(jì)算出第k-1層的輸出zk-1,然后,利用最小二乘法,估計(jì)出(3-34)式中的多項(xiàng)式的參數(shù)(ak,l,bk,l,…,fk,l)。這樣的學(xué)習(xí)方法使得每一層的輸出都盡可能地接近于所希望的輸出。必須注意的是,用于每一層處理單元學(xué)習(xí)的樣本必須和前面用過的學(xué)習(xí)樣本不同。當(dāng)同層的每個處理單元的多項(xiàng)式系統(tǒng)都確定后,用新的樣本來評價每一個處理單元的輸出性能。最簡單的方法是計(jì)算在新樣本下每個處理單元的輸出誤差的均方差。通常情況下,各個處理單元的均方差會大不相同,因此,可刪除具有較大均方差的處理單元。決定均方差的大小無統(tǒng)一標(biāo)準(zhǔn),但可以根據(jù)和最好處理單元的均方差的比值來決定一閾值,然后刪除那些高于該閾值的處理單元。通過刪除一些性能較差的處理單元,可保證每層處理單元的數(shù)目不會因前層輸出的組合而急劇增多。決定最佳層數(shù)的準(zhǔn)則如圖3-13所示。起始增大層數(shù)時,每層最好的處理單元的均方差E會逐漸變小。當(dāng)E達(dá)到最小值后,再增加層數(shù)時,E會增大。因此,對于E取最小值Emin的層數(shù)是最佳的,此時取該層的最好處理單元作為輸出節(jié)點(diǎn),且刪除同層的其它處理單元和前一層中不和輸出節(jié)點(diǎn)相關(guān)的所有處理單元,從而得到了結(jié)構(gòu)簡單但性能最好的GMDH網(wǎng)絡(luò)。GMDH網(wǎng)絡(luò)提供了擬合一組樣本的最佳多項(xiàng)式,但其計(jì)算工作量很大。圖3-13

GMDH網(wǎng)絡(luò)中間層的層數(shù)和最好單元的均方差關(guān)系徑向基函數(shù)RBF(RadialBasisFunction)網(wǎng)絡(luò)由三層組成,其結(jié)構(gòu)如圖3-14所示。輸入層節(jié)點(diǎn)只傳遞輸入信號到隱層,隱層節(jié)點(diǎn)(即稱RBF節(jié)點(diǎn))由像高斯核函數(shù)那樣的輻射狀作用函數(shù)構(gòu)成。而輸出節(jié)點(diǎn)通常是簡單的線性函數(shù)(Powell;Hush和Horne,1993)。圖3-14

RBF網(wǎng)絡(luò)

隱層節(jié)點(diǎn)的作用函數(shù)(核函數(shù))對輸入信號將在局部產(chǎn)生響應(yīng),換句話說,當(dāng)輸入信號靠近核函數(shù)的中央范圍時,隱節(jié)點(diǎn)將產(chǎn)生較大的輸出,為此,RBF網(wǎng)絡(luò)有時也稱為局部感知場網(wǎng)絡(luò)(Moody和Darken,1988,1989)。

雖然有各種各樣的核函數(shù),但最常用的是高斯核函數(shù)(GaussianKernelFunction),即隱層的激發(fā)函數(shù)為高斯函數(shù),網(wǎng)絡(luò)輸出為隱層輸出的集合。從理論上看,RBF網(wǎng)絡(luò)和BP網(wǎng)絡(luò)一樣可以近似任何連續(xù)非線性函數(shù)(Hartman,Keelerk和Kowalski,1990;Lee和KIL,1991)。兩者的主要區(qū)別在于各使用不同的激發(fā)函數(shù),BP網(wǎng)絡(luò)的隱節(jié)點(diǎn)使用Sigmoid函數(shù),其函數(shù)值在輸入空間中無限大的范圍內(nèi)為非零值,而RBF網(wǎng)絡(luò)的激發(fā)函數(shù)則是局部的RBF網(wǎng)絡(luò)的算法及其應(yīng)用將在第8章詳細(xì)討論。3.4神經(jīng)網(wǎng)絡(luò)模型辨識3.4.1神經(jīng)網(wǎng)絡(luò)模型辨識系統(tǒng)結(jié)構(gòu)

模型辨識中有正向建模和逆向建模的結(jié)構(gòu),正向建模中又分為串-并辨識結(jié)構(gòu)及并聯(lián)辨識結(jié)構(gòu);逆向建模分為直接逆向辨識結(jié)構(gòu)和特殊逆向辨識結(jié)構(gòu)。為了在模型辨識中能選準(zhǔn)結(jié)構(gòu),下面分析它們各自的優(yōu)缺點(diǎn)。在系統(tǒng)辨識中有一個重要問題,是系統(tǒng)的可辨識性,即給定一個特殊的模型結(jié)構(gòu),被辨識的系統(tǒng)是否可以在該結(jié)構(gòu)內(nèi)適當(dāng)?shù)乇槐硎境鰜?。因此,必須預(yù)先給予假設(shè)(如果采用神經(jīng)網(wǎng)絡(luò)方法對系統(tǒng)進(jìn)行辨識),即所有被研究的系統(tǒng)都屬于所選神經(jīng)網(wǎng)絡(luò)可以表示的一類。根據(jù)這個假設(shè),對同樣的初始條件和任何特定輸入,模型和系統(tǒng)應(yīng)產(chǎn)生同樣的輸出。因此,系統(tǒng)辨識就是指根據(jù)模擬系統(tǒng)過程的輸出誤差,利用網(wǎng)絡(luò)的算法調(diào)節(jié)神經(jīng)元網(wǎng)絡(luò)的參數(shù),直到模型參數(shù)收斂到它們的期望值。如果神經(jīng)元網(wǎng)絡(luò)訓(xùn)練過程要表示系統(tǒng)的正向動態(tài),則這種建模方法就叫做正向辨識建模,其結(jié)構(gòu)示于圖3-15。圖3-15正向辨識建模(串-并辨識)結(jié)構(gòu)圖中,TDL代表具有抽頭的延時線,神經(jīng)元網(wǎng)絡(luò)與過程平行,系統(tǒng)與神經(jīng)網(wǎng)絡(luò)的預(yù)估誤差用作網(wǎng)絡(luò)的訓(xùn)練信號,這種結(jié)構(gòu)也稱為串-并辨識模型。學(xué)習(xí)的方法是有監(jiān)督的。教師信號(即系統(tǒng)的輸出)直接向神經(jīng)網(wǎng)絡(luò)提供目標(biāo)值,通過網(wǎng)絡(luò)將預(yù)估誤差直接反傳進(jìn)行訓(xùn)練。假定所被辨識系統(tǒng)具有以下形式:(3-36)式(3-36)是非線性的離散時間差分方程,yp(k+1)代表在時間k+1時刻系統(tǒng)的輸出。它是給神經(jīng)網(wǎng)絡(luò)提供的教師信號,取決于過去n個輸出值、過去m個輸入值。這里只考慮了系統(tǒng)的動態(tài)部分,還沒有計(jì)入系統(tǒng)所承受的擾動。為了系統(tǒng)建模,可將神經(jīng)網(wǎng)絡(luò)的輸入輸出結(jié)構(gòu)選擇成與要建模的系統(tǒng)相同。用ym表示網(wǎng)絡(luò)的輸出,則神經(jīng)網(wǎng)絡(luò)模型為(3-37)式中,

表示網(wǎng)絡(luò)輸入輸出的映射。注意輸入到網(wǎng)絡(luò)的量包括了實(shí)際系統(tǒng)的過去值。很明顯,在這個結(jié)構(gòu)中利用神經(jīng)網(wǎng)絡(luò)輸入,再加入系統(tǒng)的過去值,擴(kuò)大了輸入空間。這實(shí)質(zhì)上完成了基于當(dāng)前最新觀測數(shù)據(jù)對于系統(tǒng)輸出的一步超前預(yù)報,所以稱為一步預(yù)報模型。在這種串-并聯(lián)辨識模型的建立過程中,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練等同于靜態(tài)非線性函數(shù)的逼近問題。因?yàn)橄到y(tǒng)是輸入有界和輸出有界的,所以在辨識過程中所用的信息也是有界的。而且在模型(神經(jīng)網(wǎng)絡(luò))中不存在反饋,因此可以保證辨識系統(tǒng)的穩(wěn)定性。用這種方法得到的模型,通過自身輸出反饋構(gòu)成一個系統(tǒng),也可以預(yù)測被測對象未來的輸出,但只有當(dāng)對象具有較強(qiáng)的收縮特性時,才能保證模型和系統(tǒng)之間的誤差趨近于零。如果將圖3-15所示神經(jīng)網(wǎng)絡(luò)模型中的輸入yp換成ym,模型的輸入是由過程的輸入和模型自身的輸出反饋構(gòu)成的,這就是正向建模的并聯(lián)連接結(jié)構(gòu),如圖3-16所示。其模型的輸出可寫成式(3-38)的形式:(3-38)式中,

表示網(wǎng)絡(luò)輸入輸出的映射。在這種情況下,輸入到網(wǎng)絡(luò)的量包括了神經(jīng)網(wǎng)絡(luò)模型的過去值。雖然神經(jīng)網(wǎng)絡(luò)模型內(nèi)部還是靜態(tài)函數(shù),但整體上構(gòu)成一個動態(tài)系統(tǒng)。在訓(xùn)練時通過對網(wǎng)絡(luò)的參數(shù)調(diào)整,使模型動態(tài)映射到輸出,從而逼近被測系統(tǒng)的非線性變化軌線。這種并聯(lián)辨識的模型,在輸入作用下,可以得到更好的輸出預(yù)測。在這種意義下,我們稱該模型為常時段預(yù)測模型。圖3-16是一種常用的正向建模結(jié)構(gòu)。圖3-16正向建模(并聯(lián)辨識)結(jié)構(gòu)除了上述正向建模(串-并辨識、并聯(lián)辨識)結(jié)構(gòu)外,還有逆向建模結(jié)構(gòu)。在逆向建模中,有直接逆向辨識和特殊逆向辨識結(jié)構(gòu)。直接逆向辨識建模結(jié)構(gòu)如圖3-17所示。由圖可見,待辨識系統(tǒng)的輸出作為神經(jīng)網(wǎng)絡(luò)(NeuralNetwork,NN)的輸入,NN輸出與系統(tǒng)的輸入比較,用其誤差來訓(xùn)練NN,因而NN將通過學(xué)習(xí)建立系統(tǒng)的逆模型。由于這種學(xué)習(xí)不是目標(biāo)導(dǎo)向的,在實(shí)際工作中,系統(tǒng)的輸入u(k)通常是經(jīng)過調(diào)節(jié)器得到的,不可能預(yù)先定義,因此應(yīng)采用圖3-18所示的雙網(wǎng)辨識結(jié)構(gòu)。對于被辨識系統(tǒng),網(wǎng)絡(luò)NN1和NN2的權(quán)值同時調(diào)節(jié),e2=u-v是兩個網(wǎng)絡(luò)的訓(xùn)練信號。當(dāng)e1接近0時,網(wǎng)絡(luò)NN1和NN2將是系統(tǒng)逆模型的一個好的近似。這里要求NN1和NN2是相同結(jié)構(gòu)的網(wǎng)絡(luò),即網(wǎng)絡(luò)的輸入層、隱層和輸出層神經(jīng)元節(jié)點(diǎn)的數(shù)目相同。當(dāng)網(wǎng)絡(luò)訓(xùn)練好以后,網(wǎng)絡(luò)NN1相當(dāng)于一個前饋控制器,使系統(tǒng)的輸出y(k)和期望值接近一致,即e1接近于0,網(wǎng)絡(luò)NN2是系統(tǒng)的逆模型。這種雙網(wǎng)結(jié)構(gòu)又稱為神經(jīng)網(wǎng)絡(luò)的直接逆控制。圖3-17直接逆向辨識建模結(jié)構(gòu)圖3-18雙網(wǎng)辨識結(jié)構(gòu)(直接逆控制)另外,如果把圖3-18所示的雙網(wǎng)辨識結(jié)構(gòu)稍作改動,即用NN1的輸出u(k)作NN2的輸入,NN2的輸出和系統(tǒng)的輸出y(k)比較之差來調(diào)節(jié)NN2的權(quán)值;用系統(tǒng)的輸出y(k)和系統(tǒng)輸出期望值yd(k)之差來調(diào)整NN1的權(quán)值。這樣的網(wǎng)絡(luò)結(jié)構(gòu)被稱為正-逆建模結(jié)構(gòu),NN2為逆向辨識建模網(wǎng)絡(luò),則NN1是逆控制器。3.4.2神經(jīng)網(wǎng)絡(luò)模型辨識MATLAB仿真

【例3-5】采用“3-6-1型”BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)非線性正弦信號,其中為正弦信號的頻率,k為采樣次數(shù)。

解由于利用MATLAB的M文件開發(fā)程序時不能寫腳碼,因此將隱層權(quán)值矩陣寫成wij,輸出層權(quán)值寫成wjk,并令神經(jīng)網(wǎng)絡(luò)的輸入為xj,神經(jīng)網(wǎng)絡(luò)的輸出為y。據(jù)題意知,隱層權(quán)值矩陣wij為3×6維矩陣;輸出層權(quán)值矩陣wjk為6×1維矩形;xj為神經(jīng)網(wǎng)絡(luò)的輸入向量。由于在運(yùn)算中有wij×xj,xj是三維向量,只有將原矩陣wij轉(zhuǎn)置才能滿足,因此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。另外,學(xué)習(xí)非線性正弦信號,必須采用雙曲函數(shù)y=tanh(x)為激發(fā)函數(shù)。(1)編程如下(在光盤中該開發(fā)程序名為FLch3eg5):

%初始化,給各層權(quán)值和閾值賦初值、賦學(xué)習(xí)因子值、學(xué)習(xí)次數(shù)等;

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];%給輸出層權(quán)值賦初值,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];%網(wǎng)絡(luò)的輸入;

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;%賦學(xué)習(xí)因子值;

M=120;%賦程序循環(huán)次數(shù);%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

form=1:M%采樣次數(shù)m循環(huán)1開始;

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

yp=yn;

fork=1:4%點(diǎn)循環(huán)2開始

fori=1:6%calculatingoutputofthehiddenlayer,循環(huán)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%循環(huán)3結(jié)束,算出了6個隱層節(jié)點(diǎn)的輸出;

fori=1:6%calculatingoutputoftheoutputlayer,循環(huán)4開始

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

end%循環(huán)4結(jié)束,

yi=yb+p1;y=tanh(yi);%算出了1個輸出層節(jié)點(diǎn)的輸出;

%calculatingerrorvaluebetweenaimandpracticevalue

e0=e1;%誤差遞推暫存;

e1=e2;

e2=[(yp-y).^2]/2;%計(jì)算學(xué)習(xí)均方誤差;

fori=1:6%循環(huán)5開始,修正隱層權(quán)值;

d1=[1-o1j(:,i)]*dj2*w23jk(i,:);%計(jì)算隱層誤差反傳信號;

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

q2j=q1j(:,i)+.16*do+.01*qw;%修正的隱層閾值;

q3j(:,i)=q2j;

forj=1:3 %循環(huán)6開始;

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

w12ij=w11ij(i,j)+a1*do+a2*dw;%計(jì)算修正的隱層權(quán)值w12ij=wij(k);

w13ij(i,j)=w12ij;%將修正后的隱層權(quán)值w12ij暫存在w13ij(i,j)

end%循環(huán)6結(jié)束;

end%循環(huán)5結(jié)束;w10ij=w11ij;w11ij=w13ij;%遞推暫存隱層權(quán)值;

q0j=q1j;q1j=q3j;

%遞推暫存隱層閾值;

fori=1:6

%循環(huán)7開始,修正輸出

層權(quán)值和閾值;

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

%計(jì)算輸出層誤差反傳信號

%d2j;

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

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

w23jk(i,:)=w22jk;%將修正后的輸出層權(quán)值w22jk暫存在w23jk(i,:)w20jk=w21jk;w21jk=w23jk;

%遞推暫存輸出層權(quán)值;

ph=p1-p0;

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

%修正的輸出層閾值;

p0=p1;p1=p2;

ife2<=.005%循環(huán)8開始,判斷學(xué)習(xí)誤差到否?;

break;else,

end%循環(huán)8結(jié)束;

end%循環(huán)2結(jié)束;yom(m)=y;

%存儲神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程中的輸出;

e3(m)=e2;

%存儲學(xué)習(xí)過程中的誤差;

end

%循環(huán)1結(jié)束;

w13ij

%打印神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)結(jié)果的隱層權(quán)值;

w23jk

%打印神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)結(jié)果的輸出層權(quán)值;

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')%圖標(biāo)注

(2)程序運(yùn)行結(jié)果。運(yùn)行上述程序可以得到對正弦信號

的學(xué)習(xí)結(jié)果,如圖3-19所示。圖3-19

BP網(wǎng)絡(luò)對正弦信號的學(xué)習(xí)結(jié)果在圖3-19中,第一幅圖曲線ypp代表樣本正弦信號;第二幅圖帶×的曲線yom代表BP神經(jīng)網(wǎng)絡(luò)的輸出;第三幅圖曲線e3代表神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程中的誤差,可見誤差在1%之內(nèi);第四幅圖ypp&yom表示樣本ypp和神經(jīng)網(wǎng)絡(luò)的輸出yom兩條曲線繪在同一幅圖中,“-”表示樣本,“×”表示神經(jīng)網(wǎng)絡(luò)的輸出。

(3)程序的參數(shù)。下面是BP網(wǎng)絡(luò)的權(quán)值、閾值的初值,以及程序?qū)φ倚盘枌W(xué)習(xí)結(jié)果的權(quán)值和閾值的參數(shù):

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分別為神經(jīng)網(wǎng)絡(luò)對正弦信號的學(xué)習(xí)結(jié)果的隱層和輸出層權(quán)值。在例3-5程序中,采用了對各層閾值的算法,其中:“q2j=q1j(:,i)+.16*do+.01*qw;”為修正的隱層閾值計(jì)算式;“p2=p1+.6*(yp-y)+.1*ph;”為修正的輸出層閾值計(jì)算式。實(shí)際上在神經(jīng)網(wǎng)絡(luò)用于學(xué)習(xí)(辨識)或控制時,網(wǎng)絡(luò)的閾值可以有針對性地修正或者不修正。但該程序若不修正閾值,修正各層權(quán)值的其它學(xué)習(xí)因子必須重新訓(xùn)練,否則該BP神經(jīng)網(wǎng)絡(luò)將無法跟蹤非線性的正弦信號。3.5神經(jīng)網(wǎng)絡(luò)自適應(yīng)控制系統(tǒng)結(jié)構(gòu)自適應(yīng)控制系統(tǒng)是一種高性能復(fù)雜控制系統(tǒng)。它既不同于一般的反饋控制系統(tǒng),也不同于確定性最優(yōu)控制系統(tǒng)和隨機(jī)最優(yōu)控制系統(tǒng)。要闡明自適應(yīng)控制系統(tǒng)的概念,必須明確它與最優(yōu)控制系統(tǒng)的區(qū)別。這種區(qū)別主要在于所研究的對象不同,要解決的問題不同。模型參考自適應(yīng)系統(tǒng)是最常用的一種自適應(yīng)系統(tǒng),它是由參考模型、可調(diào)系統(tǒng)和自適應(yīng)機(jī)構(gòu)三個部分組成的,常見的一種結(jié)構(gòu)為并聯(lián)模型參考自適應(yīng)系統(tǒng),如圖3-20所示。圖中可調(diào)系統(tǒng)包括受控過程、前置控制器和反饋控制器。對可調(diào)系統(tǒng)的工作要求,如時域指標(biāo)δp%、ξ、ts或通頻帶等,可由參考模型直接決定。因此,參考模型實(shí)際上是一個理想的控制系統(tǒng),這就是模型參考自適應(yīng)系統(tǒng)不同于其它形式的控制,它無需進(jìn)行性能指標(biāo)變換。參考模型與可調(diào)系統(tǒng)兩者性能之間的一致性由自適應(yīng)機(jī)構(gòu)保證,所以,自適應(yīng)機(jī)構(gòu)的設(shè)計(jì)十分關(guān)鍵,性能一致性程度由狀態(tài)向量

ex=xm-x(3-39)或輸出誤差向量

ey=ym-y(3-40)

來度量,式中的xm、ym和x、y分別為參考模型與受控系統(tǒng)的狀態(tài)和輸出。只要誤差向量e不為零,自適應(yīng)機(jī)構(gòu)就按減小偏差方向修正或更新控制律,以便使系統(tǒng)性能指標(biāo)達(dá)到或接近希望的性能指標(biāo)。具體實(shí)施時,可更新前置和反饋控制器參數(shù),也可直接改變加到輸入端的信號,前者稱為參數(shù)自適應(yīng)方案,后者稱為信號綜合自適應(yīng)方案。圖3-20并聯(lián)模型參考自適應(yīng)系統(tǒng)適當(dāng)變更參數(shù)模型和可調(diào)系統(tǒng)的相對位置,便可得到其它結(jié)構(gòu)形式的模型參考自適應(yīng)控制系統(tǒng),如圖3-21所示。無論這些結(jié)構(gòu)的形式有多大的差異,對它們進(jìn)行分析與綜合的方法都是基本相同的。圖3-21其它形式的模型參考自適應(yīng)系統(tǒng)

(a)并串聯(lián);(b)串并聯(lián);(c)串聯(lián)在圖3-20和圖3-21中,自適應(yīng)機(jī)構(gòu)在實(shí)際中常采用計(jì)算機(jī)調(diào)節(jié)程序來實(shí)現(xiàn)。若采用神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)自適應(yīng)控制,最常用也是最簡單的系統(tǒng)結(jié)構(gòu)如圖3-22所示。圖3-22神經(jīng)網(wǎng)絡(luò)自適應(yīng)控制系統(tǒng)結(jié)構(gòu)在圖3-20中,當(dāng)系統(tǒng)的輸出和參考模型的輸出有誤差e存在時,修正神經(jīng)網(wǎng)絡(luò)的權(quán)值,直至誤差e趨近于0或規(guī)定的允許誤差范圍,系統(tǒng)達(dá)到理想工作狀態(tài)。3.6神經(jīng)元自適應(yīng)控制系統(tǒng)MATLAB仿真3.6.1

Kp變化時系統(tǒng)的階躍響應(yīng)仿真

【例3-6】一個系統(tǒng)的開環(huán)傳遞函數(shù)和反饋傳遞函數(shù)分別為:

現(xiàn)在采用比例調(diào)節(jié)器,即Gc=Kp,且Kp=0.8,1.1,1.4,…,2.9,分別求系統(tǒng)的階躍響應(yīng),并繪出響應(yīng)曲線。用下面一段程序可以方便地實(shí)現(xiàn):

(1)程序(該程序在光盤中名為FLch3eg6)如下:

clear

T1=3;T2=0.5;Tf=0.08;%系統(tǒng)參數(shù);

Kproc=5;

%系統(tǒng)開環(huán)增益

denG=conv([T11],[T21]);%前向通路傳遞函數(shù)的分母;

Gp=tf(Kproc,denG);%求前向通路傳遞函數(shù);

H=tf(1,[Tf1]);%反饋通道傳遞函數(shù);

t=[0:0.02:8];

%時間采樣點(diǎn)向量;

forKp=0.8:0.3:2.9%系統(tǒng)比例調(diào)節(jié)系數(shù)Kp從小到大變化;yj=step(Wb,t);%求系統(tǒng)的階躍響應(yīng)yj

plot(t,yj)%繪制Kp從小到大變化時的系統(tǒng)的階躍響應(yīng)曲線;

ifishold~=1,holdon,end

end%增益從小到大變化結(jié)束;

holdoff

(2)程序運(yùn)行結(jié)果。

程序運(yùn)行結(jié)果繪制出系統(tǒng)比例調(diào)節(jié)系數(shù)Kp從小到大變化時系統(tǒng)的階躍響應(yīng)曲線,如圖3-23所示。圖3-23

Kp從小到大變化時的系統(tǒng)的階躍響應(yīng)曲線從圖3-23系統(tǒng)的階躍響應(yīng)曲線可見,隨著比例調(diào)節(jié)系數(shù)Kp增加,系統(tǒng)階躍響應(yīng)的超調(diào)量增加,但穩(wěn)態(tài)誤差減小。

程序運(yùn)行后方便地求出了Kp=0.8到2.9各個不同比例調(diào)節(jié)系數(shù)時的閉環(huán)傳遞函數(shù),下面給出Kp=0.8時的閉環(huán)傳遞函數(shù):3.6.2系統(tǒng)的閉環(huán)零點(diǎn)z、極點(diǎn)p和增益k求取仿真

【例3-7】針對例3-6求取的閉環(huán)傳遞函數(shù)Wb(s),用下面一段程序可方便地求出該系統(tǒng)的閉環(huán)零點(diǎn)z、極點(diǎn)p和增益k;另外可求出系統(tǒng)的狀態(tài)空間表達(dá)式的系數(shù)陣A、輸入陣B、輸出陣C和傳遞陣D。

(1)程序(該程序在光盤中名為FLch3eg7)如下:

clear

numG=[000.324];

%賦閉環(huán)傳遞函數(shù)分子系數(shù)

denG=[0.121.783.585];

%賦閉環(huán)傳遞函數(shù)分母系數(shù)

[z,p,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論