基于FPGA的人工神經網絡實現方法的研究_第1頁
基于FPGA的人工神經網絡實現方法的研究_第2頁
基于FPGA的人工神經網絡實現方法的研究_第3頁
基于FPGA的人工神經網絡實現方法的研究_第4頁
基于FPGA的人工神經網絡實現方法的研究_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于FPGA的人工神經網絡實現方法的研究2009-11-2111:14:59作者:楊銀濤,汪海波,張志,周建華來源:現代電子技術

關鍵字:FPGA人工神經網絡引言人工神經網絡(ArtificialNeuralNetwork,ANN)是一種類似生物神經網絡的信息處理結構,它的提出是為了解決一些非線性,非平穩(wěn),復雜的實際問題。目前實現ANN還主要依靠軟件程序?但是依靠程序很難達到實時性的要求。神經網絡在FPGA上實現是獨立于馮諾依曼架構,利用FPGA的并行性,在一些實時性要求很強的領域應用。通用計算機雖然編程容易,但是很多時間浪費在分析指令,讀出寫入數據等。于是人們想利用ASIC(專用計算芯片)完成神經網絡的計算任務,但是由于資源有限,這種芯片只限于實現特定的算法結構和小規(guī)模網絡,而且專用芯片的制作成本很高,只適合大批量生產??删幊踢壿嬈骷﨔PGA的出現給IC設計行業(yè)一個很強的工具,它可以小成本的開發(fā)一些專用芯片,如果開發(fā)是成功的可以考慮流片生產。用FPGA實現神經網絡比ASIC神經計算單元更容易實現,利用可編程邏輯,FPGA可以實現像軟件一樣的設計靈活性,特別是對于復雜網絡,設計周期大大縮短,其內部的重構邏輯模塊(ConfigurableLogicBlocks,CLBs)包含若干邏輯單元,利用固有的可重構路徑結構可以實現高效率的連接。此外,現在正在開發(fā)中的一種神經計算芯片為神經網絡的實現提出了一種新的有效方法。1FPGA實現神經網絡關鍵問題分析選擇合適的神經網絡及其拓撲結構不同的神經網絡有不同的應用,而且不同的網絡完成知識表達的機理是不同的,某一個神經網絡不是萬能的?對于實際問題,首先要做的就是選擇針對性的神經網絡,如線性分類問題可以用簡單的感知器,對于復雜的分類問題,函數逼近問題可以使用BP網絡,對于一些聚類問題可以使用徑向基(RBF)網絡等。以BP網絡結構為例,這種被廣泛采用的架構由具有錯誤反向傳播算法的多層感知器構成(MultilayerPerceptronsu-singBack-Propagation,MLP-BP),訓練一個BP網絡主要的問題就在于:訓練開始之前,對于網絡拓撲結構缺乏一種明確的確定方法。而進行各種拓撲結構的實驗并不那么容易,因為對于每一個訓練周期都要消耗很長的時間,特別是復雜的網絡,更是如此;其次,對于硬件而言,最合適的網絡運算法則不僅在于它達到收斂有多么快,還要考慮是否容易在硬件上實現且這種實現代價和性能如何;另外,對于同一種NN(NeuralNet-work)。其拓撲結構對網絡的收斂特性以及知識表達特性都有影響,一般增加網絡的神經元或者神經元的層數,是可以增加網絡的逼近能力,但是可能會影響網絡的學習收斂情況,而且還可能會因為過適應(Overfit)而失去泛化能力。正確選擇數值表達形式精度的選擇對處理密度(與耗費的硬件資源成反比)有直接影響。其中浮點數可以在計算機中表達實數,它有相對高的精度和大的動態(tài)范圍,使用浮點數使得計算更為精確,但是在FPGA上實現浮點數運算是一個很大的挑戰(zhàn),而且會耗費很多硬件資源。盡管如此,加拿大研究人員MedhatMoussaandShawkiArei-bi仍然實現了浮點數的運算,并進行了詳細的對比分析。對于MLP-BP而言,HoltandBaker憑借仿真和理論分析指出16為定點(1位標志位,3位整數位和12位小數位)是最小可允許的精度表示(指可以達到收斂)。以邏輯XOR問題為例,文獻[1]中表格2.5(見表1)表明與基于FPGA的MLP-BP浮點法實現相比,定點法實現在速度上高出12倍,面積上是浮點實現的1/13,而且有更高的處理密度。表IFPGA與MIP-BP相比XORANNArchitecturePrecisionTotalArea(CLBs,[Slices])%ofConvergenceinthirtytrialsMax.ClockRate/MHzProcessingDensity(perSlice)XilinxVirtex-Excv2000eFPGA16bfixed一pt1239[2478]100%1025.33XilinxVirtex-IIxc2v8OOOFPGA32bfloating■pt8334.75[33339]73.3%1.250.1551同時數據也說明基于FPGA的16位定點MLP-BP實現在處理密度上高于基于軟件方法的MLP-BP實現,這最好地證明可重構計算方法的處理密度優(yōu)勢。應該說,在這種應用中浮點數遠不如定點數合適。但是定點數表示的缺點在于有限精度,盡管如此,對于不同的應用選擇合適的字長精度,仍然可以得到收斂。因此,目前基于FPGA的ANN大多數是使用定點數進行計算的。(3)門限非線性激活函數(Non-linearactivationFunction)的實現ANN的知識表達特性與非線性逼近能力,有很大部分源自門限函數。在MLP網絡中,門限函數大部分是非線性函數(少數是線性函數,如輸出層的門限函數),但是非線性傳遞函數的直接硬件實現太昂貴,目前實現門限函數的方法主要有:查表法(look-upta-ble)、分段線性逼近、多項式近似法、有理近似法以及協調旋轉數字計算機(CoordinatedRotationDigitalCom-puter,CORDIC)法則,CORDIC法則實現函數的優(yōu)點在于同一硬件資源能被若干個函數使用,但是性能相當差,因此較少使用。而高次多項式近似法盡管可以實現低誤差近似,但是實現需要耗費較高硬件資源。相對而言,查找表法和分段線性逼近法注意:查找表不易太大,否則速度會慢且代價也大)更適合FPGA技術實現。其中分段線性近似法以y=c1+c2x的形式描述一種線性連接組合(如圖1所示),如果線性函數的系數值為2的幕次,則激活函數可以由一系列移位和加法操作實現,許多神經元的傳遞函數就是這樣實現的,而查找表法則是將事先計算的數值依次存儲在需要查詢的存儲器中來實現。c(c2ROMROM工MultiplierAdder.心)圖1分段線性實現的硬件型"拗?。?)面積節(jié)省及相關問題為了最小化神經元實現的面積,組成每個神經元的各個HDL算法模塊的面積也應該最小。乘法器以及基本的傳遞函數(例如,sigmoid激活函數tanh)是最占用面積的,這類問題非常依賴于所要求的精度,盡管神經網絡常并不要求很精確的計算,但是不同的應用所要求的精度不同。一般來講,浮點運算要比定點運算需要更大的面積,比如浮點運算中的并行加法器本質上是定點運算超前加法器加上必要的邏輯塊,減法器、乘法器也類似如此,這在激活函數實現方面更加突出,文獻[1]中面積優(yōu)化對比顯示,32位浮點運算要比16位定點運算大250倍。另外,對于小型網絡,分布式存儲器很適合權值存放,但是對于大型網絡,權值存儲器不應該被放置在FPGA中,因此當ANN得到有效實現的時候,就要認真考慮存儲器的存取問題。其次,神經網絡應用有一個顯著的缺陷:在神經計算方面,不同運算的計算時間和實現面積并不平衡。在許多標準神經模式中,計算時間的大部分用在需要乘法器和加法器的矩陣向量運算中,而很多耗費面積的運算如激活函數,又必須被實現(它們占用很少的運算時間),而FPGA的面積是嚴格一定的,因此可將面積的相當一部分用來實現這些運算,以至于FPGA僅剩的一小部分卻實現幾乎所有的運算時間。(5)資源和計算速度的平衡(Trade-off)對于FPGA,科學的設計目標應該是在滿足設計時序要求(包括對設計最高頻率的要求)的前提下,占用最少的芯片資源,或者在所規(guī)定的占用資源下,使設計的時序余量更大,頻率更高。這兩種目標充分體現了資源和速度的平衡思想。作為矛盾的兩個組成部分,資源和速度的地位是不一樣的。相比之下,滿足時序、工作頻率的要求更重要一些,當兩者沖突時,采用速度優(yōu)先的準則。例如,ANN的FPGA實現需要各種字長的乘法器,如果可以提出一種新的運算法則,從而用FPGA實現變字長的乘法器,則可以根據需要調整字長,從而提高運算速度的可能性,其中,基于BoothEncodedopti-mizedwallencetree架構(見圖2)就可以得到快速高效的乘法器,這種方式實現的乘法器比現在所用的基于FPGA的乘法器的處理速度快20%)。圖2乘法器架構?每體(6)亟待解決的問題FPGA憑借其如同軟件實現一樣的靈活性,集合了硬件實現高效和并行性的優(yōu)點,好像非常適合神經實現的正常需要,但是,FPGA的二維拓撲結構不能處理標準神經網絡規(guī)則但復雜的連線問題,而且FPGA仍然實現很有限的邏輯門數目,相反,神經計算則需要相當耗費資源的模塊(激活函數,乘法器)。這樣對于FP-GA,可用的CLBs中部分將被用來增加路徑容量(連線),導致計算資源的丟失。一般的方法只能實現很小的低精度神經網絡,連線問題不能依靠幾個具有比特序列算法的可重構FPGA以及小面積模塊(隨機比特流或者頻率)解決。2基于FPGA的ANN實現方法經典實現方法有:可重構的RNN結構(ReconfigurableNeuralNetwork)可重構計算是一種增加處理密度(每單元硅片面積的性能)的有效方法,且處理密度遠大于用于通用計算方法,FPGA作為可重構計算的平臺,可以提供如同軟件一樣的設計靈活性。該方法基于可擴展的脈動陣列結構、可重用的IP(IntellectualProperties)核及FPGA器件,即將要實現的神經網絡算法分為幾種基本運算,這些基本運算由可重構單元(ReconfigurableCell,RC)完成,RC間以規(guī)則的方式相互連接,當神經網絡變化時,只要增減Rc的數量或替換不同功能的RC就可重構成新的神經網絡硬件;文獻[8]中同時指出,考慮到硬件實現要以最少的硬件資源滿足特定應用的性能需求,一般用神經元并行作為可重構部件的基本模式,即神經網絡的各層計算可復用相同的陣列結構。RENCO結構可重構網絡計算機(ReconfigurableNetworkComputer,RENCO)是一種用于邏輯設計原型或可重構系統的平臺,所設計的可重構系統對于工作在比特級的算法實現特別有效,比如模式匹配。RENCO的基本架構包括處理器、可重構部分(多為FPGA)以及存儲器和總線部分,Altera公司提供的最新的RENCO在可重構部分包括近100萬邏輯門,足夠實現高復雜度的處理器。具體參見文獻[9]。盡管如此,得到的可重構系統并非對所有的硬件實現都是優(yōu)化的方法,比如不適合于浮點運算。隨機比特流方法隨機比特流(StochasticBitStrearns)的方法是使用串行隨機的方法實現一些運算操作,目的是為了節(jié)約資源和充分利用神經網絡的實時性。隨機算法的提出源于它的簡易性,基本原理即首先將所有的輸入轉換成二進制隨機比特流,就是任意化;然后,由數字電路組成的隨機算法實現取代正常的算法;最后,隨機比特流轉回到正常的數值(文獻[10]中有詳細總結)。隨機算法提供一種方法,用簡單的硬件實現復雜的計算,同時又不失靈活性,而且隨機實現又與現代VLSI設計和生產技術兼容。FPNA實現方法:憑借著簡化的拓撲結構和獨特的數據交換流圖,FPNA(FieldProgrammableNeuralArrays)成功地解決了以簡單的硬件拓撲結構有效地實現復雜的神經架構問題,是一種特別適合FPGA直接實現的神經計算范例。FPNA基于一種類似FPGA的結構:它包含一系列可以自由配置的資源,這些神經資源被定義用來實現標準神經元的計算功能,但是它們是一種自主的方式,這樣通過有限的連接可以創(chuàng)造出許多虛擬的連線。利用這種新的神經計算理念,一個標準的但結構復雜的神經網絡可以由一個簡化的神經網絡替代(文獻[11]給出了詳細的數學表示和說明)。為了有個直觀的理解,圖3(a)表示一個簡單的MLP結構;圖3(b)說明通過節(jié)點間的直接連接建立虛擬連接。yva0AU'VTVInputsoftheneuralwoikInputlayerHiddenlayer(a)Outputlayer(〃Mi)Inputnodes(〃2)(〃4〃l)(〃5)/Linkyva0AU'VTVInputsoftheneuralwoikInputlayerHiddenlayer(a)Outputlayer(〃Mi)Inputnodes(〃2)(〃4〃l)(〃5)/Link(njh)/activator(〃4,〃;)'Localconfiguredconnection(b)圖3MLP及虛擬連接05!II£1?WwO文獻[11]中的例證表明FPNA計算范例確實允許一系列給定的神經資源代替具有不同架構的標準神經網

