《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的人工神經(jīng)網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)方法
基于FPGA的人工神經(jīng)網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)方法
電子設(shè)計(jì)工程
薛維琴,,李莉華,戴 明 中國科學(xué)院
摘要: 摘要:為了改變?nèi)斯ど窠?jīng)網(wǎng)絡(luò)的研究僅僅局限于算法,,只是在通用的串行或并行計(jì)算機(jī)上模擬實(shí)現(xiàn)的現(xiàn)狀,,針對(duì)函數(shù)逼近問題,將BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)分為3個(gè)模塊,,采用VHDL語言完成對(duì)各個(gè)模塊的硬件描述,,并使用Altera公司的Q
Abstract:
Key words :

 

摘要:為了改變人工神經(jīng)網(wǎng)絡(luò)的研究僅僅局限于算法,只是在通用的串行或并行計(jì)算機(jī)上模擬實(shí)現(xiàn)的現(xiàn)狀,,針對(duì)函數(shù)逼近問題,,將BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)分為3個(gè)模塊,采用VHDL語言完成對(duì)各個(gè)模塊的硬件描述,,并使用Altera公司的QualtusII 6.1綜合軟件進(jìn)仿真和調(diào)試,,然后在Cyc-loneII系列FPGA上實(shí)現(xiàn)了能夠進(jìn)行片上學(xué)習(xí)并完成函數(shù)逼近的BP神經(jīng)網(wǎng)絡(luò)系統(tǒng)。測試結(jié)果證明,,該系統(tǒng)能夠很好地完成在線學(xué)習(xí),,并能滿足一般系統(tǒng)應(yīng)用的速度和精度的要求,驗(yàn)證了該方法的有效性,。
關(guān)鍵詞:神經(jīng)網(wǎng)絡(luò),;硬件實(shí)現(xiàn);FPGA,;片上學(xué)習(xí),;函數(shù)逼近

    神經(jīng)網(wǎng)絡(luò)是由大量的神經(jīng)元通過特殊形式的加權(quán)網(wǎng)絡(luò)相互聯(lián)接而形成的,可以認(rèn)為:神經(jīng)網(wǎng)絡(luò)由兩種基本單元構(gòu)成,,即收集信號(hào)并且完成非線性變換的神經(jīng)元胞,,以 及完成各神經(jīng)元之間的加權(quán)互連的突觸。標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)VLSI的實(shí)現(xiàn)方式是在單個(gè)芯片上集成多個(gè)神經(jīng)元和突觸單元,,并且將它們按某種通信結(jié)構(gòu)組成神經(jīng)網(wǎng)絡(luò) 系統(tǒng),,此外,還有基于ASIC結(jié)構(gòu)的,,針對(duì)神經(jīng)網(wǎng)絡(luò)運(yùn)算特點(diǎn)進(jìn)行優(yōu)化和簡化設(shè)計(jì)的FPGA
實(shí)現(xiàn)方式,,以及基于商業(yè)處理器(如數(shù)字信號(hào)處理、RISC單片處理等)的模擬神經(jīng)網(wǎng)絡(luò)的多處理器結(jié)構(gòu)的實(shí)現(xiàn)方式,。
    衡量一個(gè)神經(jīng)網(wǎng)絡(luò)性能的重要指標(biāo)是快速性和適用性,,而FPGA的集成度已經(jīng)達(dá)到百萬門級(jí),,用FPGA構(gòu)造神經(jīng)網(wǎng)絡(luò)時(shí),可以靈活地實(shí)現(xiàn)各種運(yùn)算功能和學(xué)習(xí)規(guī) 則,,并且設(shè)計(jì)周期短,、系統(tǒng)速度快、可靠性高,、輸入輸出接口靈活,、幾乎可以和任何形式的并行、串行接口及并行,、串行A/D或D/A,,DSP等連接,同時(shí)由于 可以將整個(gè)系統(tǒng)都集成在單個(gè)芯片內(nèi),,因而抗干擾性能極強(qiáng),,使其在自動(dòng)控制、故障診斷,、模式識(shí)別,,圖像獲取,、DSP應(yīng)用,、嵌人式系統(tǒng)等領(lǐng)域有著廣泛的應(yīng)用前 景。所以,,F(xiàn)PGA無疑是首選的實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的硬件芯片,。

