宋 魯
基于FPGA的串行結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)LS-SVM實(shí)現(xiàn)
宋 魯
使用FPGA實(shí)現(xiàn)遞歸神經(jīng)網(wǎng)絡(luò)的LS-SVM串行計(jì)算結(jié)構(gòu),能有效降低并行計(jì)算結(jié)構(gòu)對(duì)嵌入式系統(tǒng)硬件資源的消耗。該結(jié)構(gòu)具有串行計(jì)算、并行傳輸?shù)奶攸c(diǎn)。采用verilog HDL來實(shí)現(xiàn)該結(jié)構(gòu),可以在編譯階段設(shè)置處理數(shù)據(jù)的字長,具有較強(qiáng)的靈活性。利用Altera Cyclone III系列FPGA完成LS-SVM訓(xùn)練的仿真實(shí)驗(yàn)。結(jié)果表明,該硬件實(shí)現(xiàn)方法很好地完成LS-SVM的分類訓(xùn)練,與現(xiàn)有的LS-SVM matlab軟件包相比,達(dá)到相似分類準(zhǔn)確率的情況下,具有更快的訓(xùn)練速度。
支持向量機(jī)(SVM)作為機(jī)器學(xué)習(xí)的一個(gè)研究熱點(diǎn),被廣泛應(yīng)用到工程領(lǐng)域中。目前,SVM的研究較多局限于軟件實(shí)現(xiàn)。然而,這種方法在執(zhí)行過程中需要巨大的硬件資源 。因此,研究SVM硬件實(shí)現(xiàn)架構(gòu)是必要的。這種專用電路結(jié)構(gòu)可以提高硬件資源的利用效率,從而降低芯片的面積、功耗、成本,提高速度和可靠性。
最早適用于VLSI實(shí)現(xiàn)的SVM學(xué)習(xí)電路采用Chua遞歸網(wǎng)絡(luò)來解決受約束的二次規(guī)劃問題,但其要達(dá)到精確解,懲罰因子會(huì)接近無窮大,硬件不易實(shí)現(xiàn)。隨后出現(xiàn)了一些處理SVM學(xué)習(xí)過程的雙層或單層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)。不足之處在于,當(dāng)不存在界內(nèi)支持向量,即當(dāng)所有支持向量機(jī)都為界上支持向量時(shí),無法得到偏移量。
在雙層網(wǎng)絡(luò)的基礎(chǔ)上,文獻(xiàn)提出較為簡單的單層遞歸神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)來實(shí)現(xiàn)SVM學(xué)習(xí),并在理論上證明了其收斂性和分類性能,與雙層網(wǎng)絡(luò)相比,其硬件實(shí)現(xiàn)更加簡單。然而,當(dāng)訓(xùn)練數(shù)據(jù)集較大時(shí),并行系統(tǒng)將耗費(fèi)過多的硬件資源,并行計(jì)算結(jié)構(gòu)將不能滿足嵌入式系統(tǒng)的要求。鑒于此,本文提出一種串行計(jì)算結(jié)構(gòu),使用FPGA實(shí)現(xiàn)基于遞歸神經(jīng)網(wǎng)絡(luò)的LS-SVM。該結(jié)構(gòu)具有串行計(jì)算、并行傳輸?shù)奶攸c(diǎn),計(jì)算核心單元采用復(fù)用的方式,硬件資源得到較大程度的縮減。
最小二乘支持向量機(jī)(LS-SVM)
LS-SVM分類器由Suykens等提出,它通過線性系統(tǒng)來求解二次規(guī)劃問題。LS-SVM在原空間中求解如下優(yōu)化問題:
式中:e 為誤差;常數(shù)γ>0,用來控制對(duì)超出誤差樣本懲罰的程度。問題(1)相應(yīng)的拉格朗日函數(shù)為
式中,αi為拉格朗日乘子。根據(jù)最優(yōu)性條件,對(duì)式(2)求偏導(dǎo)并令其為0,得
消除變量ω和e,可得到如下矩陣方程來代替二次規(guī)劃問題:
其中,
設(shè)上述方程的解為α=[α1,...,αN],則LS-SVM分類器的決策函數(shù)為:
LS-SVM神經(jīng)網(wǎng)絡(luò)
在文獻(xiàn)中,作者利用部分對(duì)偶原理,將SVM的二次規(guī)劃問題轉(zhuǎn)化為遞歸神經(jīng)網(wǎng)絡(luò)的動(dòng)態(tài)方程求解問題。
對(duì)式(4)展開,可得
其中:qij=yiyjkij,kij(=k, xi) xj為核函數(shù)。若核函數(shù)滿足Mercer條件,且對(duì)稱陣QC=[qij]為半正定,則該問題只有一個(gè)全局最優(yōu)解。
神經(jīng)網(wǎng)絡(luò)模型由下面的動(dòng)態(tài)方程描述:
可以看出,該動(dòng)態(tài)系統(tǒng)在平衡點(diǎn)處,即滿足最優(yōu)化條件(7)、(8)時(shí),所提出的神經(jīng)網(wǎng)絡(luò)在平衡點(diǎn)處滿足KKT條件。這樣,當(dāng)所提出的動(dòng)態(tài)網(wǎng)絡(luò)收斂到平衡點(diǎn)時(shí),就可求解LS-SVM問題。式(9)、(10)兩邊同時(shí)積分可得:
式(11)、(12)可以用圖1所示的遞歸神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)。
圖1所示的神經(jīng)網(wǎng)絡(luò)是由(N+1)個(gè)神經(jīng)元組成的遞歸網(wǎng)絡(luò);∑為累加器,傳輸函數(shù)f為一個(gè)積分環(huán)節(jié)。輸入向量通過如下權(quán)矩陣W進(jìn)入網(wǎng)絡(luò):
圖1 實(shí)現(xiàn)LS-SVM的神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
圖2 神經(jīng)元的verilog HDL運(yùn)算流程框圖
該網(wǎng)絡(luò)結(jié)構(gòu)很容易采用硬件電路實(shí)現(xiàn)。為在FPGA實(shí)現(xiàn)該結(jié)構(gòu),先將式(9)、(10)進(jìn)行離散化處理,得
式中,?T 為采樣時(shí)間間隔,本研究取?T=2-10s。式(14)、(15)可用邏輯門電路實(shí)現(xiàn)。
根據(jù)圖1和式(14)、(15)可知,用FPGA實(shí)現(xiàn)LS-SVM分類功能的神經(jīng)網(wǎng)絡(luò)架構(gòu)需要乘法累加器(MAC)、乘法器(MUL)、加法器(ADD)、減法器(SUB)和累加單元(AC)等運(yùn)算單元。系統(tǒng)分別使用ROM單元和RAM單元,用于存儲(chǔ)神經(jīng)網(wǎng)絡(luò)權(quán)值系數(shù)qij和每個(gè)神經(jīng)元運(yùn)算得到的αi值。神經(jīng)元硬件實(shí)現(xiàn)以圖1中第i個(gè)神經(jīng)元為例,神經(jīng)元的verilog HDL運(yùn)算流程框圖如圖2所示。
在實(shí)現(xiàn)LS-SVM分類功能的神經(jīng)網(wǎng)絡(luò)時(shí),神經(jīng)網(wǎng)絡(luò)權(quán)值系數(shù)qij在運(yùn)算過程中保持不變,僅與訓(xùn)練數(shù)據(jù)集有關(guān)。在進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練前,首先將權(quán)值系數(shù)qij計(jì)算好并存放在FPGA的ROM單元中。為了縮短開發(fā)時(shí)間,MAC、MUL、ADD和SUB等計(jì)算單元均采用開發(fā)軟件QUARTUS II中的IP核實(shí)現(xiàn)。圖2可以看出,每個(gè)神經(jīng)元中ROM的讀取、RAM的讀取以及MUL(1)、MUL(2)的運(yùn)算可以并行進(jìn)行,從而可以節(jié)約每個(gè)神經(jīng)元的運(yùn)算時(shí)間。將網(wǎng)絡(luò)訓(xùn)練的初始αi值存儲(chǔ)在RAM中,當(dāng)運(yùn)算需要αi時(shí),可直接從RAM中讀??;下一個(gè)周期運(yùn)算獲得新的αi值存儲(chǔ)在RAM中。RAM中的αi隨系統(tǒng)運(yùn)行一直處于更新狀態(tài),這就對(duì)系統(tǒng)中時(shí)序的控制提出了較為嚴(yán)格的要求。在進(jìn)行神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí),只有在所有αi計(jì)算完成并存儲(chǔ)在RAM中,下一個(gè)周期的訓(xùn)練才能進(jìn)行,因?yàn)橄乱粋€(gè)周期的運(yùn)算依賴于上一個(gè)周期的αi。以一個(gè)周期為例,說明LS-SVM神經(jīng)網(wǎng)絡(luò)神經(jīng)元FPGA的實(shí)現(xiàn),其流程圖如圖3所示。
圖中,神經(jīng)元按圖3箭頭所指的方向進(jìn)行運(yùn)算,依次從基本元件庫中調(diào)用運(yùn)算單元,從而完成式(14)中b 和式(15)中αi的計(jì)算。
圖3 LS-SVM神經(jīng)網(wǎng)絡(luò)神經(jīng)元實(shí)現(xiàn)流程圖
LS-SVM串行計(jì)算的FPGA實(shí)現(xiàn)如圖4所示。系統(tǒng)主要由系統(tǒng)時(shí)序控制單元(TCU)、Lssvm_alpha單元、Lssvm_bias單元、RAM讀寫單元、Judge單元、Add及Lock單元組成。各單元的功能簡介如下。
(1)系統(tǒng)時(shí)序控制單元(TCU):負(fù)責(zé)整個(gè)系統(tǒng)的時(shí)序產(chǎn)生及控制,包括αi(i=1,…,N),b值運(yùn)算時(shí)序的產(chǎn)生,RAM讀寫時(shí)序的產(chǎn)生,ROM讀取時(shí)序的產(chǎn)生以及系統(tǒng)中加法器、鎖存器等運(yùn)算單元時(shí)序控制。
(2)Lssvm_alpha單元:在時(shí)序控制單元的控制下,串行逐個(gè)完成圖2所示的每個(gè)神經(jīng)元的計(jì)算。
(3)Lssvm_bias單元:當(dāng)前周期所有的αi(i=1,…,N)值計(jì)算完成后,將αi(i=1,…,N)值存儲(chǔ)在RAM中,通過時(shí)序控制模塊將αi(i=1,…,N)值從RAM中讀出,并與yi值進(jìn)行乘法累加運(yùn)算,以獲得b。與此同時(shí),該單元并行將運(yùn)算獲得的b值送入Lssvm_alpha單元,進(jìn)行b值的更新,為下一個(gè)周期的運(yùn)算做準(zhǔn)備,該單元的模塊結(jié)構(gòu)圖如圖5所示。
(4)RAM讀寫單元:負(fù)責(zé)αi(i=1, 2,…,N)存取,為Lssvm_alpha單元、Lssvm_bias單元以及加法器單元提供本周期的αi(i=1,…,N)值,同時(shí)從Lock鎖存器單元中獲得下一周期計(jì)算得到的αi(i=1,…,N)值,并按順序存儲(chǔ)。
(5)Judge單元用于判斷每個(gè)神經(jīng)元的輸出增量值是否小于設(shè)定閾值,若N個(gè)神經(jīng)元的輸出增量值均小于設(shè)定閾值,則判斷αi(i=1,…,N)訓(xùn)練完畢。
(6)Add單元將上一個(gè)周期的αi值與本周期神經(jīng)元輸出的增量值相加,通過Lock單元將獲得的αi逐個(gè)鎖存起來,并將所有計(jì)算完成的αi(i=1,…,N)統(tǒng)一傳給RAM單元存儲(chǔ)。
圖4 LS-SVM串行計(jì)算實(shí)現(xiàn)框圖
圖5 Lssvm_bias單元的模塊結(jié)構(gòu)圖
圖6 實(shí)驗(yàn)1的FPGA實(shí)現(xiàn)運(yùn)行結(jié)果
通過仿真實(shí)驗(yàn)測(cè)試串行LS- SVM結(jié)構(gòu)的性能,并將其與LS-SVM Matlab軟件包運(yùn)算值進(jìn)行比較。實(shí)驗(yàn)所用的計(jì)算機(jī)配置為:Intel (R)Core(TM)2Duo CPU2.40GHz,1GB內(nèi)存;Matlab版本為R2009a。硬件平臺(tái)為Altera公司的Cyclone III系列FPGA,系統(tǒng)仿真頻率為100MHz。軟件平臺(tái)為Quartus II編譯環(huán)境及Verilog HDL硬件編程語言。其中,采用verilog HDL實(shí)現(xiàn)該串行計(jì)算結(jié)構(gòu)具有較強(qiáng)的靈活性,因?yàn)榭梢栽诰幾g階段指定處理數(shù)據(jù)的字長。
(1)實(shí)驗(yàn)1。選取植物數(shù)據(jù)集(Iris data)中Irissetosa與Iris-versicolor共10個(gè)樣本點(diǎn)作為訓(xùn)練數(shù)據(jù),2類中剩余的90個(gè)樣本作為測(cè)試數(shù)據(jù)。Iris-setosa與Iris-versicolor線性可分,4個(gè)屬性分別為sepal length、sepal width、petal length和petal width。核函數(shù)選擇高斯核函數(shù),sig2=2.25;γ-1=0.2。圖6為參數(shù)α的FPGA平臺(tái)實(shí)現(xiàn)結(jié)果,“result”中的10個(gè)數(shù)分別代表參數(shù)α0,α1,…,α9,Judge模塊輸出信號(hào)all_ok為“1”時(shí),α訓(xùn)練完成。將FPGA訓(xùn)練的α0, α1,…,α9、b值代入LS-SVM Matlab軟件包對(duì)測(cè)試數(shù)據(jù)集進(jìn)行預(yù)測(cè),結(jié)果如表1所示:其中,分類準(zhǔn)確率達(dá)到98.89%,與LS-SVM Matlab軟件包獲得的分類準(zhǔn)確率相同。從參數(shù)α的收斂時(shí)間來看,F(xiàn)PGA的計(jì)算速度明顯優(yōu)于LSSVM Matlab軟件包的運(yùn)算速度。結(jié)果表明,串行結(jié)構(gòu)的LS-SVM FPGA實(shí)現(xiàn)架構(gòu)同樣可以很好地解決實(shí)驗(yàn)1的分類問題??梢?,本文方法對(duì)解決線性可分分類問題是可行的,且在縮短訓(xùn)練時(shí)間的同時(shí)不會(huì)降低預(yù)測(cè)準(zhǔn)確率。
表1 實(shí)驗(yàn)1的軟硬件平臺(tái)速度比
(2)實(shí)驗(yàn)2。選取植物數(shù)據(jù)集(Iris data)中Irisversicolor和Iris-verginica共20個(gè)樣本點(diǎn)作為訓(xùn)練數(shù)據(jù),2類中剩余的80個(gè)樣本作為測(cè)試數(shù)據(jù)。Iris-versicolor與Iris-verginica線性不可分,4個(gè)屬性分別為sepal length、sepal width、petal length和petal width。核函數(shù)選擇高斯核函數(shù),sig2=2.25;γ-1=0.2。按照試驗(yàn)1的方法,將FPGA訓(xùn)練得出的α0, α1,…,α19、b值代入LS-SVM Matlab軟件包對(duì)測(cè)試數(shù)據(jù)集進(jìn)行預(yù)測(cè),獲得的結(jié)果如表2所示。其中,分類準(zhǔn)確率達(dá)到96.25%,比LS-SVM Matlab軟件包獲得的分類準(zhǔn)確率略高一些。從參數(shù)α的收斂時(shí)間看,F(xiàn)PGA的訓(xùn)練速度是LS-SVM Matlab軟件包的運(yùn)算速度的28.65倍。結(jié)果表明,串行結(jié)構(gòu)的LSSVM FPGA實(shí)現(xiàn)架構(gòu)同樣可以很好地解決實(shí)驗(yàn)2的分類問題??梢?,本文方法對(duì)解決線性不可分分類問題是可行的,且在縮短訓(xùn)練時(shí)間的同時(shí)還提高了預(yù)測(cè)準(zhǔn)確率。
表2 實(shí)驗(yàn)2的軟硬件平臺(tái)速度比
本文研究了最小二乘支持向量機(jī)的FPGA硬件實(shí)現(xiàn),完成了基于遞歸神經(jīng)網(wǎng)絡(luò)的LS-SVM串行FPGA結(jié)構(gòu)設(shè)計(jì)。該結(jié)構(gòu)具有串行計(jì)算、并行傳輸?shù)奶攸c(diǎn)。采用verilog HDL來實(shí)現(xiàn)該結(jié)構(gòu),設(shè)計(jì)者可以在編譯階段設(shè)置處理數(shù)據(jù)的字長,具有較強(qiáng)的靈活性。實(shí)驗(yàn)表明,與LS-SVM matlab軟件包實(shí)現(xiàn)相比,基于遞歸神經(jīng)網(wǎng)絡(luò)的LS-SVM串行FPGA結(jié)構(gòu),能夠準(zhǔn)確地進(jìn)行線性可分、線性不可分?jǐn)?shù)據(jù)分類,并在速度上有一定的優(yōu)勢(shì),驗(yàn)證了該硬件結(jié)構(gòu)是可行、有效的,從而為LS-SVM在硬件平臺(tái)上實(shí)現(xiàn)提供了一種思路。
10.3969/j.issn.1001-8972.2015.24.004