薛維琴,李莉華,戴 明
(1.中國科學院 長春光學精密機械與物理研究所,吉林 長春 130033;2.重慶市電子工程職業(yè)學院 重慶 401331)
神經(jīng)網(wǎng)絡(luò)是由大量的神經(jīng)元通過特殊形式的加權(quán)網(wǎng)絡(luò)相互聯(lián)接而形成的,可以認為:神經(jīng)網(wǎng)絡(luò)由兩種基本單元構(gòu)成,即收集信號并且完成非線性變換的神經(jīng)元胞,以及完成各神經(jīng)元之間的加權(quán)互連的突觸。標準的神經(jīng)網(wǎng)絡(luò)VLSI的實現(xiàn)方式是在單個芯片上集成多個神經(jīng)元和突觸單元,并且將它們按某種通信結(jié)構(gòu)組成神經(jīng)網(wǎng)絡(luò)系統(tǒng),此外,還有基于ASIC結(jié)構(gòu)的,針對神經(jīng)網(wǎng)絡(luò)運算特點進行優(yōu)化和簡化設(shè)計的FPGA實現(xiàn)方式,以及基于商業(yè)處理器(如數(shù)字信號處理、RISC單片處理等)的模擬神經(jīng)網(wǎng)絡(luò)的多處理器結(jié)構(gòu)的實現(xiàn)方式。
衡量一個神經(jīng)網(wǎng)絡(luò)性能的重要指標是快速性和適用性,而FPGA的集成度已經(jīng)達到百萬門級,用FPGA構(gòu)造神經(jīng)網(wǎng)絡(luò)時,可以靈活地實現(xiàn)各種運算功能和學習規(guī)則,并且設(shè)計周期短、系統(tǒng)速度快、可靠性高、輸入輸出接口靈活、幾乎可以和任何形式的并行、串行接口及并行、串行A/D或D/A,DSP等連接,同時由于可以將整個系統(tǒng)都集成在單個芯片內(nèi),因而抗干擾性能極強,使其在自動控制、故障診斷、模式識別,圖像獲取、DSP應用、嵌人式系統(tǒng)等領(lǐng)域有著廣泛的應用前景。所以,F(xiàn)PGA無疑是首選的實現(xiàn)神經(jīng)網(wǎng)絡(luò)的硬件芯片[1-2]。
BP人工神經(jīng)網(wǎng)絡(luò)即誤差后向傳播網(wǎng)絡(luò),是一種前饋網(wǎng)絡(luò),由輸入層、隱含層和輸出層構(gòu)成。隱含層通過作用函數(shù)執(zhí)行一種固定不變的非線性變化,將輸出空間映像到一個新的空間,輸出層節(jié)點則在該新空間進行線性加權(quán)組合。BP算法用于多層網(wǎng)絡(luò),對于線性情況,多層網(wǎng)絡(luò)可以簡單到只有一個輸入層節(jié)點和輸出層節(jié)點,而沒有隱含層(中間層)。實際上,大多數(shù)自然、經(jīng)濟和社會系統(tǒng)及其影響因素是非常復雜的非線性系統(tǒng),它不僅有輸入層節(jié)點及輸出層節(jié)點,而且還可以有一層至多層隱含層節(jié)點。權(quán)值為零,說明相連的兩個神經(jīng)元不發(fā)生作用,若為負,說明相連的兩個神經(jīng)元之間相互抑制。此外,對于隱含層及輸出層的各神經(jīng)元而言,它還有一個閾值,其作用是調(diào)節(jié)神經(jīng)元的興奮水平。當有信息輸入網(wǎng)絡(luò)時,該信息首先由輸入層傳至隱含層節(jié)點,經(jīng)特性函數(shù)作用后,再傳至輸出層輸出,其間每經(jīng)過一層都要由相應的特性函數(shù)進行變換。節(jié)點的特性函數(shù)要求是可微的,通常選用S型函數(shù),特性函數(shù)通常取Sigmoid函數(shù),本系統(tǒng)選用Sigmoid函數(shù),即和作為特性函數(shù),具有較好的收斂性,模擬結(jié)論也比較符合實際情況[3,6]。
BP網(wǎng)絡(luò)中每個節(jié)點都有一個狀態(tài)變量xi,節(jié)點i到節(jié)點j有一個連接權(quán)系數(shù)wji,每個節(jié)點都有一個閾值θj,每一個節(jié)點定義一個變換函數(shù) fj[xi,wji,θj(i≠j)],最常見的形式為
為了方便起見,將閾值θ作為神經(jīng)元權(quán)值的第一個分量加到權(quán)值中去,那么輸入向量就應增加一項,可設(shè)輸入向量的第1個分量固定為 1,這樣 fj[xi,wji(i≠j)]的形式就可變?yōu)?/p>
一個3層單輸入、單輸出、n個隱節(jié)點的BP網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 BP網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Structure diagram of BP network
圖1中,黑圓表示輸入為固定值1的神經(jīng)元,用它與隱層神經(jīng)元的連接權(quán)w011~w01n來表示隱層神經(jīng)元的閾值,它與輸出層神經(jīng)元的連接權(quán)w02來表示輸出層神經(jīng)元的閾值,w11~w1n為輸入層到隱層之間的連接權(quán)值,w21~w2n為隱層到輸出層之間的連接權(quán)值[4-6]。描述一個如圖1所示網(wǎng)絡(luò)的BP算法,它主要包括2個階段:
1)正向傳播階段 從樣本集中取出一個樣本(x,d),計算隱層各個節(jié)點(神經(jīng)元)輸出 yI(i)=f(w1(i)x-w01(i))和輸出層節(jié)點輸出
2)反向傳播階段 按下式反向計算各層節(jié)點的局部梯度δ 和權(quán)值修正量
即:
即:
權(quán)值調(diào)整量計算:
式中,x 是輸入,d 是期望輸出,f為激勵函數(shù),η為學習率,δ(o)為輸出層節(jié)點的梯度,δi為隱層節(jié)點i的梯度。
在運算中,涉及大量乘累加操作,本應采用浮點運算,但是占用的硬件資源和速度都將會不理想;如果采用定點運算,運算中帶來的“位增長”率將使每一級運算的最大值可能會逐級加倍,因此如果不精心地規(guī)劃設(shè)計,這些值就會溢出,結(jié)果會因為精度不夠而無法使用。因此采用自定義的定點數(shù)進行基本的運算單元設(shè)計。本系統(tǒng)采用不削弱神經(jīng)網(wǎng)絡(luò)能力的最小要求16位(1,5,10)帶符號定點數(shù)表示,最高位為符號位,低10位為小數(shù)位,其余為整數(shù)位。
例如:將 1.5用 16位(1,5,10) 帶符號定點數(shù)可表示為:0000011000000000,將-2.3 用 16 位(1,5,10) 帶符號定點數(shù)可表示為:1000100100110011。
根據(jù)文件復用性的要求,建立基于VHDL語言的BP神經(jīng)網(wǎng)絡(luò)元件庫,根據(jù)層次設(shè)計的要求,BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的描述分為3層:第1層是前向傳輸模塊的描述,包括輸入信號加權(quán)求和,權(quán)值的存儲和非線性激勵函數(shù)的實現(xiàn);第2層是反向傳輸模塊的描述;第3層是系統(tǒng)控制模塊的描述。下面用VHDL語言對這3層結(jié)構(gòu)分別進行設(shè)計。
3.2.1 前向傳輸模塊的設(shè)計
圖2為前向傳輸模塊的VHDL程序設(shè)計流程。計算時x和w都是16位有符號數(shù),相乘后為31位數(shù)(最高位為符號位(兩輸入數(shù)符號位相異或),低20位為小數(shù)位,其余10位為整數(shù)位),為了節(jié)省硬件資源四舍五入,舍去低10位小數(shù)位,為了防止后面相加是溢出,再擴展4位整數(shù)位,所以乘累加后輸出為25位。
函數(shù)變換部分:對于FPGA硬件來說,其可實現(xiàn)的運算極為有限,而BP網(wǎng)絡(luò)中的作用函數(shù)sigmoid函數(shù)是非線性的,是硬件實現(xiàn)的一個難點,常用的實現(xiàn)方法是查表法,這種方法比較簡單,但需要占用較多資源,當需要實現(xiàn)的網(wǎng)絡(luò)規(guī)模較大且精度要求較高時,查表法的實現(xiàn)有很大障礙;還有一個方法就是多項式逼近法。本系統(tǒng)使用了查表和多項式逼近2種方法。
圖2 前向傳輸程序設(shè)計流程圖Fig.2 Flow chart of prior to the transfer process
3.2.2 反向傳輸模塊的設(shè)計
反向傳輸模塊的VHDL程序設(shè)計流程如圖3所示。
圖3 反向傳輸程序設(shè)計流程圖Fig.3 Flow chart of reverse transfer program
使用3輸入的乘法器計算Δw02,4輸入的乘法器計算Δw2,5輸入的乘法器計算Δw01,6輸入的乘法器計算Δw1,這樣并行計算 Δw02、Δw2、Δw01、Δw1。
3.2.3 系統(tǒng)控制模塊的設(shè)計
該系統(tǒng)控制模塊由一個計數(shù)器組成,計數(shù)器的輸入信號有:時鐘信號、啟動運算信號start、最大訓練次數(shù)maxcount、誤差信號e、誤差容限eps,樣本數(shù)目;輸出信號有:前向傳輸控制信號en1,求誤差控制信號en2、反向傳輸控制信號en3、權(quán)值調(diào)整控制信號en4、權(quán)值讀寫信號en5、讀樣本地址信號,訓練次數(shù) count。
芯片選型要考慮的因素有:硬件資源,例如LE個數(shù)、PLL個數(shù)、RAM個數(shù);核心及外設(shè)電壓標準、功耗;軟件工具的功能對VHDL語言的支持;市場上專業(yè)開發(fā)板的支持。
本系統(tǒng)設(shè)計采用Altera公司Cyclonell系列的EP2C20Q240C8型FPGA。器件EP2C20Q240C8片內(nèi)資源豐富,邏輯單元共18752個,最大用戶輸入輸出引腳為142個,器件EP2C20Q240C8還內(nèi)嵌RAM,共208 KB,包含4個 PLL,同時支持 Nios軟核處理器。EP2C20Q240C8型FPGA的核心電壓是1.2 V,I/O電壓是3.3 V。而綜合軟件則使用Altera公司的QuartusⅡ6.1。
將該BP網(wǎng)絡(luò)用來實現(xiàn)函數(shù)逼近,取網(wǎng)絡(luò)為1-5-1(輸入、輸出層神經(jīng)元數(shù)為1,隱層神經(jīng)元數(shù)為5),本系統(tǒng)測試了很多函數(shù),現(xiàn)將其中2例測試結(jié)果列出,如圖4所示,(圖中實線為目標曲線,+線為逼近曲線)。由測試結(jié)果可以看出,對于函數(shù)中比較平坦的地方,該系統(tǒng)擬合結(jié)果不太理想,對于不同的網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)模型的誤差或性能和泛化能力也不一樣,一般地,隨著網(wǎng)絡(luò)結(jié)構(gòu)的變大,誤差變小。通常,在隱層節(jié)點數(shù)增加的過程中,網(wǎng)絡(luò)誤差會出現(xiàn)迅速減小然后趨于穩(wěn)定的一個階段,因此,合理的隱層節(jié)點數(shù)應取誤差迅速減小后基本穩(wěn)定時的隱層節(jié)點數(shù)。合理網(wǎng)絡(luò)模型是必須在具有合理隱層節(jié)點數(shù)、訓練時沒有發(fā)生“過擬合”現(xiàn)象、求得全局極小點和同時考慮網(wǎng)絡(luò)結(jié)構(gòu)復雜程度和誤差大小的綜合結(jié)果。設(shè)計合理的BP網(wǎng)絡(luò)模型的過程是一個不斷調(diào)整參數(shù)的過程,也是一個不斷對比結(jié)果的過程,比較復雜且有時還帶有經(jīng)驗性。
例1:待測函數(shù)y=x2,測試結(jié)果如圖4所示。
圖4 函數(shù)y=x2的BP網(wǎng)絡(luò)硬件測試結(jié)果圖Fig.4 Test results of BP network hardware for y=x2function
例2:待測函數(shù)y=e-xsin(2x)+0.2,測試結(jié)果如圖5所示。
圖5 函數(shù)y=e-xsin(2x)+0.2的BP網(wǎng)絡(luò)硬件測試結(jié)果圖Fig.5 Test results of BP network hardware for y=e-xsin(2x)+0.2 function
以BP網(wǎng)絡(luò)為例提出了神經(jīng)網(wǎng)絡(luò)硬件實現(xiàn)方法。應該說明的是:這種方法并非只適合于BP網(wǎng)絡(luò),由于神經(jīng)網(wǎng)絡(luò)都具有大規(guī)模并行的簡單運算的特點,所以可以將此方法推廣至更多類型的神經(jīng)網(wǎng)絡(luò)。
本系統(tǒng)在參考前人工作的基礎(chǔ)上,綜合考慮了各種因素,用VHDL硬件描述語言設(shè)計并實現(xiàn)了該系統(tǒng),從測試結(jié)果來看,本文所設(shè)計的BP神經(jīng)網(wǎng)絡(luò)不但達到了一定的數(shù)據(jù)精度,也能滿足一般場合下的速度處理要求。此嘗試的成功將改變?nèi)斯ど窠?jīng)網(wǎng)絡(luò)的研究局限于算法和應用等領(lǐng)域的現(xiàn)狀,也必將極大促進神經(jīng)網(wǎng)絡(luò)研究的進一步發(fā)展,這也將推動神經(jīng)網(wǎng)絡(luò)硬件在相關(guān)應用領(lǐng)域中的實用化。
[1] 高雋.人工神經(jīng)網(wǎng)絡(luò)原理及仿真實例[M].北京:機械工業(yè)出版,2007.
[2] 劉祖潤,曾喆昭,張志飛,等.基于單片機的Chebyshev神經(jīng)網(wǎng)絡(luò)硬件設(shè)計[J].半導體技術(shù),1999,24(5):1003-353X.LIU Zu-run,ZENG Zhe-zhao,ZHANG Zhi-fei,et al.Design of hard-ware of the Chebyshev neural networks based on single chip[J].Semiconductor Optoelectronics, 1999,24(5):1003-353X.
[3] 韓力群.人工神經(jīng)網(wǎng)絡(luò)理論、設(shè)計及應用[M].北京:化學工業(yè)出版,2005.
[4] Theodoridis S,Koutroumbas K.模 式 識 別[M].李 晶 皎 , 朱 志良,王愛俠,等,譯.北京:電子工業(yè)出版,2004.
[5] Kumar S.神經(jīng)網(wǎng)絡(luò) [M].北京:清華大學出版,2006.
[6] 趙知勁,莊嬋飛,干立,等.調(diào)制樣式BP神經(jīng)網(wǎng)絡(luò)分類器[J].現(xiàn)代雷達,2003,25(10):1004-7859.ZHAO Zhi-jin, ZHUANG Chan-fei, GAN Li, et al.Classifier of modulation types using BP neural network[J].Modern Radar, 2003,25(10):1004-7859.