1 BP神經(jīng)網(wǎng)絡(luò)的基本原理
    BP人工神經(jīng)網(wǎng)絡(luò)即誤差后向傳播網(wǎng)絡(luò),是一種前饋網(wǎng)絡(luò),,由輸入層,、隱含層和輸出層構(gòu)成。隱含層通過作用函數(shù)執(zhí)行一種固定不變的非線性變化,,將輸出空間映像 到一個(gè)新的空間,,輸出層節(jié)點(diǎn)則在該新空間進(jìn)行線性加權(quán)組合。BP算法用于多層網(wǎng)絡(luò),,對(duì)于線性情況,,多層網(wǎng)絡(luò)可以簡單到只有一個(gè)輸入層節(jié)點(diǎn)和輸出層節(jié)點(diǎn),而 沒有隱含層(中間層),。實(shí)際上,,大多數(shù)自然、經(jīng)濟(jì)和社會(huì)系統(tǒng)及其影響因素是非常復(fù)雜的非線性系統(tǒng),,它不僅有輸入層節(jié)點(diǎn)及輸出層節(jié)點(diǎn),,而且還可以有一層至多 層隱含層節(jié)點(diǎn)。權(quán)值為零,,說明相連的兩個(gè)神經(jīng)元不發(fā)生作用,,若為負(fù),,說明相連的兩個(gè)神經(jīng)元之間相互抑制。此外,,對(duì)于隱含層及輸出層的各神經(jīng)元而言,,它還有 一個(gè)閾值,其作用是調(diào)節(jié)神經(jīng)元的興奮水平,。當(dāng)有信息輸入網(wǎng)絡(luò)時(shí),,該信息首先由輸入層傳至隱含層節(jié)點(diǎn),經(jīng)特性函數(shù)作用后,,再傳至輸出層輸出,,其間每經(jīng)過一層 都要由相應(yīng)的特性函數(shù)進(jìn)行變換。節(jié)點(diǎn)的特性函數(shù)要求是可微的,,通常選用S型函數(shù),,特性函數(shù)通常取Sigmoid函數(shù),本系統(tǒng)選用Sigmoid函數(shù),,即a.JPGb.JPG作為特性函數(shù),,具有較好的收斂性,模擬結(jié)論也比較符合實(shí)際情況,。

2 BP學(xué)習(xí)算法描述
    BP網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都有一個(gè)狀態(tài)變量xi,,節(jié)點(diǎn)i到節(jié)點(diǎn)j有一個(gè)連接權(quán)系數(shù)wji,每個(gè)節(jié)點(diǎn)都有一個(gè)閾值θj,,每一個(gè)節(jié)點(diǎn)定義一個(gè)變換函數(shù)fj[xi,,wji,θj(i≠j)],,最常見的形式為
    c.JPG
    為了方便起見,,將閾值θ作為神經(jīng)元權(quán)值的第一個(gè)分量加到權(quán)值中去,那么輸入向量就應(yīng)增加一項(xiàng),,可設(shè)輸入向量的第1個(gè)分量固定為l,,這樣d.JPG的形式就可變?yōu)?img alt="e.JPG" border="0" src="http://files.chinaaet.com/images/20101206/fbe83be0-12ce-457d-928a-3d560f222b27.jpg" />。
    一個(gè)3層單輸入,、單輸出,、n個(gè)隱節(jié)點(diǎn)的BP網(wǎng)絡(luò)結(jié)構(gòu)如圖l所示。

e.JPG


    圖1中,,黑圓表示輸入為固定值1的神經(jīng)元,,用它與隱層神經(jīng)元的連接權(quán)w011~w01n來表示隱層神經(jīng)元的閾值,它與輸出層神經(jīng)元的連接權(quán)w02來表示輸 出層神經(jīng)元的閾值,,w1I~w1n為輸入層到隱層之間的連接權(quán)值,,w21~w2n為隱層到輸出層之間的連接權(quán)值。描述一個(gè)如圖1所示網(wǎng)絡(luò)的BP算法,它主 要包括2個(gè)階段:
    1)正向傳播階段 從樣本集中取出一個(gè)樣本(x,,d),,計(jì)算隱層各個(gè)節(jié)點(diǎn)(神經(jīng)元)輸出yI(i)=f(wl(i)x-w01(i))和輸出層節(jié)點(diǎn)輸出g.JPG
    2)反向傳播階段 按下式反向計(jì)算各層節(jié)點(diǎn)的局部梯度δ和權(quán)值修正量h.JPG,。
    若激勵(lì)函數(shù)f選用單極性Sigmoid函數(shù),,則:
    i.JPG
k.JPG
    式中,x是輸入,,d是期望輸出,,f為激勵(lì)函數(shù),η為學(xué)習(xí)率,,δ(o)為輸出層節(jié)點(diǎn)的梯度,,δi為隱層節(jié)點(diǎn)i的梯度。

