基于FPGA的人工神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法的研究
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)是一種類(lèi)似生物神經(jīng)網(wǎng)絡(luò)的信息處理結(jié)構(gòu),它的提出是為了解決一些非線(xiàn)性,非平穩(wěn),復(fù)雜的實(shí)際問(wèn)題。目前實(shí)現(xiàn)ANN還主要依靠軟件程序.但是依靠程序很難達(dá)到實(shí)時(shí)性的要求。
神經(jīng)網(wǎng)絡(luò)在FPGA上實(shí)現(xiàn)是獨(dú)立于馮?諾依曼架構(gòu),利用FPGA的并行性,在一些實(shí)時(shí)性要求很強(qiáng)的領(lǐng)域應(yīng)用。通用計(jì)算機(jī)雖然編程容易,但是很多時(shí)間浪費(fèi)在分析指令,讀出寫(xiě)入數(shù)據(jù)等。于是人們想利用ASIC(專(zhuān)用計(jì)算芯片)完成神經(jīng)網(wǎng)絡(luò)的計(jì)算任務(wù),但是由于資源有限,這種芯片只限于實(shí)現(xiàn)特定的算法結(jié)構(gòu)和小規(guī)模網(wǎng)絡(luò),而且專(zhuān)用芯片的制作成本很高,只適合大批量生產(chǎn)。
可編程邏輯器件FPGA的出現(xiàn)給IC設(shè)計(jì)行業(yè)一個(gè)很強(qiáng)的工具,它可以小成本的開(kāi)發(fā)一些專(zhuān)用芯片,如果開(kāi)發(fā)是成功的可以考慮流片生產(chǎn)。用FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)比ASIC神經(jīng)計(jì)算單元更容易實(shí)現(xiàn),利用可編程邏輯,F(xiàn)PGA可以實(shí)現(xiàn)像軟件一樣的設(shè)計(jì)靈活性,特別是對(duì)于復(fù)雜網(wǎng)絡(luò),設(shè)計(jì)周期大大縮短,其內(nèi)部的重構(gòu)邏輯模塊(Configurable Logic Blocks,CLBs)包含若干邏輯單元,利用固有的可重構(gòu)路徑結(jié)構(gòu)可以實(shí)現(xiàn)高效率的連接。此外,現(xiàn)在正在開(kāi)發(fā)中的一種神經(jīng)計(jì)算芯片為神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)提出了一種新的有效方法。
1 FPGA實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)關(guān)鍵問(wèn)題分析
(1)選擇合適的神經(jīng)網(wǎng)絡(luò)及其拓?fù)浣Y(jié)構(gòu)
不同的神經(jīng)網(wǎng)絡(luò)有不同的應(yīng)用,而且不同的網(wǎng)絡(luò)完成知識(shí)表達(dá)的機(jī)理是不同的,某一個(gè)神經(jīng)網(wǎng)絡(luò)不是萬(wàn)能的.對(duì)于實(shí)際問(wèn)題,首先要做的就是選擇針對(duì)性的神經(jīng)網(wǎng)絡(luò),如線(xiàn)性分類(lèi)問(wèn)題可以用簡(jiǎn)單的感知器,對(duì)于復(fù)雜的分類(lèi)問(wèn)題,函數(shù)逼近問(wèn)題可以使用BP網(wǎng)絡(luò),對(duì)于一些聚類(lèi)問(wèn)題可以使用徑向基(RBF)網(wǎng)絡(luò)等。以BP網(wǎng)絡(luò)結(jié)構(gòu)為例,這種被廣泛采用的架構(gòu)由具有錯(cuò)誤反向傳播算法的多層感知器構(gòu)成(Multilayer Perceptrons u-sing Back-Propagation,MLP-BP),訓(xùn)練一個(gè)BP網(wǎng)絡(luò)主要的問(wèn)題就在于:訓(xùn)練開(kāi)始之前,對(duì)于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)缺乏一種明確的確定方法。而進(jìn)行各種拓?fù)浣Y(jié)構(gòu)的實(shí)驗(yàn)并不那么容易,因?yàn)閷?duì)于每一個(gè)訓(xùn)練周期都要消耗很長(zhǎng)的時(shí)間,特別是復(fù)雜的網(wǎng)絡(luò),更是如此;其次,對(duì)于硬件而言,最合適的網(wǎng)絡(luò)運(yùn)算法則不僅在于它達(dá)到收斂有多么快,還要考慮是否容易在硬件上實(shí)現(xiàn)且這種實(shí)現(xiàn)代價(jià)和性能如何;另外,對(duì)于同一種NN(Neural Net-work)。其拓?fù)浣Y(jié)構(gòu)對(duì)網(wǎng)絡(luò)的收斂特性以及知識(shí)表達(dá)特性都有影響,一般增加網(wǎng)絡(luò)的神經(jīng)元或者神經(jīng)元的層數(shù),是可以增加網(wǎng)絡(luò)的逼近能力,但是可能會(huì)影響網(wǎng)絡(luò)的學(xué)習(xí)收斂情況,而且還可能會(huì)因?yàn)檫^(guò)適應(yīng)(Overfit)而失去泛化能力。
(2)正確選擇數(shù)值表達(dá)形式
精度的選擇對(duì)處理密度(與耗費(fèi)的硬件資源成反比)有直接影響。其中浮點(diǎn)數(shù)可以在計(jì)算機(jī)中表達(dá)實(shí)數(shù),它有相對(duì)高的精度和大的動(dòng)態(tài)范圍,使用浮點(diǎn)數(shù)使得計(jì)算更為精確,但是在FPGA上實(shí)現(xiàn)浮點(diǎn)數(shù)運(yùn)算是一個(gè)很大的挑戰(zhàn),而且會(huì)耗費(fèi)很多硬件資源。盡管如此,加拿大研究人員Medhat Moussa and Shawki Arei-bi仍然實(shí)現(xiàn)了浮點(diǎn)數(shù)的運(yùn)算,并進(jìn)行了詳細(xì)的對(duì)比分析。
對(duì)于MLP-BP而言,Holt and Baker憑借仿真和理論分析指出16為定點(diǎn)(1位標(biāo)志位,3位整數(shù)位和12位小數(shù)位)是最小可允許的精度表示(指可以達(dá)到收斂)。以邏輯XOR問(wèn)題為例,文獻(xiàn)[1]中表格2.5(見(jiàn)表1)表明與基于FPGA的MLP-BP浮點(diǎn)法實(shí)現(xiàn)相比,定點(diǎn)法實(shí)現(xiàn)在速度上高出12倍,面積上是浮點(diǎn)實(shí)現(xiàn)的1/13,而且有更高的處理密度。
同時(shí)數(shù)據(jù)也說(shuō)明基于FPGA的16位定點(diǎn)MLP-BP實(shí)現(xiàn)在處理密度上高于基于軟件方法的MLP-BP實(shí)現(xiàn),這最好地證明可重構(gòu)計(jì)算方法的處理密度優(yōu)勢(shì)。應(yīng)該說(shuō),在這種應(yīng)用中浮點(diǎn)數(shù)遠(yuǎn)不如定點(diǎn)數(shù)合適。但是定點(diǎn)數(shù)表示的缺點(diǎn)在于有限精度,盡管如此,對(duì)于不同的應(yīng)用選擇合適的字長(zhǎng)精度,仍然可以得到收斂。因此,目前基于FPGA的ANN大多數(shù)是使用定點(diǎn)數(shù)進(jìn)行計(jì)算的。
(3)門(mén)限非線(xiàn)性激活函數(shù)(Non-linear activationFunction)的實(shí)現(xiàn)
ANN的知識(shí)表達(dá)特性與非線(xiàn)性逼近能力,有很大部分源自門(mén)限函數(shù)。在MLP網(wǎng)絡(luò)中,門(mén)限函數(shù)大部分是非線(xiàn)性函數(shù)(少數(shù)是線(xiàn)性函數(shù),如輸出層的門(mén)限函數(shù)),但是非線(xiàn)性傳遞函數(shù)的直接硬件實(shí)現(xiàn)太昂貴,目前實(shí)現(xiàn)門(mén)限函數(shù)的方法主要有:查表法(look-up ta-ble)、分段線(xiàn)性逼近、多項(xiàng)式近似法、有理近似法以及協(xié)調(diào)旋轉(zhuǎn)數(shù)字計(jì)算機(jī)(Coordinated Rotation Digital Com-puter,CORDIC)法則,CORDIC法則實(shí)現(xiàn)函數(shù)的優(yōu)點(diǎn)在于同一硬件資源能被若干個(gè)函數(shù)使用,但是性能相當(dāng)差,因此較少使用。而高次多項(xiàng)式近似法盡管可以實(shí)現(xiàn)低誤差近似,但是實(shí)現(xiàn)需要耗費(fèi)較高硬件資源。相對(duì)而言,查找表法和分段線(xiàn)性逼近法(注意:查找表不易太大,否則速度會(huì)慢且代價(jià)也大)更適合FPGA技術(shù)實(shí)現(xiàn)。其中分段線(xiàn)性近似法以y=c1+c2x的形式描述一種線(xiàn)性連接組合(如圖1所示),如果線(xiàn)性函數(shù)的系數(shù)值為2的冪次,則激活函數(shù)可以由一系列移位和加法操作實(shí)現(xiàn),許多神經(jīng)元的傳遞函數(shù)就是這樣實(shí)現(xiàn)的,而查找表法則是將事先計(jì)算的數(shù)值依次存儲(chǔ)在需要查詢(xún)的存儲(chǔ)器中來(lái)實(shí)現(xiàn)。
評(píng)論