两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于fpga的最小二乘支持向量機(jī)串行結(jié)構(gòu)實(shí)現(xiàn)方法

文檔序號(hào):6599952閱讀:720來源:國(guó)知局
專利名稱:一種基于fpga的最小二乘支持向量機(jī)串行結(jié)構(gòu)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明屬于模式識(shí)別技術(shù)領(lǐng)域,涉及一種基于FPGA的最小二乘支持向量機(jī)串行 結(jié)構(gòu)實(shí)現(xiàn)方法。
背景技術(shù)
支持向量機(jī)(Support Vector Machines,SVM)是一種基于結(jié)構(gòu)風(fēng)險(xiǎn)最小化原則的 機(jī)器學(xué)習(xí)理論,它綜合了統(tǒng)計(jì)學(xué)習(xí)、機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)等方面的理論,并被證明在最小化 結(jié)構(gòu)風(fēng)險(xiǎn)的同時(shí),可有效地提高算法的推廣能力。目前對(duì)支持向量機(jī)的研究主要集中在理 論研究和算法的優(yōu)化方面。與之相比,其應(yīng)用研究和算法實(shí)現(xiàn)的研究則相對(duì)較少,目前只有 較為有限的實(shí)驗(yàn)研究報(bào)道。同時(shí)這些算法大多只能用計(jì)算機(jī)軟件來實(shí)現(xiàn),而不適合模擬硬 件的實(shí)現(xiàn),這顯然大大的限制了 SVM在實(shí)際中的應(yīng)用。目前已有神經(jīng)網(wǎng)絡(luò)與支持向量機(jī)結(jié)合的方法,并通過搭建模擬電路實(shí)現(xiàn)了對(duì)少量 訓(xùn)練樣本的分類計(jì)算,但是實(shí)現(xiàn)支持向量機(jī)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的模擬電路對(duì)電阻值的依賴性很 大,不同的分類實(shí)例會(huì)導(dǎo)致不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)與模擬電路結(jié)構(gòu)。近年來FPGA技術(shù)的發(fā)展 非常迅速,F(xiàn)PGA本身具有可重構(gòu)、消耗低、適應(yīng)性強(qiáng)和設(shè)計(jì)簡(jiǎn)單等優(yōu)點(diǎn),目前已有在FPGA環(huán) 境下的并行結(jié)構(gòu)的支持向量機(jī)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)方法,此方法克服了模擬電路環(huán)境下的對(duì)硬件 的依賴性,提高了 SVM的實(shí)用性,但是由于采用了并行結(jié)構(gòu),造成FPGA資源的浪費(fèi),對(duì)于大 規(guī)模樣本的訓(xùn)練難以實(shí)現(xiàn)。最小二乘支持向量機(jī)(英文的拼寫是Least Square Support Vector Machines,以下簡(jiǎn)稱縮寫為L(zhǎng)SSVM),因此提出一種基于最小二乘支持向量機(jī)的方 法,既可以達(dá)到要求而又減少資源利用,是十分必要的。

