基于FPGA的RBF神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:介紹了RBF神經(jīng)網(wǎng)絡(luò),并采用CORDIC算法實(shí)現(xiàn)了其隱層非線性高斯函數(shù)的映射。同時(shí),為縮減ROM表的存儲空間并提高查表效率,本設(shè)計(jì)還采用了基于STAM算法的非線性存儲。最后,以Altera公司開發(fā)的EDA工具QuarlusⅡ作為編譯、仿真平臺,采用Cyclone系列中的EP1C6Q 240C8器件,實(shí)現(xiàn)了RBF神經(jīng)網(wǎng)絡(luò)在FPGA上的實(shí)現(xiàn),并以XOR問題為算例進(jìn)行硬件仿真,得出仿真結(jié)果與理論值一致。
關(guān)鍵詞:RBF神經(jīng)網(wǎng)絡(luò);FPCA;CORDIC;STAM
人工神經(jīng)網(wǎng)絡(luò)廣泛應(yīng)用于圖像處理、模式識別和自動控制等領(lǐng)域。但是,傳統(tǒng)的基于軟件實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò),存在并行程度低、速度慢,計(jì)算速度無法滿足實(shí)時(shí)性的需求,造成了理論研究與實(shí)際應(yīng)用脫節(jié)。因此,神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)是神經(jīng)網(wǎng)絡(luò)研究的基本問題之一。神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)的最大特點(diǎn)就是體現(xiàn)了系統(tǒng)的并行性,處理速度快,易于滿足實(shí)時(shí)性要求。另外,算法的復(fù)雜程度以及在實(shí)際工程中應(yīng)用的可行性仍需要通過硬件的實(shí)現(xiàn)效果來檢驗(yàn)。因此,神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)意義重大。
1 RBF神經(jīng)網(wǎng)絡(luò)的簡介
徑向基函數(shù)(Radial Basis Function,RBF)網(wǎng)絡(luò)是由Moody J和Darken C于20世紀(jì)80年代末提出的一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),是一種有監(jiān)督的神經(jīng)網(wǎng)絡(luò)。它是借鑒生物機(jī)制中的局部凋節(jié)及交叉接受區(qū)域知識的基礎(chǔ)上提出的一種采用局部接受域來執(zhí)行函數(shù)映射的人工神經(jīng)網(wǎng)絡(luò)。RBF網(wǎng)絡(luò)最基本的構(gòu)成包括3層,其結(jié)構(gòu)如圖1所示,其中每一層都有著完全不同的作用。
輸入層由一些源點(diǎn)(感知單元)組成,他們將網(wǎng)絡(luò)與外界環(huán)境連接起來;第二層是網(wǎng)絡(luò)中僅有的一個(gè)隱層,它的作用是進(jìn)行從輸入空間到隱層空間的非線性變換。隱層節(jié)點(diǎn)中的作用函數(shù)(基函數(shù))對輸入信號將在局部產(chǎn)生響應(yīng),也就是說,當(dāng)輸入信號靠近基函數(shù)的中央范圍時(shí),隱層節(jié)點(diǎn)將產(chǎn)生較大的輸出,由此看出這種網(wǎng)絡(luò)具有局部逼近能力。輸出層是線性的,它為作用于輸入層的激活模式(信號)提供響應(yīng)。
徑向基函數(shù)有多種形式,如:二次型、逆二次型或Gauss型等。若采用高斯函數(shù)作為徑向基函數(shù),則神經(jīng)元的輸出為:
上式中,m是隱含層結(jié)點(diǎn)數(shù);‖·‖是歐幾里德范數(shù);Ci和σi分別為與每個(gè)隱含層節(jié)點(diǎn)相關(guān)的參數(shù)向量的中心和寬度;ωi是第i個(gè)基函數(shù)與輸出結(jié)點(diǎn)的連接權(quán)值。
2 RBF網(wǎng)絡(luò)的FPGA實(shí)現(xiàn)
2.1 RBF單元中心Ci和半徑σi的確定
對各RBF的中心及半徑的確定通常有以下兩種方式:
1)根據(jù)經(jīng)驗(yàn)選中心。只要訓(xùn)練樣本的分布能代表所給問題,可根據(jù)經(jīng)驗(yàn)選定均勻分布的m個(gè)中心,其間距離為d,則高斯函數(shù)的方差(即半徑σi)為,其中m為中心數(shù)。
2)用聚類方法,把樣本聚成幾類,以類中心為各RBF函數(shù)的中心。
首先,中心Ci確定。采用k-均值聚類分析技術(shù)確定Ci。找出有代表性的數(shù)據(jù)點(diǎn)(不一定位于原始數(shù)據(jù)點(diǎn))作為RBF單元中心,從而極大地減少隱RBF單元數(shù)目,降低網(wǎng)絡(luò)復(fù)雜化程度。利用k-均值算法獲得各個(gè)聚類中心后,即可將之賦給各RBF單元作為RBF的中心。
然后,半徑σi的確定。半徑σi決定了RBF單元接受域的大小,對網(wǎng)絡(luò)的精度有極大的影響。半徑選擇的原則是使得所有RBF單元的接受域之和覆蓋整個(gè)訓(xùn)練樣本空間。
通常應(yīng)用k-均值聚類法后,對每個(gè)聚類中心Ci可以令相應(yīng)的半徑σi等于與其屬于該類的訓(xùn)練樣本之間的平均距離,即
2.2 調(diào)節(jié)權(quán)矩陣W
這里權(quán)W是指輸出層和隱層之間的權(quán)值,可以采用線性最小二乘法和梯度法來調(diào)節(jié)權(quán)矩陣W。
由于輸出為線性單元,因而可以確保梯度算法收斂于全局最優(yōu)解。所以,在本設(shè)計(jì)中采用梯度法來修改權(quán)值W。
2.3 隱層非線性函數(shù)映射的實(shí)現(xiàn)
RBF神經(jīng)網(wǎng)絡(luò)隱層中的映射函數(shù)為高斯函數(shù),為非線性函數(shù)。而非線性函數(shù)在硬件上實(shí)現(xiàn)往往比較復(fù)雜,難度較大。通常實(shí)際工程中采用查表法或迭代法來近似模擬這些非線性函數(shù),查表法較迭代法雖在結(jié)構(gòu)和運(yùn)算復(fù)雜度上有明顯降低,但在精度上也會明顯降低。若要提高精度,只能增加表的大小,但增加表的大小,直接帶來的影響就是會加大存儲空間和降低查表效率,所以,在FPGA上采用何種方法實(shí)現(xiàn)高斯函數(shù)的存儲達(dá)到精度和效率之間的平衡就至關(guān)重要。
高斯函數(shù)表達(dá)式為
其中,可以看作是方差為1的高斯函數(shù),而當(dāng)方差固定時(shí),高斯函數(shù)的形狀不會發(fā)生變化,只是位置上會發(fā)生平移,此時(shí)我們可以采用查表法來解決該部分的非線性映射,為進(jìn)一步提高查表效率、壓縮ROM表的存儲空間,在這里采用STAM(Symmetric Table Loo kup Addition Method)算法實(shí)現(xiàn)數(shù)據(jù)的非線性存儲;另外,部分中心固定,而且維持在一定范圍,可以采用CORDIC迭代法來實(shí)現(xiàn)該部分的函數(shù)計(jì)算。
2.3.1 STAM算法
STAM算法的主體思想是先產(chǎn)生系數(shù),然后利用系數(shù)的對稱性減小ROM表的大小。在該算法中先把輸入X分為m+1個(gè)部分:x0,x1,…,xm。則f(x)可以近似為
該種方法雖然在某種程度上使得查找表的數(shù)量增加了,但每個(gè)表的大小卻大大減小了,整體上查找表還是減少了,效率上也相應(yīng)提高了。
式(13)構(gòu)造的查找表a0(x0,x1),其輸入值的位數(shù)為n0+n1。式(14)所構(gòu)造的其余m-1個(gè)查找表ai-1(x0,xi),由于δi被定義為xi的取值區(qū)間的中間點(diǎn),故查找表中的系數(shù)值具有對稱性,即ai-1(x0,xi)與ai-1(x0,2δi-xi)互為補(bǔ)碼,其輸入值的位數(shù)可以減為n0+n1-1,從而使這m-1個(gè)查找表的存儲空間節(jié)省了一半。
2.3.2 CORDIC迭代法
坐標(biāo)旋轉(zhuǎn)計(jì)算機(jī)(CORDIC:Coordinate Rotation Digital Computer)由Voider.J于1959年提出,1971年J.S.Wahher提出統(tǒng)一CORDIC算法。
該算法是用于計(jì)算一些常用的非線性函數(shù)的循環(huán)迭代算法。其基本思想是用一系列與運(yùn)算基數(shù)相關(guān)的角度的不斷偏擺從而逼近所需旋轉(zhuǎn)的角度,從而達(dá)到非線性函數(shù)的逼近。
由CORDIC算法可知,計(jì)算指數(shù)函數(shù)exp(x)的迭代公式為:
在實(shí)現(xiàn)指數(shù)函數(shù)exp時(shí),采用MATLAB仿真與CORDIC迭代結(jié)合的方式。因?yàn)榈^程中有限字長的截?cái)鄬⒃斐山財(cái)嗾`差,所以如果CORDIC輸入數(shù)據(jù)為N bit,則x,y迭代過程需log2(N)的保護(hù)位。具體迭代過程為:首先,把CORDIC輸入數(shù)據(jù)映射到CORDIC迭代收斂區(qū)間,并根據(jù)相應(yīng)數(shù)值的某位數(shù)字尋址查表;然后,以為z路徑的初始值按公式(15)進(jìn)行CODIC迭代,直到滿足迭代次數(shù),此時(shí)得到x1為Kh·exp(zin)。
2.4 系統(tǒng)整體設(shè)計(jì)框圖
RBF神經(jīng)網(wǎng)絡(luò)訓(xùn)練部分的系統(tǒng)框圖如圖2所示。
3 系統(tǒng)仿真
本實(shí)驗(yàn)以Altera公司開發(fā)的EDA工具QuartusⅡ作為編譯、仿真平臺,選用Cyclone系列中的EP1C6Q240C8器件。且以經(jīng)典非線性問題XOR問題為算例。仿真結(jié)果如表1所示。
4 結(jié)束語
FPGA作為一種可編程資源,在提高設(shè)計(jì)靈活性及加快算法效率上,比較適合硬件實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò),可以加快。而文中采用STAM算法,可以有效地節(jié)省存儲空間,且CORDIC迭代算法實(shí)現(xiàn)了RBF網(wǎng)絡(luò)中的非線性高斯映射函數(shù),所耗資源較少,適合于作為硬件實(shí)現(xiàn)網(wǎng)絡(luò)的算法。從經(jīng)典非線性XOR算例在基于文中所設(shè)計(jì)的RBF網(wǎng)絡(luò)中有較好結(jié)果,不僅精度上得到較滿意的結(jié)果,且網(wǎng)絡(luò)的總體誤差也較小。