王興
(武漢科技大學 信息科學與工程學院,湖北 武漢430081)
人工神經網絡廣泛應用于圖像處理、模式識別和自動控制等領域。但是,傳統的基于軟件實現的神經網絡,存在并行程度低、速度慢,計算速度無法滿足實時性的需求,造成了理論研究與實際應用脫節。因此,神經網絡的硬件實現是神經網絡研究的基本問題之一。神經網絡的硬件實現的最大特點就是體現了系統的并行性,處理速度快,易于滿足實時性要求。另外,算法的復雜程度以及在實際工程中應用的可行性仍需要通過硬件的實現效果來檢驗。因此,神經網絡的硬件實現意義重大。
徑向基函數 (Radial Basis Function,RBF) 網絡是由Moody J和Darken C于20世紀80年代末提出的一種神經網絡結構,是一種有監督的神經網絡。它是借鑒生物機制中的局部調節及交叉接受區域知識的基礎上提出的一種采用局部接受域來執行函數映射的人工神經網絡。RBF網絡最基本的構成包括3層,其結構如圖1所示,其中每一層都有著完全不同的作用。
輸入層由一些源點(感知單元)組成,他們將網絡與外界環境連接起來;第二層是網絡中僅有的一個隱層,它的作用是進行從輸入空間到隱層空間的非線性變換。隱層節點中的

圖1 RBF神經網絡結構圖Fig.1 Structure diagram of RBF neural network
作用函數(基函數)對輸入信號將在局部產生響應,也就是說,當輸入信號靠近基函數的中央范圍時,隱層節點將產生較大的輸出,由此看出這種網絡具有局部逼近能力。輸出層是線性的,它為作用于輸入層的激活模式(信號)提供響應。
徑向基函數有多種形式,如:二次型、逆二次型或Gauss型等。若采用高斯函數作為徑向基函數,則神經元的輸出為:

上式中,m是隱含層結點數;‖·‖是歐幾里德范數;Ci和σi分別為與每個隱含層節點相關的參數向量的中心和寬度;ωi是第i個基函數與輸出結點的連接權值。
對各RBF的中心及半徑的確定通常有以下兩種方式:

2)用聚類方法,把樣本聚成幾類,以類中心為各RBF函數的中心。
首先,中心Ci的確定。采用k-均值聚類分析技術確定Ci。找出有代表性的數據點 (不一定位于原始數據點)作為RBF單元中心,從而極大地減少隱RBF單元數目,降低網絡復雜化程度。利用k-均值算法獲得各個聚類中心后,即可將之賦給各RBF單元作為RBF的中心。
然后,半徑σi的確定。半徑σi決定了RBF單元接受域的大小,對網絡的精度有極大的影響。半徑選擇的原則是使得所有RBF單元的接受域之和覆蓋整個訓練樣本空間。
通常應用k-均值聚類法后,對每個聚類中心Ci,可以令相應的半徑σi等于與其屬于該類的訓練樣本之間的平均距離,即

這里權W是指輸出層和隱層之間的權值,可以采用線性最小二乘法和梯度法來調節權矩陣W。
1)線性最小二乘法。令網絡輸出為

2)梯度法。迭代公式如下:

由于輸出為線性單元,因而可以確保梯度算法收斂于全局最優解。所以,在本設計中采用梯度法來修改權值W。
RBF神經網絡隱層中的映射函數為高斯函數,為非線性函數。而非線性函數在硬件上實現往往比較復雜,難度較大。通常實際工程中采用查表法或迭代法來近似模擬這些非線性函數,查表法較迭代法雖在結構和運算復雜度上有明顯降低,但在精度上也會明顯降低。若要提高精度,只能增加表的大小,但增加表的大小,直接帶來的影響就是會加大存儲空間和降低查表效率,所以,在FPGA上采用何種方法實現高斯函數的存儲達到精度和效率之間的平衡就至關重要。
高斯函數表達式為

2.3.1 STAM算法
STAM算法的主體思想是先產生系數,然后利用系數的對稱性減小ROM表的大小。在該算法中先把輸入X分為m+1 個部分:x0,x1,…,xm。 則 f(x)可以近似為

該種方法雖然在某種程度上使得查找表的數量增加了,但每個表的大小卻大大減小了,整體上查找表還是減少了,效率上也相應提高了。

為了減小表的誤差和在表系數中構造對稱,定義δi以恰好位于xi的最大值和最小值的中間,即:f(x)在 x0+x1+x2:m 點的二階泰勒級數展開為:用δ1代替上式第2部分中的x1:



然后再把第2部分分開:

和式(1)比較,就可以確定系數為:

式(13)構造的查找表 a0(x0,x1),其輸入值的位數為 n0+n1。式(14)所構造的其余 m-1 個查找表 ai-1(x0,xi),由于 δi被定義為xi的取值區間的中間點,故查找表中的系數值具有對稱性,即 ai-1(x0,xi)與 ai-1(x0,2δi-xi)互為補碼,其輸入值的位數可以減為n0+n1-1,從而使這m-1個查找表的存儲空間節省了一半。
2.3.2 CORDIC迭代法
坐標旋轉計算機 (CORDIC:Coordinate Rotation Digital Computer)由 Volder.J于 1959 年提出[1],1971 年 J.S.Walther提出統一CORDIC算法[2]。
該算法是用于計算一些常用的非線性函數的循環迭代算法。其基本思想是用一系列與運算基數相關的角度的不斷偏擺從而逼近所需旋轉的角度,從而達到非線性函數的逼近。
由 CORDIC算法可知,計算指數函數 exp(x)的迭代公式為:


迭代n次后的結果為


在實現指數函數exp時,采用MATLAB仿真與CORDIC迭代結合的方式。因為迭代過程中有限字長的截斷將造成截斷誤差,所以如果 CORDIC輸入數據為 N bit,則x,y迭代過程需log2(N)的保護位。具體迭代過程為:首先,把CORDIC輸入數據映射到CORDIC迭代收斂區間,并根據相應數值的某位數字尋址查表;然后,以為z路徑的初始值按公式(15)進行CODIC 迭代,直到滿足迭代次數,此時得到 xi為 Kh·exp(zin)。
RBF神經網絡訓練部分的系統框圖如圖2所示。

圖2 系統整體設計框圖Fig.2 Structure diagram of the whole system
本實驗以Altera公司開發的 EDA工具QuartusⅡ作為編譯、仿真平臺 ,選用Cyclone系列中的 EP1C6Q240C8器件。且以經典非線性問題XOR問題為算例。仿真結果如表1所示。

表1 XOR實驗仿真結果Tab.1 Test result of experimet on XOR problem
FPGA作為一種可編程資源,在提高設計靈活性及加快算法效率上,比較適合硬件實現神經網絡 ,可以加快。而文中采用STAM算法,可以有效地節省存儲空間 ,且CORDIC迭代算法實現了RBF網絡中的非線性高斯映射函數,所耗資源較少,適合于作為硬件實現網絡的算法。從經典非線性XOR算例在基于文中所設計的RBF網絡中有較好結果,不僅精度上得到較滿意的結果,且網絡的總體誤差也較小。
[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.