發(fā)明內(nèi)容
本發(fā)明的目的是,提供一種基于FPGA的最小二乘支持向量機(jī)串行結(jié)構(gòu)實(shí)現(xiàn)方法, 以便減少對(duì)FPGA資源的消耗,提高硬件實(shí)現(xiàn)的靈活性。本發(fā)明采用的技術(shù)方案是,一種基于FPGA的最小二乘支持向量機(jī)串行結(jié)構(gòu)實(shí)現(xiàn) 方法,該方法按以下步驟實(shí)施步驟1、根據(jù)樣本數(shù)量構(gòu)造LSSVM分類神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)根據(jù)給定樣本數(shù)量構(gòu)造LSSVM分類學(xué)習(xí)遞歸神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)為將
<formula>formula see original document page 6</formula>以及_byi接入Σ中進(jìn)行求和,Σ的輸出端接入積分器/ 1,積分器
f 1的輸出即為a j,同時(shí)將I (IjJi接入積分器/ 2,輸出b值,Cl j再經(jīng)權(quán)值-Qij反饋到
相對(duì)應(yīng)的Σ中,形成一個(gè)遞歸神經(jīng)網(wǎng)絡(luò);給定分類訓(xùn)練集(Zi,yi)是一組待分類的樣本,i = 1,2,...N,對(duì)于所有的Zi e Rn 都有yi e (+1,-1)為樣本相對(duì)應(yīng)的類別,其分類決策面為<formula>formula see original document page 6</formula>,其中W是權(quán)值向量,b是閾值,爐(Z)表示訓(xùn)練樣本從輸入空間到特征空間的非線性映射,LSSVM的分 類學(xué)習(xí)即解決下面受約束的優(yōu)化問題<formula>formula see original document page 7</formula>約束條件<formula>formula see original document page 7</formula>求解該問題引入Lagrange函數(shù)
<formula>formula see original document page 7</formula>其中α i為L(zhǎng)agrange乘子,利用KKT條件分別對(duì)Lagrange函數(shù)各個(gè)變量求偏導(dǎo), 得到該問題的最優(yōu)條件<formula>formula see original document page 7</formula><formula>formula see original document page 7</formula>其中<formula>formula see original document page 7</formula>,且二 CpOi/ CP(Zy)定義為核函數(shù),得到LSSVM分類學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型的動(dòng)態(tài)方程<formula>formula see original document page 7</formula><formula>formula see original document page 7</formula>(7)其中CiiSLagrange乘子,b是閾值,(Zi,yi)是一組待分類的樣本,i = 1,2,... N;步驟2、選用高斯核函數(shù),選擇參數(shù)Y—1 = Uo= 1,并計(jì)算<formula>formula see original document page 7</formula>步驟3、結(jié)合步驟2的結(jié)果,將動(dòng)態(tài)方程(6)、(7)進(jìn)行離散化處理,并設(shè)定步長(zhǎng)AT 值;將方程(6)、(7)進(jìn)行離散化處理后得到離散動(dòng)態(tài)方程⑶、(9)<formula>formula see original document page 7</formula>
<formula>formula see original document page 7</formula>步驟4、設(shè)定帶補(bǔ)碼的二進(jìn)制編碼的位數(shù),其中包括整數(shù)位的位數(shù)和小數(shù)位的位數(shù);步驟5、按照步驟4所設(shè)定的二進(jìn)制編碼的位數(shù)構(gòu)造基本的元件庫,包括運(yùn)算單 元、存儲(chǔ)單元和控制單元;運(yùn)算單元包括乘累加單元MAC、乘法器單元Mul、減法器單元Sub、累加器單元 ADD ; 存儲(chǔ)單元包括ROM和RAM ;控制單元調(diào)用ISE9. 1 中 IP 核,實(shí)現(xiàn) MAC、Mul、Sub、ADD 和 ROM ;步驟6、利用步驟5得到的元件庫,構(gòu)建neuro神經(jīng)元單元;步驟7 利用步驟5得到的元件庫,構(gòu)建Bisa_b神經(jīng)元單元;
步驟8 完成串行計(jì)算功能模塊的構(gòu)建使每個(gè)神經(jīng)元受控于一個(gè)時(shí)鐘控制信號(hào),每個(gè)神經(jīng)元一個(gè)周期內(nèi)計(jì)算完畢后,產(chǎn) 生一個(gè)有效控制信號(hào),當(dāng)神經(jīng)網(wǎng)絡(luò)控制單元接收到的所有神經(jīng)元的控制信號(hào)有效時(shí),產(chǎn)生 一個(gè)總的有效控制信號(hào)使全部神經(jīng)元進(jìn)入下一周期的運(yùn)算,當(dāng)網(wǎng)絡(luò)進(jìn)行遞歸運(yùn)算直至穩(wěn)定 時(shí),即求得收斂參數(shù)a,b。本發(fā)明方法以串行結(jié)構(gòu)的形式實(shí)現(xiàn)了神經(jīng)網(wǎng)絡(luò)最小二乘支持向量機(jī)的功能,與現(xiàn) 有技術(shù)的并行結(jié)構(gòu)相比,不僅減少了對(duì)FPGA資源的消耗,還提高了電路的靈活性,使LSSVM 的應(yīng)用更加廣泛。


圖1是現(xiàn)有的LSSVM分類學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖;圖2是本發(fā)明方法中的一種實(shí)現(xiàn)最小二乘支持向量機(jī)功能的串行神經(jīng)網(wǎng)絡(luò)實(shí)施 例結(jié)構(gòu)圖;圖3是本發(fā)明方法中的神經(jīng)網(wǎng)絡(luò)LSSVM串行算法流程圖;圖4是現(xiàn)有的16位的帶補(bǔ)碼的二進(jìn)制編碼示意圖;圖5是本發(fā)明方法中的編碼信號(hào)在運(yùn)算單元之間的流向圖;圖6是現(xiàn)有的編碼數(shù)據(jù)訓(xùn)練中處理過程示意圖;圖7是本發(fā)明方法中的神經(jīng)網(wǎng)絡(luò)LSSVM實(shí)現(xiàn)流程圖;圖8是本發(fā)明方法中的神經(jīng)網(wǎng)絡(luò)LSSVM的neuro神經(jīng)元FPGA實(shí)現(xiàn)結(jié)構(gòu)圖;圖9是本發(fā)明方法中的神經(jīng)網(wǎng)絡(luò)LSSVM的bias_b神經(jīng)元FPGA實(shí)現(xiàn)結(jié)構(gòu)圖;圖10為本實(shí)施例采用現(xiàn)有的神經(jīng)網(wǎng)絡(luò)LSSVM并行計(jì)算結(jié)構(gòu)的FPGA實(shí)現(xiàn)方法得到 的各參數(shù)的值。圖11中的曲線是由圖10中的收斂參數(shù)α,b求得的分類超平面,其中“O”代表正 類樣本、“*”代表負(fù)類樣本。圖12為本發(fā)明實(shí)施例的神經(jīng)網(wǎng)絡(luò)LSSVM串行計(jì)算的FPGA實(shí)現(xiàn)方法得到的各參數(shù) 的值。圖13中的曲線是由圖12中的收斂參數(shù)α,b求得的分類超平面,其中“O”代表正 類樣本;“*”代表負(fù)類樣本。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行詳細(xì)說明。本發(fā)明是基于FPGA的最小二乘支持向量機(jī)串行結(jié)構(gòu)實(shí)現(xiàn)方法,按照以下步驟具 體實(shí)施步驟1、根據(jù)樣本數(shù)量構(gòu)造LSSVM分類神經(jīng)網(wǎng)絡(luò)的拓?fù)?結(jié)構(gòu)給定分類訓(xùn)練集(Zi,Yi)是一組待分類的樣本,i = 1,2, ...N,對(duì)于所
有的Zi e Rn都有yi e (+1,-1),其分類決策面可以描述為/(Z) =妒+辦,
其中W是權(quán)值向量,b是閾值,φ{(diào)Ζ)用來表示訓(xùn)練樣本從輸入空間到特
征空間的非線性映射。LSSVM的分類學(xué)習(xí)即解決下面受約束的優(yōu)化問題
ιι
minJ(W,e) = -WtW + y^e](i)
^'e 2 /=1約束條件為兄.[Wrφ(Χ ) + = 1 - A,i = 1,· · · 1(2)求解該問題可引入Lagrange函數(shù)
L(w,b,e,a) = \wrw +rf^ef - f4ai{yi[WT φ(χ, ) + b] + er 1} (3) ^ i=l ;=1其中α i為L(zhǎng)agrange乘子,利用KKT條件分別對(duì)Lagrange函數(shù)各個(gè)變量求偏導(dǎo) 可以得到該問題的最優(yōu)條件
N1 - by 2 ^jqij-= 0(4)
NYj a t y i = 0(5)
i = l其中% = Yi Yj Kij,且= φ(ζιΥ鏟Oy.)定義為核函數(shù),如果核函數(shù)滿足
Merce條件,并且對(duì)稱陣Q。= Lqij]是正定的,則該問題是一個(gè)最優(yōu)化的凸問題,即它只有一 個(gè)全局解。神經(jīng)網(wǎng)絡(luò)模型由下面的動(dòng)態(tài)方程來描述
QJ N= (6)=C^qij - γ~ια{(7) 0ai M圖1為現(xiàn)有的LSSVM分類學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)圖,-αΛι···-αΝ qiN、 1、_ Y ―1 α i以及-byi接入Σ中進(jìn)行求和,Σ的輸出端接入積分器f,積分器f的輸出即為 α ^而α i再經(jīng)權(quán)值-Qij反饋到各相對(duì)應(yīng)的Σ中,形成一個(gè)遞歸神經(jīng)網(wǎng)絡(luò)。圖1的拓?fù)浣Y(jié)構(gòu)圖,其設(shè)計(jì)思想是并行計(jì)算m個(gè)α,同時(shí)根據(jù)實(shí)時(shí)變化的一組α 值計(jì)算b值,這樣做的結(jié)果導(dǎo)致了其計(jì)算的核心部分所占用的資源與樣本數(shù)m有著直接的 關(guān)系。當(dāng)樣本數(shù)變化時(shí),必須同時(shí)增加硬件的實(shí)現(xiàn)模塊,這樣雖然在速度上得到了很大的優(yōu)勢(shì),但是由于資源的變化和結(jié)構(gòu)的復(fù)雜會(huì)使其在應(yīng)用時(shí)有很大的局限性。因此,當(dāng)樣本數(shù)增 加時(shí),該結(jié)構(gòu)所實(shí)現(xiàn)的LSSVM將大量消耗FPGA的資源,并且使結(jié)構(gòu)的復(fù)雜程度增加。假設(shè) 需要的樣本數(shù)為m個(gè),對(duì)每個(gè)樣本進(jìn)行訓(xùn)練需要占用的FPGA資源為,那么m個(gè)樣本總共 要占用FPGA里mX 的資源,這樣很容易造成資源利用超出實(shí)際資源總量的問題,這樣也 將限制其在嵌入式系統(tǒng)中的應(yīng)用。圖2是本發(fā)明方法所使用的結(jié)構(gòu)圖,根據(jù)給定樣本數(shù)量構(gòu)造LSSVM分類學(xué)習(xí)遞歸
N
神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)為將Σ aJ^ij、1、- Ρα』以及_byi接入Σ中進(jìn)行求和,Σ的輸出
端接入積分器/ 1,積分器/ 1的輸出即為aj,同時(shí)將[(XjJK1接入積分器/ 2,輸出b值,
a j再經(jīng)權(quán)值-Qij反饋到相對(duì)應(yīng)的Σ中,形成一個(gè)遞歸神經(jīng)網(wǎng)絡(luò)。圖2對(duì)圖1的結(jié)構(gòu)進(jìn)行了優(yōu)化,雖然是以串行的方式進(jìn)行計(jì)算,但并沒有改變神經(jīng) 網(wǎng)絡(luò)LSSVM的并行結(jié)構(gòu),這樣就避免了實(shí)際電路與樣本數(shù)的直接關(guān)系,可以在不改變實(shí)際 電路的情況下完成實(shí)際樣本數(shù)未定的訓(xùn)練工作,其核心算法如圖3所示。由圖3可以看出 每次先循環(huán)計(jì)算η個(gè)α值后再通過所有α值計(jì)算b值,這樣就避免了建立多個(gè)單元訓(xùn)練 α值造成資源浪費(fèi),而計(jì)算的每個(gè)α值也不受隨時(shí)改變的其他α值的影響,因?yàn)楸敬斡?jì)算 的α值只與上個(gè)周期計(jì)算的η個(gè)α值有關(guān)。當(dāng)然,要根據(jù)FPGA的資源來設(shè)定一個(gè)最大的 訓(xùn)練樣本數(shù),只要訓(xùn)練樣本數(shù)不超過這個(gè)設(shè)定的范圍,通過串行的計(jì)算方法,反復(fù)利用同一 塊資源,即可使得硬件面積得到減少。步驟2、根據(jù)已有方法選用合適的核函數(shù)及核函數(shù)參數(shù),并計(jì)算
<formula>formula see original document page 10</formula>可以選用高斯核函數(shù),選擇參數(shù)Y^ = L0 = 1 ;步驟3、將動(dòng)態(tài)方程(6)、(7)進(jìn)行離散化處理,并設(shè)定步長(zhǎng)Δ T值由于FPGA本身不能直接實(shí)現(xiàn)連續(xù)動(dòng)態(tài)方程,所以將動(dòng)態(tài)方程(6)、(7)進(jìn)行離散化 處理后得到離散動(dòng)態(tài)方程(8)、(9)<formula>formula see original document page 10</formula>
<formula>formula see original document page 10</formula>動(dòng)態(tài)方程(8)、(9)中ΔΤ是采樣的時(shí)間間隔,后面將在步驟6、步驟7對(duì)如何用 FPGA實(shí)現(xiàn)動(dòng)態(tài)方程(8)、(9)進(jìn)行詳細(xì)說明。步驟4、選擇帶補(bǔ)碼的二進(jìn)制編碼的位數(shù),其中包括整數(shù)位的位數(shù)和小數(shù)位的位數(shù)本發(fā)明方法創(chuàng)建的元件庫中的元件,輸入與輸出信號(hào)均采用帶補(bǔ)碼的二進(jìn)制編 碼。對(duì)應(yīng)基本元件的運(yùn)算均為定點(diǎn)運(yùn)算,在定點(diǎn)運(yùn)算中小數(shù)點(diǎn)的位置是由設(shè)計(jì)者自己決定 的,在實(shí)際的硬件實(shí)現(xiàn)中并沒有單獨(dú)存儲(chǔ)的單元來存放小數(shù)點(diǎn)的位置。對(duì)于設(shè)計(jì)者來說,它 只是一個(gè)虛擬的存在,只需要設(shè)計(jì)者記住它的位置,在實(shí)際的運(yùn)算過程中是沒有影響的。信號(hào)的編碼長(zhǎng)度范圍可以通過設(shè)計(jì)者經(jīng)驗(yàn)或是軟件仿真得到。本發(fā)明方法中的另一個(gè)重要技術(shù)問題是中間數(shù)據(jù)處理,由于所提出的網(wǎng)絡(luò)都具有 遞歸特性,對(duì)于這類網(wǎng)絡(luò),輸入給定后訓(xùn)練過程是一個(gè)自己的不斷迭代過程,這個(gè)過程中是 很難進(jìn)行人為干預(yù)的。對(duì)于一個(gè)神經(jīng)元在一個(gè)周期中的運(yùn)算包括了乘法器和乘累加器等運(yùn) 算單元,這類運(yùn)算單元會(huì)導(dǎo)致輸出信號(hào)與輸入信號(hào)的表達(dá)方式的不一致。圖4所示為一個(gè) 16位的帶補(bǔ)碼的二進(jìn)制編碼數(shù),其中S代表符號(hào)位,F(xiàn)為整數(shù)位,I為小數(shù)位。參照?qǐng)D5,以一 個(gè)乘法器和一個(gè)減法器的組合為例進(jìn)行說明,乘法器(Mul)的輸入信號(hào)a和b都是長(zhǎng)度為 16位的帶補(bǔ)碼的二進(jìn)制編碼,則其輸出信號(hào)C為長(zhǎng)度為32位的帶補(bǔ)碼的二進(jìn)制編碼。而對(duì) 于乘法器的輸出信號(hào)C要作為減法器(Sub)的一個(gè)輸入信號(hào),但是減法器(Sub)設(shè)定的輸 入信號(hào)編碼長(zhǎng)度為16位帶補(bǔ)碼的二進(jìn)制編碼,所以在此之前要經(jīng)過一個(gè)數(shù)據(jù)處理過程,將 32位的帶補(bǔ)碼的二進(jìn)制編碼C轉(zhuǎn)換為16位的帶補(bǔ)碼的二進(jìn)制編碼C ;參照?qǐng)D6,對(duì)32位編 碼C做如下處理,舍掉其中的部分整數(shù)位和部分小數(shù)位,如果剩余整數(shù)部分能夠表示所有 的整數(shù)位,那么舍去整數(shù)位部分對(duì)結(jié)果是沒有影響的;對(duì)于舍去小數(shù)部分,如果信號(hào)小數(shù)位 取得足夠多,那么舍掉圖4所示的小數(shù)部分,對(duì)結(jié)果的影響是很小的,可以忽略,因此,當(dāng)經(jīng) 過圖6所示的部分舍去處理后,就可以得到與圖4相同形式16位的帶補(bǔ)碼的二進(jìn)制編碼。步驟5、構(gòu)造基本的元件庫,包括運(yùn)算單元、存儲(chǔ)單元和控制單元FPGA本身的可編程性增強(qiáng)了電路設(shè)計(jì)的靈活性,故本發(fā)明方法中的主要手段是 FPGA通常采用的VHDL編程語言,圖7進(jìn)一步說明VHDL語言是如何運(yùn)用在LSSVM分類學(xué)習(xí)神 經(jīng)網(wǎng)絡(luò)中的。圖7中最底層的兩個(gè)方框代表構(gòu)建的基本元件庫主要包括乘累加單元(Mac、 Bias)、乘法器單元(Mul)、減法器單元(Sub)、累加器單元(Add)以及存儲(chǔ)單元ROM和RAM。 在基本元件的實(shí)現(xiàn)手段上,有些采用VHDL語言編程實(shí)現(xiàn),而還有一些則采用第三方的IP核 實(shí)現(xiàn)。本發(fā)明所涉及的IP核均為軟IP核,不含具體的物理信息。第二層的方框代表神經(jīng) 元,其中neuro和bias_b分別代表計(jì)算α和b的神經(jīng)元,它們都是通過編寫vhd文件調(diào)用 最底層中基本元件庫中的元件實(shí)現(xiàn)的。最上面的方框代表整個(gè)LSSVM神經(jīng)網(wǎng)絡(luò),它也是通 過編寫vhd文件調(diào)用第二層的神經(jīng)元文件實(shí)現(xiàn)的。步驟6、構(gòu)建LSSVM分類神經(jīng)網(wǎng)絡(luò)的neuro神經(jīng)元單元圖8為圖4中的neuro神經(jīng)元的FPGA實(shí)現(xiàn)結(jié)構(gòu)圖,該模塊執(zhí)行計(jì)算 α的功能,也是整個(gè)LSSVM框架的核心計(jì)算部分,它完成了動(dòng)態(tài)方程(9)的計(jì) 算。其中包括乘累加單元(MAC)、乘法器單元(Mul)、減法器單元(Sub)、累加器單 元(ADD)以及存儲(chǔ)單元ROM、RAM和RAMI。ROM中存放的q u是網(wǎng)絡(luò)的權(quán)值,Mull、 Mul2和Mul3是對(duì)基本元件庫中的元件Mul的映射元件,分別用來計(jì)算動(dòng)態(tài)方9 中的<formula>formula see original document page 11</formula>
Sub2和Sub3是對(duì)基本元件庫中的元件Sub的映射元件,分別用來計(jì)算<formula>formula see original document page 11</formula> 的輸入端口 y輸入的Ii是分類的標(biāo)識(shí),Mul2的輸入端口 b輸入的γ為懲罰因子。RAM和RAMI 中存放的為一組α值,Mull的輸入端口 b輸入的b值為表網(wǎng)絡(luò)的閾值,初始時(shí)所有α值和b值可人為設(shè)定為任意值,本發(fā)明設(shè)置初始值為O。由步驟4知道shift單元是用來將數(shù)據(jù) 限制在指定的范圍內(nèi)。不同于一般的神經(jīng)網(wǎng)絡(luò),對(duì)于具有遞歸特性的神經(jīng)網(wǎng)絡(luò)LSSVM,網(wǎng)絡(luò) 的權(quán)值Qij是由訓(xùn)練樣本的值決定的,并且網(wǎng)絡(luò)的權(quán)值不是實(shí)時(shí)更新的。對(duì)于一個(gè)特定的問 題,訓(xùn)練樣本的值是固定的,即神經(jīng)網(wǎng)絡(luò)LSSVM的網(wǎng)絡(luò)權(quán)值在訓(xùn)練的過程中不變化。所 以在網(wǎng)絡(luò)訓(xùn)練前,根據(jù)訓(xùn)練樣本計(jì)算好權(quán)值qij;存放在ROM單元中。FPGA實(shí)現(xiàn)結(jié)構(gòu)建立之后,網(wǎng)絡(luò)進(jìn)入訓(xùn)練過程。由于本網(wǎng)絡(luò)具有遞歸的特點(diǎn),所以 在此只對(duì)一個(gè)小周期內(nèi)的神經(jīng)元運(yùn)作進(jìn)行說明。先定義一個(gè)大訓(xùn)練樣本周期為計(jì)算完所有 α值的一個(gè)周期,一個(gè)小訓(xùn)練樣本周期為計(jì)算其中一個(gè)Cii值的周期,當(dāng)上一個(gè)大周期結(jié)束 時(shí),產(chǎn)生一組訓(xùn)練參數(shù)ajt),a2(t), ... a Jt),并將這組參數(shù)值存入到RAMI單元中,這 是考慮到資源的節(jié)省問題以及結(jié)構(gòu)的簡(jiǎn)單化,而使用的流水線技術(shù),同時(shí)也保證了網(wǎng)絡(luò)的 并行性。當(dāng)后續(xù)計(jì)算需要使用這些參數(shù)值時(shí),再?gòu)腞AMI中讀取。如圖8,可以把整個(gè)神經(jīng)網(wǎng) 絡(luò)LSSVM計(jì)算α值的FPGA實(shí)現(xiàn)過程分為如下六個(gè)階段
1)、當(dāng)數(shù)據(jù)存儲(chǔ)完畢,此時(shí)從ROM和RAMI中同時(shí)讀取數(shù)據(jù),輸入到MAC單元中,其 中在一個(gè)觸發(fā)沿中的dj(t)和Qij是相互對(duì)應(yīng)的。與此同時(shí),分別通過Mull和Mul2計(jì)算 b (t) yi、Y-1Qi (t),這樣一來,當(dāng)兩個(gè)或是幾個(gè)模塊并行計(jì)算時(shí),就可以節(jié)省網(wǎng)絡(luò)的訓(xùn)練時(shí) 間;
N2)、等待Mac單元運(yùn)算完畢,將結(jié)果Σ α 和b (t) Yi輸入到Sub的映射單元
1 = 1
Sub 1,完成l-b(t)yi的計(jì)算;
N3)、等待Mac單元和Subl單元運(yùn)算完畢,將Σ y 和l_b (t) 送入Sub2,完成
/ = 1
N
!-辦⑴乂 —乙…⑴力的計(jì)算; j=l4)、將Sub2單元的結(jié)果和Mul2單元的結(jié)果送入Sub3,完成
N
1 — b(t)yi-^ ajCOqy _ Y-1OiiCt)的計(jì)算;
J=I5)、再將Sub3的結(jié)果與設(shè)定好的AT送入Mul3,計(jì)算ΔΤ與
N
1 - b{t)y- Σ ajit)^ij ~ y一1⑴的乘積。
M6)、完成ADD累加運(yùn)算,由于對(duì)動(dòng)態(tài)方程(7)進(jìn)行離散化處理后,最后的積分單元 變?yōu)榱艘粋€(gè)累加單元,因此ADD用來將本次得出的α廣1值及上一大周期得到的、η值進(jìn)行 累加(這里η為大周期次數(shù)),并將更新的值存入RAM單元中。由于計(jì)算和比較過程需要用 到上一個(gè)大周期計(jì)算出的αΛ所以利用RAM和RAMI來保存本次計(jì)算的一組αη+1值和上一 大周期計(jì)算的一組αη值。為了方便比較和累加,根據(jù)計(jì)算每個(gè)、值的小周期,臨時(shí)將上 一大周期的、值保存中。由于采用的是定點(diǎn)運(yùn)算,因此shift單元用來將數(shù)據(jù)限 制在指定的范圍內(nèi),并且為了不影響數(shù)據(jù)的精度,限制的范圍選用(-15,15)。在計(jì)算完第 n+1步、值后,再計(jì)算第n+1步ai+1,直到計(jì)算完k個(gè)α值(k為訓(xùn)練樣本數(shù)),即完成了串行計(jì)算方式。步驟7、構(gòu)建LSSVM分類神經(jīng)網(wǎng)絡(luò)的Bias_b神經(jīng)元單元圖9為圖4中的bias_b神經(jīng)元的FPGA實(shí)現(xiàn)結(jié)構(gòu)圖。該模塊執(zhí)行計(jì)算b的功能,完成動(dòng)態(tài)方程(8)的計(jì)算。其中包括乘累加單元 (Bias)、乘法器單元(Mul)、累加器單元(ADD)以及存儲(chǔ)單元RAMI。其中Bias單元用來計(jì)
算 H 'Mul單元計(jì)算ΔΓ^; 兄,ADD單元用來累加b值。其中的存儲(chǔ)單元RAMI調(diào)用 /=1 i=\
的是圖8中的存儲(chǔ)單元RAMI。由步驟4知道shift單元是用來將數(shù)據(jù)限制在指定的范圍
內(nèi)。首先從RAMI中讀取一組α值按順序放入Bias模塊的a端口,同時(shí)Bias模塊的b 端口按順序輸入一組類別y值,并完成 ;…幾的計(jì)算。之后將Bias模塊的計(jì)算結(jié)果發(fā)送到
Mul單元的a端口,Mul單元的b端口為開始就輸入的Δ T值,在Mul單元完成Δ Γ f α,γ,
/ = I
的計(jì)算。然后將Mul單元的計(jì)算結(jié)果臨時(shí)保存在b單元中。bl單元保存的為上一個(gè)大周期 的b值,若為第一次計(jì)算,則可將初始b值設(shè)為零。最后將b單元和bl單元的兩個(gè)b值分 別送入ADD單元的a端口和b端口,完成累加計(jì)算,并將最后累加的b值放入bl單元,等待 下一個(gè)大周期的b值累加計(jì)算。由于b值的計(jì)算與上一大周期的所有α i值有關(guān),而在每個(gè)小周期內(nèi)所計(jì)算的只 是其中一個(gè)α i值,8卩α i值隨著小周期隨時(shí)更新,因此對(duì)于b值的計(jì)算統(tǒng)一放在最后一個(gè) 小周期的α 1值計(jì)算完畢時(shí),此時(shí)的更新將是在新的一組Cii值情況下得到的新的b值,并 且此b值將一直保存到下一個(gè)大周期的最后一個(gè)小周期內(nèi),直到下一新的b值計(jì)算出。由 于對(duì)b值的計(jì)算最后一環(huán)節(jié)需要與上一大周期的b值進(jìn)行累加,因此在每次更新b值后將 其臨時(shí)存儲(chǔ)在圖9的bl模塊中。步驟8、在構(gòu)建完以上兩個(gè)神經(jīng)元單元后,使網(wǎng)絡(luò)進(jìn)行遞歸運(yùn)算,當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),求 得收斂參數(shù)a,b。在使用VHDL語言進(jìn)行實(shí)現(xiàn)時(shí),將神經(jīng)元neuro和bias_b分別當(dāng)作一個(gè)實(shí)體元件。 構(gòu)建neuro. vhd和bias, vhd文件,通過component語句來調(diào)用元件庫中的元件,這樣做當(dāng) 需要對(duì)網(wǎng)絡(luò)進(jìn)行局部改動(dòng)的時(shí)候,只需要改變或替換元件庫中的基本單元即可構(gòu)成新的網(wǎng) 絡(luò),具有更好的可拓展性。通過圖8和圖9的流程就完成了串行計(jì)算功能模塊的構(gòu)建。為了很好的完成網(wǎng)絡(luò) 的計(jì)算功能,在本發(fā)明中使每個(gè)神經(jīng)元受控于一個(gè)時(shí)鐘控制信號(hào),每個(gè)神經(jīng)元一個(gè)周期內(nèi) 計(jì)算完畢后,都會(huì)產(chǎn)生一個(gè)有效控制信號(hào),當(dāng)神經(jīng)網(wǎng)絡(luò)控制單元接收到的所有神經(jīng)元的控 制信號(hào)有效時(shí),將會(huì)產(chǎn)生一個(gè)總的有效控制信號(hào)使全部神經(jīng)元進(jìn)入下一周期的運(yùn)算。同樣 使用component語句調(diào)用神經(jīng)元模塊,此方法便于增減神經(jīng)網(wǎng)絡(luò)中訓(xùn)練樣本的個(gè)數(shù)以便于 網(wǎng)絡(luò)規(guī)模的變化。由上可見,本發(fā)明所述的基于串行計(jì)算的神經(jīng)網(wǎng)絡(luò)最小二乘支持向量分類機(jī)的 FPGA實(shí)現(xiàn)方法,按以下步驟實(shí)施步驟1 根據(jù)樣本數(shù)量構(gòu)造LSSVM分類神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),如圖2所示;
步驟2 選用高斯核函數(shù),選擇參數(shù)γ—1 = 1、σ =1,并計(jì)算
<formula>formula see original document page 14</formula>步驟3 將動(dòng)態(tài)方程(6)、(7)進(jìn)行離散化處理,并設(shè)定步長(zhǎng)Δ T值;步驟4:選擇帶補(bǔ)碼的二進(jìn)制編碼的位數(shù),其中包括整數(shù)位的位數(shù)和小數(shù)位的位 數(shù),如選擇1位符號(hào)位、14位整數(shù)位和15位小數(shù)位;步驟5 構(gòu)造基本的元件庫,包括運(yùn)算單元、存儲(chǔ)單元和控制單元;步驟6 根據(jù)圖8流程,構(gòu)建LSSVM分類神經(jīng)網(wǎng)絡(luò)的neuro神經(jīng)元單元;步驟7 根據(jù)圖9流程,構(gòu)建LSSVM分類神經(jīng)網(wǎng)絡(luò)的Bias_b神經(jīng)元單元,在步驟6 完成最后一個(gè)α值計(jì)算后,計(jì)算b值;步驟8 將步驟6與步驟7構(gòu)建的神經(jīng)元看作基本元件,構(gòu)建整個(gè)網(wǎng)絡(luò)的控制模 塊,然后使網(wǎng)絡(luò)進(jìn)行遞歸運(yùn)算,當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),求得收斂參數(shù)α,b。
實(shí)施例“一個(gè)R2的7個(gè)樣本點(diǎn)線性可分的驗(yàn)證實(shí)例”,設(shè)置Z1= (3,1), Z2 = (3,2), Z3 =(3,3), Z4 = (5,1), Z5 = (5,2), Z6 = (5,3), Z7 = (5,1. 5),相對(duì)應(yīng)的類別為(+1,+1, +1,-1,-1,-1,-D0步驟1 根據(jù)7個(gè)樣本構(gòu)造LSSVM分類學(xué)習(xí)遞歸神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu);步驟2 采用高斯核函數(shù),選擇f1 = 1,σ = 1,并計(jì)算<formula>formula see original document page 14</formula>步驟3 將動(dòng)態(tài)方程(6) (7)進(jìn)行離散化處理,取步長(zhǎng)AT = 2_3S ;步驟4 選擇所使用的帶補(bǔ)碼的二進(jìn)制編碼的位數(shù)為30位,其中包括1位符號(hào)位、 14位整數(shù)位和15位小數(shù)位;步驟5 構(gòu)造乘累加單元(MAC、Bias)、乘法器單元(Mul)、減法器單元(Sub)、累加 器單元(ADD)以及存儲(chǔ)單元R0M、RAM和RAMI,其中調(diào)用ISE9. 1中IP核實(shí)現(xiàn)MAC、Mul、Sub、 ADD和ROM,編寫vhd文件實(shí)現(xiàn);步驟6 根據(jù)圖8流程,先將根據(jù)樣本計(jì)算得到的存儲(chǔ)在ROM中,然后按照計(jì)算 順序設(shè)計(jì)各個(gè)運(yùn)算單元之間連接和觸發(fā)順序;步驟7:根據(jù)圖9流程,在步驟6完成最后一個(gè)α值計(jì)算后,計(jì)算b值;步驟8 將步驟6與步驟7構(gòu)建的神經(jīng)元看作基本元件,構(gòu)建整個(gè)網(wǎng)絡(luò)的控制模 塊。使網(wǎng)絡(luò)進(jìn)行遞歸運(yùn)算,當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),求得收斂參數(shù)a,b。圖10為本實(shí)施例采用現(xiàn)有的神經(jīng)網(wǎng)絡(luò)LSSVM并行計(jì)算結(jié)構(gòu)的FPGA實(shí)現(xiàn)方法得到 的各參數(shù)的值。圖11中的曲線是由圖10中的收斂參數(shù)α,b求得的分類超平面。圖12為本發(fā)明實(shí)施例的神經(jīng)網(wǎng)絡(luò)LSSVM串行計(jì)算的FPGA實(shí)現(xiàn)方法得到的各參數(shù) 的值。圖13中的曲線是由圖12中的收斂參數(shù)α,b求得的分類超平面。該實(shí)施例基于LSSVM分類學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)這兩種實(shí)現(xiàn)方法所需時(shí)間和資源占用情況是并行結(jié)構(gòu)實(shí)驗(yàn)所用時(shí)間為2. 346X10_4s,資源占用為103% ;串行結(jié)構(gòu)實(shí)驗(yàn)所用時(shí)間為3. 108X10_4s,資源占用為25%。從最后分類超平面的分類效果上看,兩種實(shí)現(xiàn)方法都較 好的完成了本發(fā)明的分類目的,但使用本發(fā)明的方法所消耗的FPGA資源比現(xiàn)有方法更少。
綜上所述,本發(fā)明的神經(jīng)網(wǎng)絡(luò)LSSVM串行計(jì)算的FPGA實(shí)現(xiàn)方法,主要采用了結(jié)構(gòu) 化的VHDL語言對(duì)網(wǎng)絡(luò)離散化后的動(dòng)態(tài)方程進(jìn)行描述,按照基本元件、神經(jīng)元、神經(jīng)網(wǎng)絡(luò)的 自上向下進(jìn)行構(gòu)建,不僅降低了 FPGA資源的消耗,而且克服了模擬電路實(shí)現(xiàn)靈活性不足的 缺點(diǎn),可以較好的適應(yīng)應(yīng)用環(huán)境的改變,使支持向量機(jī)的應(yīng)用范圍更加廣泛。
權(quán)利要求
一種基于FPGA的最小二乘支持向量機(jī)串行結(jié)構(gòu)實(shí)現(xiàn)方法,其特征在于,該方法按以下步驟實(shí)施步驟1、根據(jù)樣本數(shù)量構(gòu)造LSSVM分類神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)根據(jù)給定樣本數(shù)量構(gòu)造LSSVM分類學(xué)習(xí)遞歸神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)為將1、-γ-1αj以及-byi接入∑中進(jìn)行求和,∑的輸出端接入積分器∫1,積分器∫1的輸出即為αj,同時(shí)將接入積分器∫2,輸出b值,αj再經(jīng)權(quán)值-qij反饋到相對(duì)應(yīng)的∑中,形成一個(gè)遞歸神經(jīng)網(wǎng)絡(luò);給定分類訓(xùn)練集(zi,yi)是一組待分類的樣本,i=1,2,...N,對(duì)于所有的zi∈RN都有yi∈(+1,-1)為樣本相對(duì)應(yīng)的類別,其分類決策面為其中W是權(quán)值向量,b是閾值,表示訓(xùn)練樣本從輸入空間到特征空間的非線性映射,LSSVM的分類學(xué)習(xí)即解決下面受約束的優(yōu)化問題 <mrow><munder> <mi>min</mi> <mrow><mi>W</mi><mo>,</mo><mi>e</mi> </mrow></munder><mi>J</mi><mrow> <mo>(</mo> <mi>W</mi> <mo>,</mo> <mi>e</mi> <mo>)</mo></mrow><mo>=</mo><mfrac> <mn>1</mn> <mn>2</mn></mfrac><msup> <mi>W</mi> <mi>T</mi></msup><mi>W</mi><mo>+</mo><mi>&gamma;</mi><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>l</mi></munderover><msubsup> <mi>e</mi> <mi>i</mi> <mn>2</mn></msubsup><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo></mrow> </mrow>約束條件求解該問題引入Lagrange函數(shù)其中αi為L(zhǎng)agrange乘子,利用KKT條件分別對(duì)Lagrange函數(shù)各個(gè)變量求偏導(dǎo),得到該問題的最優(yōu)條件 <mrow><mn>1</mn><mo>-</mo><msub> <mi>by</mi> <mi>i</mi></msub><mo>-</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>j</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><msub> <mi>&alpha;</mi> <mi>j</mi></msub><msub> <mi>q</mi> <mi>ij</mi></msub><mo>-</mo><msup> <mi>&gamma;</mi> <mrow><mo>-</mo><mn>1</mn> </mrow></msup><msub> <mi>&alpha;</mi> <mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo></mrow> </mrow> <mrow><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><msub> <mi>&alpha;</mi> <mi>i</mi></msub><msub> <mi>y</mi> <mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo></mrow> </mrow>其中qij=y(tǒng)iyj Kij,且定義為核函數(shù),得到LSSVM分類學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型的動(dòng)態(tài)方程 <mrow><mover> <mi>b</mi> <mo>.</mo></mover><mo>=</mo><mfrac> <mrow><mo>&PartialD;</mo><mi>J</mi> </mrow> <mrow><mo>&PartialD;</mo><mi>b</mi> </mrow></mfrac><mo>=</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><msub> <mi>&alpha;</mi> <mi>i</mi></msub><msub> <mi>y</mi> <mi>i</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo></mrow> </mrow> <mrow><msub> <mover><mi>&alpha;</mi><mo>.</mo> </mover> <mi>i</mi></msub><mo>=</mo><mo>-</mo><mfrac> <mrow><mo>&PartialD;</mo><mi>J</mi> </mrow> <mrow><mo>&PartialD;</mo><msub> <mi>&alpha;</mi> <mi>i</mi></msub> </mrow></mfrac><mo>=</mo><mn>1</mn><mo>-</mo><msub> <mi>by</mi> <mi>i</mi></msub><mo>-</mo><munderover> <mi>&Sigma;</mi> <mrow><mi>j</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><msub> <mi>&alpha;</mi> <mi>j</mi></msub><msub> <mi>q</mi> <mi>ij</mi></msub><mo>-</mo><msup> <mi>&gamma;</mi> <mrow><mo>-</mo><mn>1</mn> </mrow></msup><msub> <mi>&alpha;</mi> <mi>i</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo></mrow> </mrow>其中αi為L(zhǎng)agrange乘子,b是閾值,(zi,yi)是一組待分類的樣本,i=1,2,...N;步驟2、選用高斯核函數(shù),選擇參數(shù)γ-1=1、σ=1,并計(jì)算步驟3、結(jié)合步驟2的結(jié)果,將動(dòng)態(tài)方程(6)、(7)進(jìn)行離散化處理,并設(shè)定步長(zhǎng)ΔT值;將方程(6)、(7)進(jìn)行離散化處理后得到離散動(dòng)態(tài)方程(8)、(9) <mrow><mi>b</mi><mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>&Delta;T</mi> <mo>)</mo></mrow><mo>=</mo><mi>&Delta;T</mi><munderover> <mi>&Sigma;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>N</mi></munderover><msub> <mi>&alpha;</mi> <mi>i</mi></msub><mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo></mrow><msub> <mi>y</mi> <mi>i</mi></msub><mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo></mrow><mo>+</mo><mi>b</mi><mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo></mrow> </mrow> <mrow><msub> <mi>&alpha;</mi> <mi>i</mi></msub><mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>&Delta;T</mi> <mo>)</mo></mrow><mo>=</mo><mi>&Delta;T</mi><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>b</mi> <mrow><mo>(</mo><mi>t</mi><mo>)</mo> </mrow> <msub><mi>y</mi><mi>i</mi> </msub> <mo>-</mo> <munderover><mi>&Sigma;</mi><mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn></mrow><mi>N</mi> </munderover> <msub><mi>&alpha;</mi><mi>j</mi> </msub> <mrow><mo>(</mo><mi>t</mi><mo>)</mo> </mrow> <msub><mi>q</mi><mi>ij</mi> </msub> <mo>-</mo> <msup><mi>&gamma;</mi><mrow> <mo>-</mo> <mn>1</mn></mrow> </msup> <msub><mi>&alpha;</mi><mi>i</mi> </msub> <mrow><mo>(</mo><mi>t</mi><mo>)</mo> </mrow> <mo>)</mo></mrow><mo>+</mo><msub> <mi>&alpha;</mi> <mi>i</mi></msub><mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo></mrow><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo></mrow> </mrow>步驟4、設(shè)定帶補(bǔ)碼的二進(jìn)制編碼的位數(shù),其中包括整數(shù)位的位數(shù)和小數(shù)位的位數(shù);步驟5、按照步驟4所設(shè)定的二進(jìn)制編碼的位數(shù)構(gòu)造基本的元件庫,包括運(yùn)算單元、存儲(chǔ)單元和控制單元;運(yùn)算單元包括乘累加單元MAC、乘法器單元Mul、減法器單元Sub、累加器單元ADD;存儲(chǔ)單元包括ROM和RAM;控制單元調(diào)用ISE9.1中IP核,實(shí)現(xiàn)MAC、Mul、Sub、ADD和ROM;步驟6、利用步驟5得到的元件庫,構(gòu)建neuro神經(jīng)元單元;步驟7利用步驟5得到的元件庫,構(gòu)建Bisa_b神經(jīng)元單元;步驟8完成串行計(jì)算功能模塊的構(gòu)建使每個(gè)神經(jīng)元受控于一個(gè)時(shí)鐘控制信號(hào),每個(gè)神經(jīng)元一個(gè)周期內(nèi)計(jì)算完畢后,產(chǎn)生一個(gè)有效控制信號(hào),當(dāng)神經(jīng)網(wǎng)絡(luò)控制單元接收到的所有神經(jīng)元的控制信號(hào)有效時(shí),產(chǎn)生一個(gè)總的有效控制信號(hào)使全部神經(jīng)元進(jìn)入下一周期的運(yùn)算,當(dāng)網(wǎng)絡(luò)進(jìn)行遞歸運(yùn)算直至穩(wěn)定時(shí),即求得收斂參數(shù)α,b。FSA00000067026200011.tif,FSA00000067026200012.tif,FSA00000067026200013.tif,FSA00000067026200014.tif,FSA00000067026200016.tif,FSA00000067026200017.tif,FSA00000067026200023.tif,FSA00000067026200026.tif
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的步驟4中,具體步驟是設(shè)定乘法器Mul的輸入信號(hào)a和b都是長(zhǎng)度為16位的帶補(bǔ)碼的二進(jìn)制編碼,則輸出信 號(hào)C為長(zhǎng)度為32位的帶補(bǔ)碼的二進(jìn)制編碼,將32位的帶補(bǔ)碼的二進(jìn)制編碼C轉(zhuǎn)換為16位 的帶補(bǔ)碼的二進(jìn)制編碼C,舍掉其中的部分整數(shù)位和部分小數(shù)位,得到16位的帶補(bǔ)碼的二 進(jìn)制編碼。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的步驟6構(gòu)建neuro神經(jīng)元單元,具 體步驟是構(gòu)建LSSVM分類學(xué)習(xí)神經(jīng)元模塊,該模塊執(zhí)行計(jì)算a的功能,完成動(dòng)態(tài)方程(9)的計(jì) 算,其中包括乘累加單元(MAC)、乘法器單元(Mul)、減法器單元(Sub)、累加器單元(ADD)以 及存儲(chǔ)單元ROM、RAM和RAMI ;ROM中存放的是網(wǎng)絡(luò)的權(quán)值,Mull、Mul2和Mul3是對(duì)基 本元件庫中的元件Mul的映射元件,分別用來計(jì)算動(dòng)態(tài)方程(9)中的b(t)yi、Y^a^t),<formula>formula see original document page 3</formula>其中的Subl、Sub2和Sub3是對(duì)基本元件庫中的元件Sub的映射元件,分別用來計(jì)算<formula>formula see original document page 3</formula>以及<formula>formula see original document page 4</formula>Mull的輸入端口 y輸入的71是分類的標(biāo)識(shí),Mul2的輸入端口 b輸入的、為懲罰因 子,RAM和RAMI中存放的為一組a值,Mull的輸入端口 b輸入的b值為表網(wǎng)絡(luò)的閾值,由 步驟4知道shift單元是用來將數(shù)據(jù)限制在指定的范圍內(nèi),對(duì)于具有遞歸特性的神經(jīng)網(wǎng)絡(luò) LSSVM,網(wǎng)絡(luò)的權(quán)值由訓(xùn)練樣本的值決定的,并且網(wǎng)絡(luò)的權(quán)值不是實(shí)時(shí)更新的,對(duì)于一個(gè) 特定的問題,訓(xùn)練樣本的值是固定的,即神經(jīng)網(wǎng)絡(luò)LSSVM的網(wǎng)絡(luò)權(quán)值在訓(xùn)練的過程中不 變化,所以在網(wǎng)絡(luò)訓(xùn)練前,根據(jù)訓(xùn)練樣本計(jì)算好權(quán)值%.,存放在ROM單元中,具體包括以下 步驟A1、當(dāng)數(shù)據(jù)存儲(chǔ)完畢,此時(shí)從ROM和RAMI中同時(shí)讀取數(shù)據(jù),輸入到MAC單元中,其中在 一個(gè)觸發(fā)沿中的a j(t)和%是相互對(duì)應(yīng)的,與此同時(shí),分別通過Mull和Mul2計(jì)算b(t)yi、 y^a.a);NA2、等待MAC單元運(yùn)算完畢,將結(jié)果J] 和b(t)yi輸入到Sub的映射單元Subl, 完成i-b(t)yim計(jì)算;NA3、等待Mac單元和Subl單元運(yùn)算完畢,將 和l_b(t)yi送入SUB2,完成<formula>formula see original document page 4</formula>的計(jì)算;A4、將Sub2單元的結(jié)果和Mul2單元的結(jié)果送入Sub3,完成<formula>formula see original document page 4</formula>的計(jì)算; j=iA5、再將Sub3的結(jié)果與設(shè)定好的AT送入Mul3,計(jì)算AT與<formula>formula see original document page 4</formula>的乘積;A6、完成ADD累加運(yùn)算,由于對(duì)動(dòng)態(tài)方程(7)進(jìn)行離散化處理后,最后的積分單元變?yōu)?了一個(gè)累加單元,因此ADD用來將本次得出的^廣1值及上一大周期得到的a^值進(jìn)行累 加,n為大周期次數(shù),并將更新的值存入RAM單元中,由于計(jì)算和比較過程需要用到上一個(gè) 大周期計(jì)算出的ain,所以利用RAM和RAMI來保存本次計(jì)算的一組an+1值和上一大周期計(jì) 算的一組an值,根據(jù)計(jì)算每個(gè)a ,值的小周期,臨時(shí)將上一大周期的、值保存在々」11中, shift單元用來將數(shù)據(jù)限制在指定的范圍內(nèi),所限制的范圍為(-15,15),在計(jì)算完第n+1步 、值后,再計(jì)算第n+1步ai+1,直到計(jì)算完k個(gè)a值,k為訓(xùn)練樣本數(shù),即完成串行計(jì)算方 式。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的步驟7構(gòu)建Bisa_b神經(jīng)元單元,具 體步驟是該模塊執(zhí)行計(jì)算b的功能,完成動(dòng)態(tài)方程(8)的計(jì)算,其中包括乘累加單元(Bias)、乘法器單元(Mul)、累加器單元(ADD)以及存儲(chǔ)單元RAMI,其中Bias單元用來計(jì)算幾,Mul單元用來計(jì)算Arf; a.y,,ADD單元用來累加b值,i=\首先從RAMI中讀取一組a值按順序放入Bias模塊的a端口,同時(shí)Bias模塊的b端口按順序輸入一組類別1值,并完成i 的計(jì)算;之后將Bias模塊的計(jì)算結(jié)果發(fā)送到 <formula>formula see original document page 5</formula>Mul單元的a端口,Mul單元的b端口為開始就輸入的A T值,在Mul單元完成Ar^] aty,的計(jì)算;然后將Mul單元的計(jì)算結(jié)果臨時(shí)保存在b單元中,bl單元保存的為上一個(gè)大周期 的b值,若為第一次計(jì)算,則將初始b值設(shè)為零;最后將b單元和bl單元的兩個(gè)b值分別送 入ADD單元的a端口和b端口,完成累加計(jì)算,并將最后累加的b值放入bl單元,等待下一 個(gè)大周期的b值累加計(jì)算;由于b值的計(jì)算與上一大周期的所有a ,值有關(guān),而在每個(gè)小周期內(nèi)所計(jì)算的只是其 中一個(gè)a i值,即a i值隨著小周期隨時(shí)更新,因此對(duì)于b值的計(jì)算統(tǒng)一放在最后一個(gè)小周 期的a 4值計(jì)算完畢時(shí),此時(shí)的更新將是在新的一組a ,值情況下得到的新的b值,并且此 b值將一直保存到下一個(gè)大周期的最后一個(gè)小周期內(nèi),直到下一新的b值計(jì)算出,由于對(duì)b 值的計(jì)算最后一環(huán)節(jié)需要與上一大周期的b值進(jìn)行累加,因此在每次更新b值后將其臨時(shí) 存儲(chǔ)在bl模塊中。
全文摘要
本發(fā)明公開了一種基于FPGA的最小二乘支持向量機(jī)串行結(jié)構(gòu)實(shí)現(xiàn)方法,該方法的步驟是根據(jù)樣本數(shù)量構(gòu)造LSSVM分類神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu);選用高斯核函數(shù);將動(dòng)態(tài)方程進(jìn)行離散化處理,并設(shè)定步長(zhǎng)ΔT值;選擇帶補(bǔ)碼的二進(jìn)制編碼的位數(shù),其中包括整數(shù)位的位數(shù)和小數(shù)位的位數(shù);構(gòu)造基本的元件庫,包括運(yùn)算單元、存儲(chǔ)單元和控制單元;構(gòu)建LSSVM分類神經(jīng)網(wǎng)絡(luò)的neuro神經(jīng)元單元;構(gòu)建LSSVM分類神經(jīng)網(wǎng)絡(luò)的Bias_b神經(jīng)元單元,完成最后一個(gè)α值計(jì)算后,計(jì)算b值;構(gòu)建整個(gè)網(wǎng)絡(luò)的控制模塊,然后使網(wǎng)絡(luò)進(jìn)行遞歸運(yùn)算,當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),求得收斂參數(shù)α,b。本發(fā)明方法不僅減少了FPGA資源的消耗,而且克服了模擬電路實(shí)現(xiàn)靈活性不足的缺點(diǎn),可以較好的適應(yīng)應(yīng)用環(huán)境的改變。
文檔編號(hào)G06N3/06GK101833691SQ20101013601
公開日2010年9月15日 申請(qǐng)日期2010年3月30日 優(yōu)先權(quán)日2010年3月30日
發(fā)明者劉涵, 王博 申請(qǐng)人:西安理工大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
莱阳市| 咸宁市| 桂阳县| 洱源县| 金堂县| 肇州县| 白朗县| 芜湖县| 根河市| 马尔康县| 中阳县| 开封县| 柏乡县| 象州县| 怀仁县| 佳木斯市| 赫章县| 隆子县| 顺义区| 苏尼特左旗| 天门市| 从化市| 吐鲁番市| 辽阳县| 铁力市| 天祝| 彭水| 特克斯县| 米泉市| 南郑县| 嘉黎县| 布拖县| 石首市| 建阳市| 沁阳市| 海盐县| 侯马市| 塔城市| 田阳县| 定陶县| 锦州市|