絡。然而,從圖4中可能并非如此,MLP架構并沒有得到簡化,原因在于如此簡單的MLP完全沒有必要,

也不可能再簡化。文獻[12]描述了大型神經網絡得到明顯簡化的實例。需要注意的是,FPNA是一個適應

神經計算的硬件框架,而不是一種處理簡化神經計算的實現方法(FieldProgrammableNeuralNetwork,

FPNN)。要設計一個FPNA,首先要選擇一個針對應用的合適的標準神經架構,然后決定一個既適合于實

現又在功能上等價于所選擇神經網絡的可配置FPNA,FPNA獨特的計算方案在于在復雜神經網絡和可用

的硬件資源之間創(chuàng)造了一座橋梁,它適用于許多實現選擇;最后,得到的FP-NA直接映射到硬件設備上,

這將得益于完整的模塊式實現,即對于每個神經資源,預先給定可配置模塊,然后依照。FPNA硬件友好

的架構進行組合。3基于FPGA的神經網絡的性能評估及局限性對于FPGA實現的ANN,最普遍的性能評估方法是每秒神經元乘累加的次數

(Connections-Per-Sec-ond,CPS)和即每秒權值更新的次數(Connections-Updates-Per-Second,

CPUS)。但是CPS和CPUS并不是適于所有的網絡,如RBF徑向基網絡,另外,更大的CPS和CPUS

值并不一定意味著更好的性能。因此,最好的性能測量方法是實際執(zhí)行時間,但是仍有些問題要討論。FPGA

實現神經網絡存在的一些缺點(相對于計算機軟件而言):FPGA上實現的神經網絡大多數是計算結構,而不是認知結構(雖然現在有些人試圖在FPGA上實現BP算法。但是整個的結構和時序控制變得很復雜,并且無法達到計算

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論