廖慎勤 彭良玉 江 勇
摘 要:BP(Back Propagation)神經網絡是一種具有廣泛應用性的前饋神經網絡,LabVIEW是一種圖形化編程語言,其為虛擬儀器設計者提供了一個便捷、輕松的設計環境,被工業界及研究實驗室廣泛接受。介紹了兩種在LabVIEW實現BP神經網絡計算的方法,即Matlab Script節點和圖形編程,Matlab Script節點采用在LabVIEW中直接導入Matlab程序運行,而圖形編程采用圖形編程的方式實現算法,并分別以神經網絡在函數逼近和某設備分類中的應用說明了各自的實現流程,實驗結果精確且形象直觀,充分體現了LabVIEW作為圖形化編程語言的特點。
關鍵詞:BP神經網絡;LabVIEW;圖形化;Matlab
中圖分類號:TP183 文獻標識碼:B 文章編號: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是美國 NI公司開發的高效圖形化虛擬儀器開發平臺,它的圖形化編程具有直觀、簡便、快速、易于開發和維護等優點,在虛擬儀器設計和測控系統開發等相關領域得到了日益廣泛的應用,它無需任何文本程序代碼,而是把復雜、繁瑣的語言編程簡化成圖形,用線條把各種圖形連接起來。BP神經網絡屬于前饋神經網絡,它廣泛應用函數逼近、模式識別、分類和數據壓縮等領域,若將神經網絡與虛擬儀器有機結合,則可以為提高虛擬儀器測控系統的性能提供重要的依據。
1 BP神經網絡學習算法
BP模型是一種應用最廣泛的多層前向拓撲結構,以三層BP神經網絡作為理論依據進行編程,它由輸入層、隱層和輸出層構成。設輸入層神經元個數為I,隱層神經元個數為J,輸出層神經元個數為K,學習樣本有N個(X,Y)向量,表示為:輸入向量X{x1,x2,…,xI},輸出向量Y{y1,y2,…,yK},理想輸出向量為T{t1,t2,…,tK}。
(1) 輸入層節點i,其輸出等于xi(i=1,2,…,I),將控制變量值傳輸到隱含層,則隱層第jЦ鏨窬元的輸入:
Иsj=∑Ii=1wjixi-θj=∑I+1i=1wjixi, j=1,2,…,J(1)И
其中:wji是隱層第j個神經元到輸入層第i個神經元的連接權值。
(2) 隱層第jЦ鏨窬元的輸出:
Иhj=g(sj)=21+e-2sj-1, j=1,2,…,J(2)И
(3) 神經網絡輸出層,第kЦ鏨窬元的輸入為:
Иrk=∑Jj=1vkjhj, k=1,2,…,K(3)И
其中:vkj是輸出層第k個神經元到隱層第j個神經元的連接權值。
(4)神經網絡輸出層,第kЦ鏨窬元的輸出為:
Иyk=g(rk)=11+e-rk, k=1,2,…,K(4)И
(5) 設定網絡誤差函數E:
ИE=1N∑Nk=1EkИ
其中:
ИEk=12∑j(tj-yj)2(5)И
(6) 輸出層到隱層的連接權值調整量Еvkj:
ИЕvkj=礒祐kj=(tk-yk)hj,
j=1,2,…,J;k=1,2,…,K(6)И
(7) 隱層到輸入層的連接權值調整量Еwji:
Еwji=礒祑ji=
∑Kk=1(tk-yk)?vkj[hj(1-hj)]xi,
j=1,2,…,J;i=1,2,…,I(7)
2 用LabVIEW實現BP神經網絡的兩種方法
用LabVIEW實現BP神經網絡的兩種方法為:
(1) 由于 Matlab具有強大的數學運算能力以及在測控領域的廣泛應用。在 LabVIEW中提供了Matlab Script節點,用戶可在節點中編輯Matlab程序,并在LabVIEW中運行;也可以在LabVIEW程序運行時直接調用已經存在的 Matlab程序,如使用節點則必須在系統中安裝 Matlab5以上版本,在寫入 Matlab節點前要將程序先調試通過,并確保其中變量的數據類型匹配。
(2) 由于LabVIEW的圖形程序是獨立于運行平臺的,而且是一種數據驅動的語言,可以方便地實現算法且易修改,結合其 SubVI技術可以增加程序的利用率,因此可以采用圖形編程的方法實現前向網絡的算法。
2.1 利用Matlab Script節點實現
在此以對一個非線性函數的逼近作為例子來說明實現流程,其中輸入矢量p=[-1∶0.05∶1];目標矢量t=sin(2*pi*p)+0.1randn(size(p))。利用Matlab Script節點實現BP 算法的過程如下:
(1) 新建一個LabVIEW vi,在框圖程序中添加Matlab Script 節點。
(2) 在節點內添加Matlab的動量BP算法實現代碼,并分別在節點左右邊框分別添加對應的輸入/輸出參數,如圖 1 所示。
(3) 在vi的前面板添加相應的控件,設置輸入參數,連接輸出控件。執行程序, 結果如圖 2、圖3 所示。
圖1 Matlab Script實現改進的BP算法
圖2 誤差曲線圖
圖3 逼近曲線圖
此方法能夠直接利用Matlab強大的神經網絡工具箱,程序運行時會自動調用系統中已安裝的Matlab進行計算,不用進行復雜的編程,開發效率很高。
2.2 利用圖形編程實現
LabVIEW是美國NI公司推出的基于圖形化編程的虛擬儀器軟件開發工具,它無需任何文本程序代碼,而是把復雜、繁瑣的語言編程簡化成圖形,用線條把各種圖形連接起來。在此以一個設備狀態分類器設計作為例子來說明實現流程輸入,該設備有8個輸入分量,即溫度、濕度等外部條件;而輸出狀態則有3種,分別為正常、偏小、偏大。這里采用12個訓練樣本,每個樣本有8個分量,3類輸出分別編碼為(0 1),(1 0),(1 1),以下即為輸入樣本及標準輸出數據(見圖4、圖5)。
BP神經網絡隱層輸入在LabVIEW中的實現。根據BP學習算法中式(1)編寫相應的程序。其中x為輸入樣本;w為隱層輸入權值,主要應用 LabVIEW中的函數-數學-線性代數-矩陣A×B實現權值與輸入樣本的矩陣相乘,并通過 For循環計算得到 BP神經網絡的隱層輸入 H (見圖6)。
(2)BP神經網絡隱層輸出H的圖形化程序。根據算法中的式(2)編寫,由于在很多測試實踐中參數間的關系是非線性的,這里主要應用Sigmoid型tansig函數作為隱層的傳遞函數,主要應用程序面板中函數-數學-數值及基本與特殊函數等數學控件實現(見圖7)。
圖4 輸入樣本
圖5 標準輸出
圖6 隱層輸入的程序框圖
圖7 隱層輸出的程序框圖
(3)BP神經網絡輸出層的輸入及輸出程序框圖與隱層的類似,分別根據式(3)、式(4)編程即可實現,在此不再重復。
(4) 網絡誤差函數E的圖形化程序。根據算法中式(5)編寫程序,其中:t為理想輸出,y為網絡輸出。其中應用函數-數學-基本與特殊函數中的指數函數控件來實現 (見圖8)。
(5) BP神經網絡各參數調整量的圖形化程序根據上述學習算法中的式(6)和式(7),其中:x為網絡輸入樣本;y,t分別為網絡實際輸出和期望輸出;h為隱層輸出;v為隱層輸出權值。通過調用 LabVIEW軟件中數學計算控件,經過一系列數學計算,分別得到網絡隱層輸出權值調整量Δv以及隱層輸入權值調整量Δw,如圖9、圖10所示。
圖8 網絡誤差函數程序框圖
圖9 Δv的圖形化程序
圖10 Δw的圖形化程序
(6) 完整的學習算法的圖形化程序。將以上各個程序模塊綜合在一起,可以得到完整的學習算法實現程序,如圖 11所示。
圖11 完整的圖形化程序
通過設定網絡的輸入樣本x、輸出期望t、 隱層輸入權值w,輸出v的初始值,經過一系列的矩陣運算,獲得調整后隱層權值w,v參數值。
運行結果如圖12所示,由圖可以非常直觀看出,網絡輸出與網絡理想輸出相當接近,說明網絡訓練的結果是滿意的。
3 結 語
在利用LabVIEW實現BP神經網絡的計算,方法一通過直接調用Matlab程序,簡單易行,只是事先需要裝有Matlab5.0以上的版本。方法二運用圖形化編程對BP神經網絡進行仿真,具有形象、直觀、便于使用和理解的優于傳統文本編程語言的特點。
圖12 運行結果
參 考 文 獻
[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]飛思科技產品研發中心.神經網絡理論與Matlab7實現[M].北京:電子工業出版社,2005.
[3]常曉麗.基于Matlab的BP神經網絡的設計[J].機械工程與自動化,2006(4):36-37.
[4]郭紅梅,于佐軍.LabVIEW與Matlab混合編程的過程控制應用 [J].控制工程,2007(14):131-132.
[5]蔡清華,楊世錫,羅錫梁.基于虛擬儀器編程的BP神經網絡學習算法仿真 [J].現代機械,2006(2):6-8.
[6]周麗霞,熊瑞平,楊榮松.LabVIEW在BP神經網絡故障診斷系統中的應用 [J].機床與液壓,2007,35(4):215-216.
[7]昝濤,王民,費仁元,等.LabVIEW中人工神經網絡計算的實現及應用[J].微計算機信息,2006,22(6):122-124.
[8]粟鈞,吳拓.基于虛擬儀器編程的BP神經網絡算法學習算法仿真[J].廣東輕工職業學院學報,2005,4(1):26-28.
[9]殷瑩.BP網絡在設備故障診斷中的應用與實現 [J].微計算機信息,2007,23(10):31-34.
[10]張雅麗,王寶光,趙海文,等.虛擬儀器在故障診斷中的應用 [J].機床與液壓,2005(1):124-126.
[11] 曾祥學,羅衛華,張斌.基于LabWindows/CVI的人工神經網絡BP算法的實現.現代電子技術,2005(2):21-23.
作者簡介 廖慎勤 女,1984年出生,湖南醴陵人,湖南師范大學碩士研究生。主要研究方向為模擬電路故障診斷。
彭良玉 女,1965年出生,湖南湘鄉人,湖南師范大學教授,碩士生導師,北京航空航天大學博士后。主要研究方向為源濾波器的設計,模擬電路故障診斷,已發表論文80余篇。
江 勇 男,1985年出生,湖南醴陵人,凌陽科技公司通信部工程師。主要研究方向為通信終端設備開發,已發表論文1篇。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。