3 BP神經(jīng)網(wǎng)絡(luò)的VHDL設(shè)計(jì)
3.1 選擇系統(tǒng)處理數(shù)據(jù)字長
    在運(yùn)算中,,涉及大量乘累加操作,,本應(yīng)采用浮點(diǎn)運(yùn)算,但是占用的硬件資源和速度都將會(huì)不理想,;如果采用定點(diǎn)運(yùn)算,,運(yùn)算中帶來的“位增長”率將使每一級(jí)運(yùn)算的 最大值可能會(huì)逐級(jí)加倍,因此如果不精心地規(guī)劃設(shè)計(jì),,這些值就會(huì)溢出,,結(jié)果會(huì)因?yàn)榫炔粔蚨鵁o法使用。因此采用自定義的定點(diǎn)數(shù)進(jìn)行基本的運(yùn)算單元設(shè)計(jì),。本系 統(tǒng)采用不削弱神經(jīng)網(wǎng)絡(luò)能力的最小要求16位(1,,5,,lO)帶符號(hào)定點(diǎn)數(shù)表示,,最高位為符號(hào)位,低10位為小數(shù)位,,其余為整數(shù)位,。
    例如:將1.5用16位(1,5,,1O)帶符號(hào)定點(diǎn)數(shù)可表示為:0000011000000000,,將-2.3用16位(1,5,,10)帶符號(hào)定點(diǎn)數(shù)可表示為:10001 00100110011,。
3.2 BP神經(jīng)網(wǎng)絡(luò)模塊庫的建立
    根據(jù)文件復(fù)用性的要求,建立基于VHDL語言的BP神經(jīng)網(wǎng)絡(luò)元件庫,,根據(jù)層次設(shè)計(jì)的要求,,BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的描述分為3層:第1層是前向 傳輸模塊的描述,包括輸入信號(hào)加權(quán)求和,權(quán)值的存儲(chǔ)和非線性激勵(lì)函數(shù)的實(shí)現(xiàn),;第2層是反向傳輸模塊的描述,;第3層是系統(tǒng)控制模塊的描述。下面用VHDL語 言對(duì)這3層結(jié)構(gòu)分別進(jìn)行設(shè)計(jì),。
3. 2.1 前向傳輸模塊的設(shè)計(jì)
    圖2為前向傳輸模塊的VHDL程序設(shè)計(jì)流程,。計(jì)算時(shí)x和w都是16位有符號(hào)數(shù)。相乘后為3l位數(shù)(最高位為符號(hào)位(兩輸入數(shù)符號(hào)位相異 或),,低20位為小數(shù)位,,其余10位為整數(shù)位),為了節(jié)省硬件資源四舍五入,,舍去低10位小數(shù)位,,為了防止后面相加是溢出,再擴(kuò)展4位整數(shù)位,,所以乘累加 后輸出為25位,。

l.JPG


    函數(shù)變換部分:對(duì)于FPGA硬件來說,其可實(shí)現(xiàn)的運(yùn)算極為有限,,而BP網(wǎng)絡(luò)中的作用函數(shù)sigmoid函數(shù)是非線性的,,是硬件實(shí)現(xiàn)的一個(gè)難點(diǎn),常用的實(shí)現(xiàn) 方法是查表法,,這種方法比較簡單,,但需要占用較多資源,當(dāng)需要實(shí)現(xiàn)的網(wǎng)絡(luò)規(guī)模較大且精度要求較高時(shí),,查表法的實(shí)現(xiàn)有很大障礙,;還有一個(gè)方法就是多項(xiàng)式逼近 法。本系統(tǒng)使用了查表和多項(xiàng)式逼近2種方法,。
3. 2.2 反向傳輸模塊的設(shè)計(jì)
    反向傳輸模塊的VHDL程序設(shè)計(jì)流程如圖3所示,。

m.JPG


    使用3輸入的乘法器計(jì)算△w02,4輸入的乘法器計(jì)算△w2.5輸入的乘法器計(jì)算△w01,,6輸入的乘法器計(jì)算△w1,,這樣并行計(jì)算△w02、△w2,、△wO1,、△w1。
3.2.3 系統(tǒng)控制模塊的設(shè)計(jì)
    該系統(tǒng)控制模塊由一個(gè)計(jì)數(shù)器組成,,計(jì)數(shù)器的輸入信號(hào)有:時(shí)鐘信號(hào),、啟動(dòng)運(yùn)算信號(hào)start、最大訓(xùn)練次數(shù)maxcount,、誤差信號(hào)e,、 誤差容限eps,,樣本數(shù)目;輸出信號(hào)有:前向傳輸控制信號(hào)enl,,求誤差控制信號(hào)en2,、反向傳輸控制信號(hào)en3、權(quán)值調(diào)整控制信號(hào)en4,、權(quán)值讀寫信號(hào) en5,、讀樣本地址信號(hào),訓(xùn)練次數(shù)count,。
