王興
(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,湖北 武漢430081)
人工神經(jīng)網(wǎng)絡(luò)廣泛應(yīng)用于圖像處理、模式識別和自動(dò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)意義重大。
徑向基函數(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ī)制中的局部調(diào)節(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)中的
圖1 RBF神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Structure diagram of RBF neural network
作用函數(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)值。
對各RBF的中心及半徑的確定通常有以下兩種方式:
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)練樣本之間的平均距離,即
這里權(quán)W是指輸出層和隱層之間的權(quán)值,可以采用線性最小二乘法和梯度法來調(diào)節(jié)權(quán)矩陣W。
1)線性最小二乘法。令網(wǎng)絡(luò)輸出為
2)梯度法。迭代公式如下:
由于輸出為線性單元,因而可以確保梯度算法收斂于全局最優(yōu)解。所以,在本設(shè)計(jì)中采用梯度法來修改權(quán)值W。
RBF神經(jīng)網(wǎng)絡(luò)隱層中的映射函數(shù)為高斯函數(shù),為非線性函數(shù)。而非線性函數(shù)在硬件上實(shí)現(xiàn)往往比較復(fù)雜,難度較大。通常實(shí)際工程中采用查表法或迭代法來近似模擬這些非線性函數(shù),查表法較迭代法雖在結(jié)構(gòu)和運(yùn)算復(fù)雜度上有明顯降低,但在精度上也會(huì)明顯降低。若要提高精度,只能增加表的大小,但增加表的大小,直接帶來的影響就是會(huì)加大存儲空間和降低查表效率,所以,在FPGA上采用何種方法實(shí)現(xiàn)高斯函數(shù)的存儲達(dá)到精度和效率之間的平衡就至關(guān)重要。
高斯函數(shù)表達(dá)式為
2.3.1 STAM算法
STAM算法的主體思想是先產(chǎn)生系數(shù),然后利用系數(shù)的對稱性減小ROM表的大小。在該算法中先把輸入X分為m+1 個(gè)部分:x0,x1,…,xm。 則 f(x)可以近似為
該種方法雖然在某種程度上使得查找表的數(shù)量增加了,但每個(gè)表的大小卻大大減小了,整體上查找表還是減少了,效率上也相應(yīng)提高了。
為了減小表的誤差和在表系數(shù)中構(gòu)造對稱,定義δi以恰好位于xi的最大值和最小值的中間,即:f(x)在 x0+x1+x2:m 點(diǎn)的二階泰勒級數(shù)展開為:用δ1代替上式第2部分中的x1:
然后再把第2部分分開:
和式(1)比較,就可以確定系數(shù)為:
式(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)由 Volder.J于 1959 年提出[1],1971 年 J.S.Walther提出統(tǒng)一CORDIC算法[2]。
該算法是用于計(jì)算一些常用的非線性函數(shù)的循環(huán)迭代算法。其基本思想是用一系列與運(yùn)算基數(shù)相關(guān)的角度的不斷偏擺從而逼近所需旋轉(zhuǎn)的角度,從而達(dá)到非線性函數(shù)的逼近。
由 CORDIC算法可知,計(jì)算指數(shù)函數(shù) exp(x)的迭代公式為:
迭代n次后的結(jié)果為
在實(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í)得到 xi為 Kh·exp(zin)。
RBF神經(jīng)網(wǎng)絡(luò)訓(xùn)練部分的系統(tǒng)框圖如圖2所示。
圖2 系統(tǒng)整體設(shè)計(jì)框圖Fig.2 Structure diagram of the whole system
本實(shí)驗(yàn)以Altera公司開發(fā)的 EDA工具QuartusⅡ作為編譯、仿真平臺 ,選用Cyclone系列中的 EP1C6Q240C8器件。且以經(jīng)典非線性問題XOR問題為算例。仿真結(jié)果如表1所示。
表1 XOR實(shí)驗(yàn)仿真結(jié)果Tab.1 Test result of experimet on XOR problem
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ò)的總體誤差也較小。
[1]Volder J E.The CORDIC trigonometric computing technique[J].IRE Trans.on Electron Computing,1959(8):330-334.
[2]Walther J S.A unified algorithm for elementary functions[J].Proc.AFIPS Conference,1971(38):389-385.
[3]Hu X,Harber R G,Bass S C.Expanding the range of convergence of the CORDIC algorithm[J].IEEE Transactions on Computer s,1991,40(1):13-21.
[4]Y.H.The quantization effects of the CO RDIC algorithm[J].IEEE Transaction on Signal Processing,1992,40(4) :57-63.[5]Andraka R.A survey of CORDIC algorithms for FPGA based computers[C]//Proc.of the 1998 ACM/SIGDA sixth international symposium on FPGA,1998.
[6]Takagi N,Asada T,Yajima S.Redundant CORDIC methods with a constant scale factor for sine and cosine computation[J].IEEE Trans.Computers,1991(40):989-995.
[7]Wang S,Piuri V,Swartzlande E E.Hybrid CORDIC algorithms[J].IEEE Trans.Computing,1997(46):1202-1207.
[8]Dou Y,Vassiliadis S,Kuzmanov G K,et al.64-bit floatingpoint FPGA matrix multiplication[C]//Proceedings of the 2005ACM/SIGDA 13th international symposium on Fieldprogrammable gate arrays,2005:86-95.