基于FPGA的人工神經(jīng)網(wǎng)絡(luò)實現(xiàn)方法的研究
(3)隨機比特流方法
隨機比特流(Stochastic Bit Strearns)的方法是使用串行隨機的方法實現(xiàn)一些運算操作,目的是為了節(jié)約資源和充分利用神經(jīng)網(wǎng)絡(luò)的實時性。隨機算法的提出源于它的簡易性,基本原理即首先將所有的輸入轉(zhuǎn)換成二進(jìn)制隨機比特流,就是任意化;然后,由數(shù)字電路組成的隨機算法實現(xiàn)取代正常的算法;最后,隨機比特流轉(zhuǎn)回到正常的數(shù)值(文獻(xiàn)[10]中有詳細(xì)總結(jié))。隨機算法提供一種方法,用簡單的硬件實現(xiàn)復(fù)雜的計算,同時又不失靈活性,而且隨機實現(xiàn)又與現(xiàn)代VLSI設(shè)計和生產(chǎn)技術(shù)兼容。
FPNA實現(xiàn)方法:
憑借著簡化的拓?fù)浣Y(jié)構(gòu)和獨特的數(shù)據(jù)交換流圖,F(xiàn)PNA(Field Programmable Neural Arrays)成功地解決了以簡單的硬件拓?fù)浣Y(jié)構(gòu)有效地實現(xiàn)復(fù)雜的神經(jīng)架構(gòu)問題,是一種特別適合FPGA直接實現(xiàn)的神經(jīng)計算范例。FPNA基于一種類似FPGA的結(jié)構(gòu):它包含一系列可以自由配置的資源,這些神經(jīng)資源被定義用來實現(xiàn)標(biāo)準(zhǔn)神經(jīng)元的計算功能,但是它們是一種自主的方式,這樣通過有限的連接可以創(chuàng)造出許多虛擬的連線。利用這種新的神經(jīng)計算理念,一個標(biāo)準(zhǔn)的但結(jié)構(gòu)復(fù)雜的神經(jīng)網(wǎng)絡(luò)可以由一個簡化的神經(jīng)網(wǎng)絡(luò)替代(文獻(xiàn)[11]給出了詳細(xì)的數(shù)學(xué)表示和說明)。
為了有個直觀的理解,圖3(a)表示一個簡單的MLP結(jié)構(gòu);圖3(b)說明通過節(jié)點間的直接連接建立虛擬連接。本文引用地址:http://cafeforensic.com/article/191889.htm
文獻(xiàn)[11]中的例證表明FPNA計算范例確實允許一系列給定的神經(jīng)資源代替具有不同架構(gòu)的標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)。然而,從圖4中可能并非如此,MLP架構(gòu)并沒有得到簡化,原因在于如此簡單的MLP完全沒有必要,也不可能再簡化。文獻(xiàn)[12]描述了大型神經(jīng)網(wǎng)絡(luò)得到明顯簡化的實例。需要注意的是,F(xiàn)PNA是一個適應(yīng)神經(jīng)計算的硬件框架,而不是一種處理簡化神經(jīng)計算的實現(xiàn)方法(Field Programmable Neural Network,F(xiàn)PNN)。要設(shè)計一個FPNA,首先要選擇一個針對應(yīng)用的合適的標(biāo)準(zhǔn)神經(jīng)架構(gòu),然后決定一個既適合于實現(xiàn)又在功能上等價于所選擇神經(jīng)網(wǎng)絡(luò)的可配置FPNA,F(xiàn)PNA獨特的計算方案在于在復(fù)雜神經(jīng)網(wǎng)絡(luò)和可用的硬件資源之間創(chuàng)造了一座橋梁,它適用于許多實現(xiàn)選擇;最后,得到的FP-NA直接映射到硬件設(shè)備上,這將得益于完整的模塊式實現(xiàn),即對于每個神經(jīng)資源,預(yù)先給定可配置模塊,然后依照。FPNA硬件友好的架構(gòu)進(jìn)行組合。
3 基于FPGA的神經(jīng)網(wǎng)絡(luò)的性能評估及局限性
對于FPGA實現(xiàn)的ANN,最普遍的性能評估方法是每秒神經(jīng)元乘累加的次數(shù)(Connections-Per-Sec-ond,CPS)和即每秒權(quán)值更新的次數(shù)(Connections-Updates-Per-Second,CPUS)。但是CPS和CPUS并不是適于所有的網(wǎng)絡(luò),如RBF徑向基網(wǎng)絡(luò),另外,更大的CPS和CPUS值并不一定意味著更好的性能。因此,最好的性能測量方法是實際執(zhí)行時間,但是仍有些問題要討論。FPGA實現(xiàn)神經(jīng)網(wǎng)絡(luò)存在的一些缺點(相對于計算機軟件而言):
(1)FPGA上實現(xiàn)的神經(jīng)網(wǎng)絡(luò)大多數(shù)是計算結(jié)構(gòu),而不是認(rèn)知結(jié)構(gòu)(雖然現(xiàn)在有些人試圖在FPGA上實現(xiàn)BP算法。但是整個的結(jié)構(gòu)和時序控制變得很復(fù)雜,并且無法達(dá)到計算機軟件那樣的計算精度);
(2)在FPGA上實現(xiàn)的神經(jīng)網(wǎng)絡(luò)通用性差。目前FPGA的使用者大多數(shù)都是在RTL級(寄存器傳輸級)編寫VHDL/Verilog HDL實現(xiàn)數(shù)字系統(tǒng),而正在興起的Handel-CSystemC,可以使硬件編程者站在算法級角度,可能對以后的基于FPGA的神經(jīng)網(wǎng)絡(luò)的性能有所改善。
4 基于FPGA實現(xiàn)神經(jīng)網(wǎng)絡(luò)的發(fā)展方向
(1)一種基于REMAP-β實現(xiàn)神經(jīng)網(wǎng)絡(luò)汁算機的方法。REMAP-β可重構(gòu)架構(gòu)基于FPGA技術(shù),RE-MAP-β并行計算機應(yīng)用在嵌入式實時系統(tǒng)中,以有效提高ANN算法實現(xiàn)的效率,目前它的進(jìn)一步發(fā)展RE-MAP-r正在探討中。
(2)另一種基于FPGA實現(xiàn)神經(jīng)網(wǎng)絡(luò)的發(fā)展方向――系統(tǒng)C語言,直接在可編程硬件平臺支持C/C++,使得編程更加容易。但是這個轉(zhuǎn)換并不容易,因為:FPGA不是程序,而是電路。
5 結(jié) 語
詳細(xì)總結(jié)了FPGA實現(xiàn)神經(jīng)網(wǎng)絡(luò)的方法及相關(guān)問題,這里要注意,基于FPGA實現(xiàn)神經(jīng)網(wǎng)絡(luò),并不是要與基于計算機軟件實現(xiàn)一比高低,相反,在很多情況下,采用計算機軟件測試神經(jīng)網(wǎng)絡(luò)的收斂情況,計算出收斂時的權(quán)值,然后通過數(shù)據(jù)口線與FPGA模塊通信,把權(quán)值交給FPGA中的神經(jīng)網(wǎng)絡(luò),使用FPGA完成現(xiàn)實的工作。直到現(xiàn)在,軟件方法仍然是實現(xiàn)神經(jīng)網(wǎng)絡(luò)的首選。另外,對于硬件設(shè)計者(指利用FPGA或者全定制、半定制ASIC實現(xiàn)設(shè)計)而言,mask ASICs提供首選的方法以得到大規(guī)模、快速和完全的神經(jīng)網(wǎng)絡(luò)?,F(xiàn)在它已經(jīng)開發(fā)出了所有的新型可編程器件的嵌入式資源,以得到可以實時訓(xùn)練的更有用的神經(jīng)網(wǎng)絡(luò)。
評論