3.3 基于FPGA的芯片和仿真軟件選型
    芯片選型要考慮的因素有:硬件資源,,例如LE個(gè)數(shù)、PLL個(gè)數(shù),、RAM個(gè)數(shù),;核心及外設(shè)電壓標(biāo)準(zhǔn)、功耗,;軟件工具的功能對(duì)VHDL語言的支持,;市場上專業(yè)開發(fā)板的支持。
    本系統(tǒng)設(shè)計(jì)采用Altera公司Cyclonell系列的EP2C20Q240C8型FPGA,。器件EP2C20Q240C8片內(nèi)資源豐富,,邏輯單元共18752個(gè),最大用戶輸入輸出引腳為142個(gè),,器件EP2C20Q240C8還內(nèi)嵌RAM,,共208 KB,包含4個(gè)PLL,,同時(shí)支持Nios軟核處理器,。EP2C20Q240C8型FPGA的核心電壓是1.2 V,I/O電壓是3.3 V,。而綜合軟件則使用Altera公司的QuallusⅡ6.1,。

4 實(shí)驗(yàn)驗(yàn)證
    將該BP網(wǎng)絡(luò)用來實(shí)現(xiàn)函數(shù)逼近,取網(wǎng)絡(luò)為l-5-l(輸入,、輸出層神經(jīng)元數(shù)為1,,隱層神經(jīng)元數(shù)為5),本系統(tǒng)測試了很多函數(shù),,現(xiàn)將其中2例測試結(jié)果列出, 如圖4所示,,(圖中實(shí)線為目標(biāo)曲線,,+線為逼近曲線)。由測試結(jié)果可以看出,,對(duì)于函數(shù)中比較平坦的地方,,該系統(tǒng)擬合結(jié)果不太理想,對(duì)于不同的網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng) 絡(luò)模型的誤差或性能和泛化能力也不一樣,,一般地,,隨著網(wǎng)絡(luò)結(jié)構(gòu)的變大,誤差變小,。通常,,在隱層節(jié)點(diǎn)數(shù)增加的過程中,網(wǎng)絡(luò)誤差會(huì)出現(xiàn)迅速減小然后趨于穩(wěn)定的 一個(gè)階段,,因此,,合理的隱層節(jié)點(diǎn)數(shù)應(yīng)取誤差迅速減小后基本穩(wěn)定時(shí)的隱層節(jié)點(diǎn)數(shù)。合理網(wǎng)絡(luò)模型是必須在具有合理隱層節(jié)點(diǎn)數(shù),、訓(xùn)練時(shí)沒有發(fā)生“過擬合”現(xiàn)象,、 求得全局極小點(diǎn)和同時(shí)考慮網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜程度和誤差大小的綜合結(jié)果。設(shè)計(jì)合理的BP網(wǎng)絡(luò)模型的過程是一個(gè)不斷調(diào)整參數(shù)的過程,,也是一個(gè)不斷對(duì)比結(jié)果的過程,, 比較復(fù)雜且有時(shí)還帶有經(jīng)驗(yàn)性。
    例l:待測函數(shù)y=x2,,測試結(jié)果如圖4所示,。

n.JPG


    例2:待測函數(shù)p.jpg,測試結(jié)果如圖5所示,。

5 結(jié)論
    以BP網(wǎng)絡(luò)為例提出了神經(jīng)網(wǎng)絡(luò)硬件實(shí)現(xiàn)方法,。應(yīng)該說明的是:這種方法并非只適合于BP網(wǎng)絡(luò),由于神經(jīng)網(wǎng)絡(luò)都具有大規(guī)模并行的簡單運(yùn)算的特點(diǎn),,所以可以將此方法推廣至更多類型的神經(jīng)網(wǎng)絡(luò),。
    本系統(tǒng)在參考前人工作的基礎(chǔ)上,綜合考慮了各種因素,,用VHDL硬件描述語言設(shè)計(jì)并實(shí)現(xiàn)了該系統(tǒng),,從測試結(jié)果來看,本文所設(shè)計(jì)的BP神經(jīng)網(wǎng)絡(luò)不但達(dá)到了一 定的數(shù)據(jù)精度,,也能滿足一般場合下的速度處理要求,。此嘗試的成功將改變?nèi)斯ど窠?jīng)網(wǎng)絡(luò)的研究局限于算法和應(yīng)用等領(lǐng)域的現(xiàn)狀,也必將極大促進(jìn)神經(jīng)網(wǎng)絡(luò)研究的進(jìn) 一步發(fā)展,,這也將推動(dòng)神經(jīng)網(wǎng)絡(luò)硬件在相關(guān)應(yīng)用領(lǐng)域中的實(shí)用化,。


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。