[摘 要]為了滿足人工智能教學(xué)發(fā)展需要,在教學(xué)方面需要加強(qiáng)對相關(guān)課程案例建設(shè)的研究。文章以模糊神經(jīng)網(wǎng)絡(luò)的教學(xué)為例,介紹模糊神經(jīng)網(wǎng)絡(luò)的算法和設(shè)計(jì)步驟,并通過Matlab仿真分析與模式識別問題相結(jié)合來開展教學(xué),深化學(xué)生對模糊神經(jīng)網(wǎng)絡(luò)算法的理解,提升神經(jīng)網(wǎng)絡(luò)課程教學(xué)案例建設(shè)水平,使學(xué)生具備一定的分析和解決問題的能力。
[關(guān)鍵詞]模糊神經(jīng)網(wǎng)絡(luò);案例教學(xué);模式識別;教學(xué)改革
[中圖分類號] G640 [文獻(xiàn)標(biāo)識碼] A [文章編號] 2095-3437(2022)12-0093-04
案例教學(xué)是通過選擇典型的教學(xué)案例來進(jìn)行教學(xué)的一種模式。在人工智能的教學(xué)中,通過對典型算法的介紹及案例分析,可有效地激發(fā)學(xué)生的學(xué)習(xí)興趣,并提高學(xué)生分析問題的能力。案例教學(xué)法是提高教學(xué)效果的有效途徑,已成為一種重要的教學(xué)手段[1-2]。在人工智能的教學(xué)中,案例教學(xué)的研究還處于起步階段。在神經(jīng)網(wǎng)絡(luò)的課程教學(xué)中,如何將模糊神經(jīng)網(wǎng)絡(luò)與實(shí)際案例相結(jié)合以解決模式識別問題,并通過設(shè)計(jì)教學(xué)案例來展開教學(xué),是一個值得研究的、有意義的教學(xué)問題。
一、案例教學(xué)設(shè)計(jì)
(一)模糊神經(jīng)網(wǎng)絡(luò)基本知識
在模糊系統(tǒng)中,模糊集、隸屬度函數(shù)和模糊規(guī)則的設(shè)計(jì)是建立在經(jīng)驗(yàn)知識基礎(chǔ)上的,這種設(shè)計(jì)方法存在很大的主觀性。將學(xué)習(xí)機(jī)制引入模糊系統(tǒng)中,不斷修改和完善隸屬函數(shù)和模糊規(guī)則,是模糊系統(tǒng)的發(fā)展方向。神經(jīng)網(wǎng)絡(luò)與模糊系統(tǒng)相結(jié)合,構(gòu)成了模糊神經(jīng)網(wǎng)絡(luò)[1],這是建立在BP網(wǎng)絡(luò)基礎(chǔ)上的一種多層神經(jīng)網(wǎng)絡(luò),可以稱為一種特殊的深度神經(jīng)網(wǎng)絡(luò)[2]。模糊神經(jīng)網(wǎng)絡(luò)在本質(zhì)上是將常規(guī)的神經(jīng)網(wǎng)絡(luò)賦予模糊輸入信號和模糊權(quán)值。模糊神經(jīng)網(wǎng)絡(luò)技術(shù)已經(jīng)在建模、模式識別和控制領(lǐng)域獲得了廣泛的應(yīng)用。
模糊神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)步驟為:1.定義模糊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu);2.設(shè)計(jì)輸入隸屬函數(shù)進(jìn)行模糊化;3.設(shè)計(jì)模糊控制規(guī)則;4.設(shè)計(jì)模糊推理算法;5.設(shè)計(jì)網(wǎng)絡(luò)權(quán)值的學(xué)習(xí)算法。
(二)案例的設(shè)計(jì)
案例的設(shè)計(jì)包括以下幾個步驟:1.介紹模糊神經(jīng)網(wǎng)絡(luò)的背景、發(fā)展歷史及研究意義,介紹國內(nèi)外相關(guān)代表性文獻(xiàn)[3];2.設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)、隸屬函數(shù)、模糊規(guī)則、模糊推理算法和網(wǎng)絡(luò)權(quán)值學(xué)習(xí)算法;3.設(shè)計(jì)一個模式識別實(shí)例,給出需要解決的問題,并進(jìn)行仿真實(shí)例的設(shè)計(jì); 4.制作PPT和開發(fā)Matlab數(shù)值仿真程序,并進(jìn)行仿真測試和分析;5.模糊神經(jīng)網(wǎng)絡(luò)算法與傳統(tǒng)算法(如BP神經(jīng)網(wǎng)絡(luò)、RBF神經(jīng)網(wǎng)絡(luò))的仿真比較。
(三)案例分析
在案例分析中,在介紹模糊神經(jīng)網(wǎng)絡(luò)的算法和一個模式識別案例的基礎(chǔ)上,設(shè)計(jì)一個模式識別問題,讓學(xué)生通過對給定案例背景進(jìn)行分析,依據(jù)模糊神經(jīng)網(wǎng)絡(luò)提出具體解決問題的方案。通過案例分析,可提高學(xué)生理解、運(yùn)用知識的能力。
二、模糊神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)實(shí)例
(一)網(wǎng)絡(luò)結(jié)構(gòu)與算法
本文以2輸入1輸出的模糊神經(jīng)網(wǎng)絡(luò)為例進(jìn)行案例教學(xué)探討。模糊神經(jīng)網(wǎng)絡(luò)由輸入層、模糊化層、模糊推理層和輸出層構(gòu)成(見圖1)。
[f 4輸出層][f 3模糊推理層][f 2模糊化層][f 1輸入層][[x1]] […][…]
圖1 2輸入1輸出的模糊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
模糊神經(jīng)網(wǎng)絡(luò)中信號傳播及各層的功能構(gòu)成如下。
第一層:輸入層
該層的各個節(jié)點(diǎn)直接與輸入層的各個輸入連接,將輸入量傳到下一層。該層的每個節(jié)點(diǎn)[i]的輸入輸出表示為:
[f1(i)=x=[x1,x2]]" " " " " " " " (1)
第二層:模糊化層
模糊化是模糊神經(jīng)網(wǎng)絡(luò)的關(guān)鍵,采用隸屬函數(shù)對輸入進(jìn)行模糊化,常用的隸屬函數(shù)有10余種,其中高斯型隸屬函數(shù)是一種有代表性的隸屬函數(shù)。圖1中,針對每個輸入采用5個高斯型隸屬函數(shù)進(jìn)行模糊化,[cij]和[bj]分別是第[i]個輸入變量第[j]個模糊集合隸屬函數(shù)的中心點(diǎn)位置和寬度,該函數(shù)表示為:
[f2(i, j)=exp- (f1(i)-cij)2b2j]" " " "(2)
其中[i=1,2, j=1,2,3,4,5]。
模糊化是模糊神經(jīng)網(wǎng)絡(luò)的關(guān)鍵。為了使輸入得到有效的映射,需要根據(jù)網(wǎng)絡(luò)輸入值的范圍設(shè)計(jì)隸屬函數(shù)參數(shù)。以輸入為[x=3sin2πt]為例,輸入值范圍為[-3,3],設(shè)計(jì)5個高斯型隸屬函數(shù)進(jìn)行模糊化,取[c=[-1.5" "-1" "0" 1" 1.5]],[bj=0.05]。
第三層:模糊推理層
該層通過與模糊化層的連接來完成模糊規(guī)則的匹配,各個節(jié)點(diǎn)之間通過模糊與運(yùn)算,即通過各個模糊節(jié)點(diǎn)的組合得到相應(yīng)的輸出。
由于第1個輸入經(jīng)模糊化后輸出為5個,第2個輸入經(jīng)模糊化后輸出為5個,具有相同輸入的輸出之間不進(jìn)行組合,通過兩兩組合后,構(gòu)成25條模糊規(guī)則,每條模糊規(guī)則的輸出為:
[f3(l)=f2(1, j1)f2(2, j2)]" " " "(3)
其中[j1=1,2,3,4,5],[j2=1,2,3,4,5],[l=1,2,…,25]。
第四層:輸出層
輸出層為[f4],采用加權(quán)得到最后的輸出,即
[f4=l=125w(l)?f3(l)]" " " " " (4)
其中[w]為輸出節(jié)點(diǎn)與第三層各節(jié)點(diǎn)的連接權(quán)矩陣。
取網(wǎng)絡(luò)輸出[y=f4],網(wǎng)絡(luò)輸入[x]與輸出y之間的非線性映射關(guān)系需要通過以下的模糊神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法進(jìn)行學(xué)習(xí)。
(二)模糊神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法
在神經(jīng)網(wǎng)絡(luò)模式識別中,項(xiàng)目組根據(jù)標(biāo)準(zhǔn)的輸入輸出模式,采用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法,以標(biāo)準(zhǔn)的模式作為學(xué)習(xí)樣本進(jìn)行模糊神經(jīng)網(wǎng)絡(luò)訓(xùn)練,通過學(xué)習(xí)調(diào)整神經(jīng)網(wǎng)絡(luò)的連接權(quán)值。當(dāng)訓(xùn)練滿足要求后,得到的神經(jīng)網(wǎng)絡(luò)權(quán)值構(gòu)成了模式識別的知識庫。
模糊神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程如下:正向傳播是采用算法式(1)至算式(4),輸入信號從輸入層經(jīng)模糊化層和模糊推理層傳向輸出層,若輸出層得到了期望的輸出,則學(xué)習(xí)算法結(jié)束;反之,則轉(zhuǎn)至反向傳播。反向傳播采用梯度下降法,調(diào)整神經(jīng)網(wǎng)絡(luò)的輸出層權(quán)值。
理想的輸入輸出為[[xs,ys]],網(wǎng)絡(luò)第[l]個輸出與相應(yīng)理想輸出[ysl]的誤差為:
[el=ysl-yl]
第[p]個樣本的誤差性能指標(biāo)函數(shù)為:
[Ep=12l=1Ne2l]" " " " " (5)
其中[N]為網(wǎng)絡(luò)輸出層神經(jīng)元的個數(shù)。
輸出層的權(quán)值通過以下方式來調(diào)整:
[Δw(k)=-η?EP?w=-η?EP?e ?e?y ?y?w =ηe(k)f3]" (6)
輸出層的權(quán)值學(xué)習(xí)算法為:
[w(k)=w(k-1)+Δw(k)+α(w(k-1)-w(k-2))]" " " (7)
其中[η]為學(xué)習(xí)速率,[α]為動量因子。
在每次迭代中,項(xiàng)目組分別依次對各個樣本進(jìn)行訓(xùn)練,更新權(quán)值,直到所有樣本訓(xùn)練完畢,再進(jìn)行下一次迭代,直到滿足誤差性能指標(biāo)的要求為止。
三、仿真實(shí)例
取標(biāo)準(zhǔn)樣本3個,各個樣本的輸入輸出需要有所區(qū)別,如表1所示。所要解決的問題為:針對表1中的樣本進(jìn)行訓(xùn)練,使訓(xùn)練后的模糊神經(jīng)網(wǎng)絡(luò)具有模式識別能力, 即針對相同的輸入得到相同的輸出,相近的輸入得到相近的輸出。
針對所要解決的問題,首先選擇模糊神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),然后設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)算法,包括網(wǎng)絡(luò)的訓(xùn)練和測試兩部分。
(一)模糊神經(jīng)網(wǎng)絡(luò)的訓(xùn)練
首先,針對表1中的問題,設(shè)計(jì)3輸入2輸出的模糊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。針對每個輸入采用5個隸屬函數(shù)進(jìn)行模糊化,模糊神經(jīng)網(wǎng)絡(luò)的輸入輸出結(jié)構(gòu)為3-15-125-2,權(quán)值W的初始值取[-1" "+1]之間的隨機(jī)值,學(xué)習(xí)參數(shù)取[η=0.50,α=0.05]。針對表1中輸入的范圍,高斯型參數(shù)取為:
[c=[c(i, j)]]=[-1.5" "-1" "0" "1" "1.5-15" "-1" "0" "1" "1.5-15" "-1" "0" "1" nbsp;1.5]和[bj=0.50,i=1,2,3, j=1,2,3,4,5]。
采用學(xué)習(xí)算法算式(6)和算式(7),運(yùn)行網(wǎng)絡(luò)訓(xùn)練程序train_file.m,取網(wǎng)絡(luò)訓(xùn)練的最終誤差指標(biāo)為[E=10-20],經(jīng)過27次迭代,誤差指標(biāo)的變化如圖2所示。將網(wǎng)絡(luò)訓(xùn)練的最終權(quán)值保存在文件wfile.dat中。
Matlab網(wǎng)絡(luò)訓(xùn)練程序:train_file.m
%Fuzzy Neural Network Training for MIMO and Multi-samples
clear all;
close all;
xite=0.50;
alfa=0.05;
bj=0.50;
c=[-1.5 -1 0 1 1.5;
-1.5 -1 0 1 1.5;
-1.5 -1 0 1 1.5];
w=rands(125,2);
w_1=w;w_2=w_1;
E=1.0;k=0;
NS=3;" %three samples
xs=[1 0 0;
0 1 0;
0 0 1]; %Ideal Input
ys=[1 0;
0 0.5;
0 1];" "%Ideal Output
while Egt;=1e-20
k=k+1;
times(k)=k;
for s=1:1:NS" "%Begain training for each sample
% Layer1: Input
f1=xs(s,:);
% Layer2: Fuzzification
for i=1:1:3
for j=1:1:5
net2(i,j)=-(f1(i)-c(i,j))^2/bj^2;
f2(i,j)=exp(net2(i,j));
end
end
% Layer3: Fuzzy inference(5*5*5=125 rules)
for j1=1:1:5
for j2=1:1:5
for j3=1:1:5
ff3(j1,j2,j3)=f2(1,j1)*f2(2,j2)*f2(3,j3);
end
end
end
f3=[ff3(1,:),ff3(2,:),ff3(3,:),ff3(4,:),ff3(5,:)];
% Layer4: Output
f4=w_1'*f3';
yn=f4;
ey(s,:)=ys(s,:)-yn';
d_w=xite*ey(s,:)'*f3;
w=w_1+d_w'+alfa*(w_1-w_2);
eL=0;
y=ys(s,:);
for L=1:1:2
eL=eL+0.5*(y(L)-yn(L))^2;" "%Output error
end
e(s)=eL;
E=0;
if s==NS
for s=1:1:NS
E=E+e(s);
end
end
w_2=w_1;
w_1=w;
end" "%End training for each sample
Ek(k)=E;
end" "%End of while
figure(1);
plot(times,Ek,'-or','linewidth',2);
xlabel('k');ylabel('E');
save wfile w;
(二)模糊神經(jīng)網(wǎng)絡(luò)的測試
采用訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)權(quán)值進(jìn)行測試,取7個3輸入2輸出樣本進(jìn)行測試,其中3個樣本為訓(xùn)練過的標(biāo)準(zhǔn)輸入,3個樣本與訓(xùn)練過的標(biāo)準(zhǔn)輸入樣本近似,1個樣本為新的輸入。
采用模糊神經(jīng)網(wǎng)絡(luò)算法算式(1)至算式(4),運(yùn)行網(wǎng)絡(luò)測試程序test_file.m,調(diào)用文件wfile.dat,取一組實(shí)際樣本進(jìn)行測試,測試樣本及結(jié)果見表2所示。
由仿真結(jié)果可見,相同的輸入得到相同的輸出,相近的輸入得到相近的輸出,如果是新的沒有經(jīng)過訓(xùn)練的樣本,則得到新的輸出。這表明模糊神經(jīng)網(wǎng)絡(luò)具有很好的非線性模式識別功能。
Matlab網(wǎng)絡(luò)測試程序:test_file.m
%Test Fuzzy Neural Network
clear all;
load wfile w;
bj=0.50;
c=[-1.5 -1 0 1 1.5;
-1.5 -1 0 1 1.5;
-1.5 -1 0 1 1.5];
%N Samples
x=[0.97 0.001 0.001;
0 0.98 0;
0.002 0 1.04;
0.5 0.5 0.5;
1 0 0;
0 1 0;
0 0 1];
NS=7;
for s=1:1:NS
% Layer1:input
f1=x(s,:);
% Layer2:Fuzzification
for i=1:1:3
for j=1:1:5
net2(i,j)=-(f1(i)-c(i,j))^2/bj^2;
f2(i,j)=exp(net2(i,j));
end
end
% Layer3:fuzzy inference(125 rules)
for j1=1:1:5
for j2=1:1:5
for j3=1:1:5
ff3(j1,j2,j3)=f2(1,j1)*f2(2,j2)*f2(3,j3);
end
end
end
f3=[ff3(1,:),ff3(2,:),ff3(3,:),ff3(4,:),ff3(5,:)];
% Layer4:output
f4=w'*f3';
yn(s,:)=f4;
end
yn
本仿真實(shí)例的Matlab仿真程序及其實(shí)例分析,可參考相關(guān)教材[3,4],也可登錄網(wǎng)站http://shi.buaa.edu.cn/liujinkun下載。
四、案例分析與討論
在案例的設(shè)計(jì)中,可針對一些具體的問題進(jìn)行討論,選取多種解決方案,以達(dá)到對知識的掌握和深刻理解,從而實(shí)現(xiàn)對知識點(diǎn)的總結(jié),討論的問題可以有以下幾個。目前國內(nèi)外的模糊神經(jīng)網(wǎng)絡(luò)現(xiàn)狀如何?模糊神經(jīng)網(wǎng)絡(luò)的進(jìn)一步發(fā)展方向?如要提高控制性能,模糊神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及推理算法需要進(jìn)行哪些改進(jìn)?將傳統(tǒng)神經(jīng)網(wǎng)絡(luò)(如BP網(wǎng)絡(luò)、RBF網(wǎng)絡(luò))與本算法相比較,各類算法的優(yōu)缺點(diǎn)是什么?如果采用其他語言編程(如C語言),如何進(jìn)行軟件實(shí)現(xiàn)?如將本文的算法進(jìn)行工程開發(fā),需要怎樣進(jìn)行硬件和軟件實(shí)現(xiàn)?
五、結(jié)論
本文以模糊神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)為例,介紹了模糊神經(jīng)網(wǎng)絡(luò)的基本設(shè)計(jì)步驟和分析方法,結(jié)合模式識別實(shí)例和Matlab仿真環(huán)境,將模糊神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的具體步驟納入各個教學(xué)環(huán)節(jié),培養(yǎng)學(xué)生的獨(dú)立分析和解決問題的能力,取得了較好的教學(xué)效果。在以后的教學(xué)工作中,需要不斷完善案例,使其更加深入地與課堂教學(xué)融合。
[ 參 考 文 獻(xiàn) ]
[1] TAKAGI T , SUGENO M. Fuzzy identification of systems and its application to modeling and control. IEEE Transaction on Systems, Man, and Cybernetics,1985,15(1):116-132.
[2] 段艷杰,呂宜生,張杰,等.深度學(xué)習(xí)在控制領(lǐng)域的研究現(xiàn)狀與展望[J].自動化學(xué)報,2016(5):643-654.
[3] 劉金琨.智能控制[M].5版.北京:電子工業(yè)出版社,2021.
[4] 劉金琨,沈曉蓉,趙龍.系統(tǒng)辨識理論及MATLAB仿真[M].2版.北京:電子工業(yè)出版社,2020.
[5] LIN C T , PAL N R , WU S L , et al. An Interval Type-2 Neural Fuzzy System for Online System Identification and Feature Elimination[J]. IEEE Transactions on Neural Networks amp; Learning Systems, 2015(7):1442-1455.
[6] LIU Y T , LIN Y Y , WU S L , et al. Brain Dynamics in Predicting Driving Fatigue Using a Recurrent Self-Evolving Fuzzy Neural Network[J]. IEEE Transactions on Neural Networks and Learning Systems, 2016(2):347-360.
[7] LIN Y Y , CHANG J Y , LIN C T . Identification and Prediction of Dynamic Systems Using an Interactively Recurrent Self-Evolving Fuzzy Neural Network[J]. IEEE Transactions on Neural Networks amp; Learning Systems, 2013(2):310-321.
[8] LIN Y Y , LIAO S H , CHANG J Y , et al. Simplified Interval Type-2 Fuzzy Neural Networks[J]. IEEE Transactions on Neural Networks amp; Learning Systems, 2014(5):959-969.
[責(zé)任編輯:蘇祎穎]