廖慎勤 彭良玉 江 勇
摘 要:BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種具有廣泛應(yīng)用性的前饋神經(jīng)網(wǎng)絡(luò),LabVIEW是一種圖形化編程語(yǔ)言,其為虛擬儀器設(shè)計(jì)者提供了一個(gè)便捷、輕松的設(shè)計(jì)環(huán)境,被工業(yè)界及研究實(shí)驗(yàn)室廣泛接受。介紹了兩種在LabVIEW實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)計(jì)算的方法,即Matlab Script節(jié)點(diǎn)和圖形編程,Matlab Script節(jié)點(diǎn)采用在LabVIEW中直接導(dǎo)入Matlab程序運(yùn)行,而圖形編程采用圖形編程的方式實(shí)現(xiàn)算法,并分別以神經(jīng)網(wǎng)絡(luò)在函數(shù)逼近和某設(shè)備分類中的應(yīng)用說(shuō)明了各自的實(shí)現(xiàn)流程,實(shí)驗(yàn)結(jié)果精確且形象直觀,充分體現(xiàn)了LabVIEW作為圖形化編程語(yǔ)言的特點(diǎn)。
關(guān)鍵詞:BP神經(jīng)網(wǎng)絡(luò);LabVIEW;圖形化;Matlab
中圖分類號(hào):TP183 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1004-373X(2009)04-072-04
BP Neural Network′s Realization and Application in LabVIEW
LIAO Shenqin1,PENG Liangyu1,JIANG Yong2
(1.College of Phycics and Information,Hunan Normal University,Changsha,410081,China;
2.Sunplus Prof-tek Technology (Shenzhen) Co.Ltd.,Shenzhen,518000,China)
Abstract:BP neural network is a widely used feedforward neural network,LabVIEW is a graphical programming language,which provids a convenient and easy design environment,so it′s normally accepted by industrial sector and research liboratory.Two calculation methods of realizing BP neural network in LabVIEW are introduced,those are Matlab Script node and graphical programming,Matlab Script node imports the Matlab program and running it,graphical programming realizes the algorithm with the method of graphical programming,and takes the apply of BP neural network in function approach and distinguishing between categories as examples to explain the realization process of the two methods,and the results are precise and intuitive,fully reflect the feathures of LabVIEW as a graphical programming language.
Keywords:BP neural network;LabVIEW;graphical;Matlab
0 引 言
LabVIEW是美國(guó) NI公司開(kāi)發(fā)的高效圖形化虛擬儀器開(kāi)發(fā)平臺(tái),它的圖形化編程具有直觀、簡(jiǎn)便、快速、易于開(kāi)發(fā)和維護(hù)等優(yōu)點(diǎn),在虛擬儀器設(shè)計(jì)和測(cè)控系統(tǒng)開(kāi)發(fā)等相關(guān)領(lǐng)域得到了日益廣泛的應(yīng)用,它無(wú)需任何文本程序代碼,而是把復(fù)雜、繁瑣的語(yǔ)言編程簡(jiǎn)化成圖形,用線條把各種圖形連接起來(lái)。BP神經(jīng)網(wǎng)絡(luò)屬于前饋神經(jīng)網(wǎng)絡(luò),它廣泛應(yīng)用函數(shù)逼近、模式識(shí)別、分類和數(shù)據(jù)壓縮等領(lǐng)域,若將神經(jīng)網(wǎng)絡(luò)與虛擬儀器有機(jī)結(jié)合,則可以為提高虛擬儀器測(cè)控系統(tǒng)的性能提供重要的依據(jù)。
1 BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法
BP模型是一種應(yīng)用最廣泛的多層前向拓?fù)浣Y(jié)構(gòu),以三層BP神經(jīng)網(wǎng)絡(luò)作為理論依據(jù)進(jìn)行編程,它由輸入層、隱層和輸出層構(gòu)成。設(shè)輸入層神經(jīng)元個(gè)數(shù)為I,隱層神經(jīng)元個(gè)數(shù)為J,輸出層神經(jīng)元個(gè)數(shù)為K,學(xué)習(xí)樣本有N個(gè)(X,Y)向量,表示為:輸入向量X{x1,x2,…,xI},輸出向量Y{y1,y2,…,yK},理想輸出向量為T{t1,t2,…,tK}。
(1) 輸入層節(jié)點(diǎn)i,其輸出等于xi(i=1,2,…,I),將控制變量值傳輸?shù)诫[含層,則隱層第jЦ鏨窬元的輸入:
Иsj=∑Ii=1wjixi-θj=∑I+1i=1wjixi, j=1,2,…,J(1)И
其中:wji是隱層第j個(gè)神經(jīng)元到輸入層第i個(gè)神經(jīng)元的連接權(quán)值。
(2) 隱層第jЦ鏨窬元的輸出:
Иhj=g(sj)=21+e-2sj-1, j=1,2,…,J(2)И
(3) 神經(jīng)網(wǎng)絡(luò)輸出層,第kЦ鏨窬元的輸入為:
Иrk=∑Jj=1vkjhj, k=1,2,…,K(3)И
其中:vkj是輸出層第k個(gè)神經(jīng)元到隱層第j個(gè)神經(jīng)元的連接權(quán)值。
(4)神經(jīng)網(wǎng)絡(luò)輸出層,第kЦ鏨窬元的輸出為:
Иyk=g(rk)=11+e-rk, k=1,2,…,K(4)И
(5) 設(shè)定網(wǎng)絡(luò)誤差函數(shù)E:
ИE=1N∑Nk=1EkИ
其中:
ИEk=12∑j(tj-yj)2(5)И
(6) 輸出層到隱層的連接權(quán)值調(diào)整量Еvkj:
ИЕvkj=礒祐kj=(tk-yk)hj,
j=1,2,…,J;k=1,2,…,K(6)И
(7) 隱層到輸入層的連接權(quán)值調(diào)整量Еwji:
Еwji=礒祑ji=
∑Kk=1(tk-yk)?vkj[hj(1-h(huán)j)]xi,
j=1,2,…,J;i=1,2,…,I(7)
2 用LabVIEW實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的兩種方法
用LabVIEW實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的兩種方法為:
(1) 由于 Matlab具有強(qiáng)大的數(shù)學(xué)運(yùn)算能力以及在測(cè)控領(lǐng)域的廣泛應(yīng)用。在 LabVIEW中提供了Matlab Script節(jié)點(diǎn),用戶可在節(jié)點(diǎn)中編輯Matlab程序,并在LabVIEW中運(yùn)行;也可以在LabVIEW程序運(yùn)行時(shí)直接調(diào)用已經(jīng)存在的 Matlab程序,如使用節(jié)點(diǎn)則必須在系統(tǒng)中安裝 Matlab5以上版本,在寫入 Matlab節(jié)點(diǎn)前要將程序先調(diào)試通過(guò),并確保其中變量的數(shù)據(jù)類型匹配。
(2) 由于LabVIEW的圖形程序是獨(dú)立于運(yùn)行平臺(tái)的,而且是一種數(shù)據(jù)驅(qū)動(dòng)的語(yǔ)言,可以方便地實(shí)現(xiàn)算法且易修改,結(jié)合其 SubVI技術(shù)可以增加程序的利用率,因此可以采用圖形編程的方法實(shí)現(xiàn)前向網(wǎng)絡(luò)的算法。
2.1 利用Matlab Script節(jié)點(diǎn)實(shí)現(xiàn)
在此以對(duì)一個(gè)非線性函數(shù)的逼近作為例子來(lái)說(shuō)明實(shí)現(xiàn)流程,其中輸入矢量p=[-1∶0.05∶1];目標(biāo)矢量t=sin(2*pi*p)+0.1randn(size(p))。利用Matlab Script節(jié)點(diǎn)實(shí)現(xiàn)BP 算法的過(guò)程如下:
(1) 新建一個(gè)LabVIEW vi,在框圖程序中添加Matlab Script 節(jié)點(diǎn)。
(2) 在節(jié)點(diǎn)內(nèi)添加Matlab的動(dòng)量BP算法實(shí)現(xiàn)代碼,并分別在節(jié)點(diǎn)左右邊框分別添加對(duì)應(yīng)的輸入/輸出參數(shù),如圖 1 所示。
(3) 在vi的前面板添加相應(yīng)的控件,設(shè)置輸入?yún)?shù),連接輸出控件。執(zhí)行程序, 結(jié)果如圖 2、圖3 所示。
圖1 Matlab Script實(shí)現(xiàn)改進(jìn)的BP算法
圖2 誤差曲線圖
圖3 逼近曲線圖
此方法能夠直接利用Matlab強(qiáng)大的神經(jīng)網(wǎng)絡(luò)工具箱,程序運(yùn)行時(shí)會(huì)自動(dòng)調(diào)用系統(tǒng)中已安裝的Matlab進(jìn)行計(jì)算,不用進(jìn)行復(fù)雜的編程,開(kāi)發(fā)效率很高。
2.2 利用圖形編程實(shí)現(xiàn)
LabVIEW是美國(guó)NI公司推出的基于圖形化編程的虛擬儀器軟件開(kāi)發(fā)工具,它無(wú)需任何文本程序代碼,而是把復(fù)雜、繁瑣的語(yǔ)言編程簡(jiǎn)化成圖形,用線條把各種圖形連接起來(lái)。在此以一個(gè)設(shè)備狀態(tài)分類器設(shè)計(jì)作為例子來(lái)說(shuō)明實(shí)現(xiàn)流程輸入,該設(shè)備有8個(gè)輸入分量,即溫度、濕度等外部條件;而輸出狀態(tài)則有3種,分別為正常、偏小、偏大。這里采用12個(gè)訓(xùn)練樣本,每個(gè)樣本有8個(gè)分量,3類輸出分別編碼為(0 1),(1 0),(1 1),以下即為輸入樣本及標(biāo)準(zhǔn)輸出數(shù)據(jù)(見(jiàn)圖4、圖5)。
BP神經(jīng)網(wǎng)絡(luò)隱層輸入在LabVIEW中的實(shí)現(xiàn)。根據(jù)BP學(xué)習(xí)算法中式(1)編寫相應(yīng)的程序。其中x為輸入樣本;w為隱層輸入權(quán)值,主要應(yīng)用 LabVIEW中的函數(shù)-數(shù)學(xué)-線性代數(shù)-矩陣A×B實(shí)現(xiàn)權(quán)值與輸入樣本的矩陣相乘,并通過(guò) For循環(huán)計(jì)算得到 BP神經(jīng)網(wǎng)絡(luò)的隱層輸入 H (見(jiàn)圖6)。
(2)BP神經(jīng)網(wǎng)絡(luò)隱層輸出H的圖形化程序。根據(jù)算法中的式(2)編寫,由于在很多測(cè)試實(shí)踐中參數(shù)間的關(guān)系是非線性的,這里主要應(yīng)用Sigmoid型tansig函數(shù)作為隱層的傳遞函數(shù),主要應(yīng)用程序面板中函數(shù)-數(shù)學(xué)-數(shù)值及基本與特殊函數(shù)等數(shù)學(xué)控件實(shí)現(xiàn)(見(jiàn)圖7)。
圖4 輸入樣本
圖5 標(biāo)準(zhǔn)輸出
圖6 隱層輸入的程序框圖
圖7 隱層輸出的程序框圖
(3)BP神經(jīng)網(wǎng)絡(luò)輸出層的輸入及輸出程序框圖與隱層的類似,分別根據(jù)式(3)、式(4)編程即可實(shí)現(xiàn),在此不再重復(fù)。
(4) 網(wǎng)絡(luò)誤差函數(shù)E的圖形化程序。根據(jù)算法中式(5)編寫程序,其中:t為理想輸出,y為網(wǎng)絡(luò)輸出。其中應(yīng)用函數(shù)-數(shù)學(xué)-基本與特殊函數(shù)中的指數(shù)函數(shù)控件來(lái)實(shí)現(xiàn) (見(jiàn)圖8)。
(5) BP神經(jīng)網(wǎng)絡(luò)各參數(shù)調(diào)整量的圖形化程序根據(jù)上述學(xué)習(xí)算法中的式(6)和式(7),其中:x為網(wǎng)絡(luò)輸入樣本;y,t分別為網(wǎng)絡(luò)實(shí)際輸出和期望輸出;h為隱層輸出;v為隱層輸出權(quán)值。通過(guò)調(diào)用 LabVIEW軟件中數(shù)學(xué)計(jì)算控件,經(jīng)過(guò)一系列數(shù)學(xué)計(jì)算,分別得到網(wǎng)絡(luò)隱層輸出權(quán)值調(diào)整量Δv以及隱層輸入權(quán)值調(diào)整量Δw,如圖9、圖10所示。
圖8 網(wǎng)絡(luò)誤差函數(shù)程序框圖
圖9 Δv的圖形化程序
圖10 Δw的圖形化程序
(6) 完整的學(xué)習(xí)算法的圖形化程序。將以上各個(gè)程序模塊綜合在一起,可以得到完整的學(xué)習(xí)算法實(shí)現(xiàn)程序,如圖 11所示。
圖11 完整的圖形化程序
通過(guò)設(shè)定網(wǎng)絡(luò)的輸入樣本x、輸出期望t、 隱層輸入權(quán)值w,輸出v的初始值,經(jīng)過(guò)一系列的矩陣運(yùn)算,獲得調(diào)整后隱層權(quán)值w,v參數(shù)值。
運(yùn)行結(jié)果如圖12所示,由圖可以非常直觀看出,網(wǎng)絡(luò)輸出與網(wǎng)絡(luò)理想輸出相當(dāng)接近,說(shuō)明網(wǎng)絡(luò)訓(xùn)練的結(jié)果是滿意的。
3 結(jié) 語(yǔ)
在利用LabVIEW實(shí)現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的計(jì)算,方法一通過(guò)直接調(diào)用Matlab程序,簡(jiǎn)單易行,只是事先需要裝有Matlab5.0以上的版本。方法二運(yùn)用圖形化編程對(duì)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行仿真,具有形象、直觀、便于使用和理解的優(yōu)于傳統(tǒng)文本編程語(yǔ)言的特點(diǎn)。
圖12 運(yùn)行結(jié)果
參 考 文 獻(xiàn)
[1]Allerhand A,Galuska A D.Implementation of LabVIEW forComputer Controlled Experiments in General Chemistry Laboratory Instruction [J].Chem.Educator,2000,5(2):71-76.
[2]飛思科技產(chǎn)品研發(fā)中心.神經(jīng)網(wǎng)絡(luò)理論與Matlab7實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2005.
[3]常曉麗.基于Matlab的BP神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)[J].機(jī)械工程與自動(dòng)化,2006(4):36-37.
[4]郭紅梅,于佐軍.LabVIEW與Matlab混合編程的過(guò)程控制應(yīng)用 [J].控制工程,2007(14):131-132.
[5]蔡清華,楊世錫,羅錫梁.基于虛擬儀器編程的BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法仿真 [J].現(xiàn)代機(jī)械,2006(2):6-8.
[6]周麗霞,熊瑞平,楊榮松.LabVIEW在BP神經(jīng)網(wǎng)絡(luò)故障診斷系統(tǒng)中的應(yīng)用 [J].機(jī)床與液壓,2007,35(4):215-216.
[7]昝濤,王民,費(fèi)仁元,等.LabVIEW中人工神經(jīng)網(wǎng)絡(luò)計(jì)算的實(shí)現(xiàn)及應(yīng)用[J].微計(jì)算機(jī)信息,2006,22(6):122-124.
[8]粟鈞,吳拓.基于虛擬儀器編程的BP神經(jīng)網(wǎng)絡(luò)算法學(xué)習(xí)算法仿真[J].廣東輕工職業(yè)學(xué)院學(xué)報(bào),2005,4(1):26-28.
[9]殷瑩.BP網(wǎng)絡(luò)在設(shè)備故障診斷中的應(yīng)用與實(shí)現(xiàn) [J].微計(jì)算機(jī)信息,2007,23(10):31-34.
[10]張雅麗,王寶光,趙海文,等.虛擬儀器在故障診斷中的應(yīng)用 [J].機(jī)床與液壓,2005(1):124-126.
[11] 曾祥學(xué),羅衛(wèi)華,張斌.基于LabWindows/CVI的人工神經(jīng)網(wǎng)絡(luò)BP算法的實(shí)現(xiàn).現(xiàn)代電子技術(shù),2005(2):21-23.
作者簡(jiǎn)介 廖慎勤 女,1984年出生,湖南醴陵人,湖南師范大學(xué)碩士研究生。主要研究方向?yàn)槟M電路故障診斷。
彭良玉 女,1965年出生,湖南湘鄉(xiāng)人,湖南師范大學(xué)教授,碩士生導(dǎo)師,北京航空航天大學(xué)博士后。主要研究方向?yàn)樵礊V波器的設(shè)計(jì),模擬電路故障診斷,已發(fā)表論文80余篇。
江 勇 男,1985年出生,湖南醴陵人,凌陽(yáng)科技公司通信部工程師。主要研究方向?yàn)橥ㄐ沤K端設(shè)備開(kāi)發(fā),已發(fā)表論文1篇。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。