莊祖江,房 玉,雷建超,劉棟博,王海濱
(西華大學(xué) 電氣與電子信息學(xué)院,成都 610039)
脈沖神經(jīng)網(wǎng)絡(luò)(Spiking Neural Network,SNN)[1]被稱為第三代神經(jīng)網(wǎng)絡(luò)[2],是目前最具有仿生性的人工神經(jīng)網(wǎng)絡(luò)。腦科學(xué)的研究結(jié)果表明,在生物系統(tǒng)中,信息是以突觸直接的動作電位來進(jìn)行處理和傳遞的。受這一研究的啟發(fā),脈沖神經(jīng)網(wǎng)絡(luò)將信息編碼成脈沖序列進(jìn)行處理,其結(jié)構(gòu)更接近于生物神經(jīng)元,而且網(wǎng)絡(luò)的計算能力強(qiáng)于傳統(tǒng)人工神經(jīng)網(wǎng)絡(luò)[3]。由于其優(yōu)秀的性能,引發(fā)了諸多學(xué)者的關(guān)注,如英國帝國理工大學(xué)的GOODMAN研發(fā)了脈沖神經(jīng)網(wǎng)絡(luò)的仿真平臺Brian[4-5],奧地利的MAASS對脈沖神經(jīng)元模型、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和相關(guān)應(yīng)用進(jìn)行了研究[6-7],日本東京大學(xué)KUBOTA等人將SNN應(yīng)用到助力機(jī)器人以及行走機(jī)器人上[8],瑞士聯(lián)邦學(xué)院GERSTNER等人對脈沖神經(jīng)元模型和脈沖時間獨(dú)立可塑性學(xué)習(xí)規(guī)則等理論進(jìn)行了研究[9]。國內(nèi)也有學(xué)者對此進(jìn)行了研究,如文獻(xiàn)[10]對基于脈沖時間網(wǎng)絡(luò)的圖像分割應(yīng)用進(jìn)行了研究,而且提出了累加和累積合成核機(jī)制進(jìn)行網(wǎng)絡(luò)的訓(xùn)練[11],文獻(xiàn)[12]將自組織網(wǎng)絡(luò)與STDP相結(jié)合對算法進(jìn)行研究,也有學(xué)者提出了基于脈沖神經(jīng)網(wǎng)絡(luò)的片上網(wǎng)絡(luò)路由器動態(tài)優(yōu)先級仲裁策略[13]。
研究人員對脈沖神經(jīng)元模型進(jìn)行深入研究,目前學(xué)界比較公認(rèn)的學(xué)習(xí)算法有脈沖時間依賴可塑性(Spike-Timing-Dependent-Plasticity,STDP)[14]、Tempotron[15]、ReSuMe(Remote Supervised Method)[16]和SpikeProp[17]等,STDP算法由Hebb規(guī)則[18]延伸而得到,是目前比較流行的無監(jiān)督算法[19],能夠較好地解釋神經(jīng)網(wǎng)絡(luò)的依賴性。
本文研究基于無監(jiān)督的脈沖神經(jīng)網(wǎng)絡(luò),采用STDP學(xué)習(xí)算法進(jìn)行基于脈沖數(shù)目的無監(jiān)督訓(xùn)練,通過改進(jìn)傳統(tǒng)的分類方法,提出一種投票競爭機(jī)制提高網(wǎng)絡(luò)的分類準(zhǔn)確率,并在MNIST數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)驗(yàn)證。
脈沖神經(jīng)元是構(gòu)成脈沖神經(jīng)網(wǎng)絡(luò)的基本單元,其狀態(tài)主要由膜電勢以及閾值所決定,膜電勢主要由來自上一層所有連接的突觸后電勢決定,其中EPSP(Excitatory Post-Synaptic Potential)能夠提高神經(jīng)元的膜電勢,IPSP(Inhibitory Post-Synaptic Potential)能夠降低神經(jīng)元的模電勢[20]。本文網(wǎng)絡(luò)的脈沖神經(jīng)元模型采用LIF模型進(jìn)行研究[21],其模型描述如下:
(1)
其中,v(t)表示在t時刻神經(jīng)元的模電壓,Vr表示靜息膜電位,Ve和ge表示興奮性突觸的平衡電壓和電導(dǎo),Vi和gi表示抑制性突觸的平衡電壓和電導(dǎo),τm表示神經(jīng)元的膜電位時間常數(shù)由τ=RC所決定,R表示膜電阻,C表示膜電容,τge和τgi分別表示激勵性神經(jīng)元和抑制性神經(jīng)元的膜電位時間常數(shù)。
當(dāng)突觸后神經(jīng)元接收到突觸前神經(jīng)元傳輸?shù)碾娏鱅時,膜電勢會升高,當(dāng)其逐漸升高超過閾值時,就會釋放脈沖,隨后電勢會低于之前的靜息電位,在復(fù)位后的幾毫秒內(nèi),神經(jīng)元處于不應(yīng)期,不能再次出現(xiàn)脈沖。其電位變化方式如圖1所示。
圖1 神經(jīng)元輸入電流膜電壓變化過程
上述過程被稱為神經(jīng)元的動作電位,也就是神經(jīng)元產(chǎn)生了一個脈沖。從圖1可以看出,第1次輸入電流較小時,膜電壓Vm升高,但是沒有超過閾值VT,因此又恢復(fù)到靜息電壓VR,第2次輸入電流時,Vm超過了VT,因此產(chǎn)生了一次完整的動作電位,向突觸后神經(jīng)元釋放了脈沖。
脈沖時間依賴可塑性(STDP)是調(diào)節(jié)大腦中神經(jīng)元之間的連接強(qiáng)度的生物學(xué)過程,該過程根據(jù)特定神經(jīng)元輸入脈沖的相對時序調(diào)整連接強(qiáng)度[22]。其學(xué)習(xí)機(jī)制可以表達(dá)為:
(2)
其中,tpost表示突觸后神經(jīng)元產(chǎn)生脈沖的時間,tpre表示突觸前神經(jīng)元產(chǎn)生脈沖的時間,表明了突觸權(quán)重的變化由所有突觸前神經(jīng)元的脈沖發(fā)放時間和突觸后的脈沖發(fā)放時間所影響,常規(guī)的STDP時間函數(shù)如下:
(3)
其中,Δt表示突觸后神經(jīng)元產(chǎn)生脈沖的時間tpost和突觸前神經(jīng)元產(chǎn)生脈沖時間tpre之差,A+和A-代表權(quán)重調(diào)整的范圍,τ+和τ-表示不同神經(jīng)元模型的常量。由式(3)還可以看出,當(dāng)突觸后神經(jīng)元在突觸前神經(jīng)元之前產(chǎn)生脈沖時,則減少兩者之間的權(quán)重,反之如果突觸后神經(jīng)元在突觸前神經(jīng)元之后產(chǎn)生脈沖,則增加兩者之間的權(quán)重。
脈沖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,脈沖神經(jīng)元網(wǎng)絡(luò)結(jié)構(gòu)的主體是輸入層和STDP層,轉(zhuǎn)換層的作用是簡單地進(jìn)行圖像樣本的處理,抑制層是抑制STDP層不活躍的神經(jīng)元釋放脈沖,而分類層是將STDP層所產(chǎn)生的信號根據(jù)算法進(jìn)行分類。
圖2 脈沖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
圖像的像素先經(jīng)過轉(zhuǎn)換層轉(zhuǎn)換為脈沖頻率,脈沖頻率與圖像的像素強(qiáng)度成正比,比例系數(shù)為β,將對應(yīng)的頻率傳輸?shù)捷斎雽?。由于本文將采用基于STDP學(xué)習(xí)規(guī)則,Poisson序列的編碼可以更好地提高效率[23],因此輸入層采用m個Poisson神經(jīng)元構(gòu)成,作用是可以將脈沖頻率轉(zhuǎn)換為Poisson序列,其神經(jīng)元激發(fā)概率公式為:
(4)
其中,PT[n]表示神經(jīng)元產(chǎn)生脈沖的概率,n表示神經(jīng)元數(shù)目,r表示樣本數(shù)據(jù),即脈沖頻率,T表示一次訓(xùn)練的周期。
輸入層的神經(jīng)元與STDP層以及抑制層的神經(jīng)元是一一連接的,區(qū)別在于,與STDP層連接的權(quán)重wmn是由STDP學(xué)習(xí)規(guī)則進(jìn)行更新的,而與抑制層的神經(jīng)元的連接是固定權(quán)重,這樣方便調(diào)整抑制層的抑制程度。
由于網(wǎng)絡(luò)結(jié)構(gòu)采用的是無監(jiān)督學(xué)習(xí)規(guī)則進(jìn)行學(xué)習(xí),因此引入抑制層進(jìn)行競爭,這樣可以使獲勝神經(jīng)元的權(quán)重增加,而其他神經(jīng)元的權(quán)重減少,有效降低了訓(xùn)練過程中的噪聲,得到了更好的訓(xùn)練效果。
對于網(wǎng)絡(luò)的STDP層以及抑制層在訓(xùn)練過程中都是無監(jiān)督的,在訓(xùn)練結(jié)束之后會收斂,這樣的網(wǎng)絡(luò)并沒有表現(xiàn)出任何特定的功能。在這里需要添加分類層去識別STDP層在訓(xùn)練過程中所發(fā)送的信息,以達(dá)到分類的目的。
分類層的算法對于網(wǎng)絡(luò)最后的表現(xiàn)至關(guān)重要,具有生物意義的常規(guī)方法是將STDP層在訓(xùn)練時產(chǎn)生的脈沖表現(xiàn)轉(zhuǎn)換為每一個神經(jīng)元表現(xiàn)的分類,然后通過加權(quán)的方式進(jìn)行分類。這類方式準(zhǔn)確率相對較低,本文針對此方法進(jìn)行了改進(jìn),提出一種符合生物競爭的策略,增加了投票競爭機(jī)制,增加了分類的準(zhǔn)確率。由于會使用到數(shù)據(jù)的標(biāo)簽,但是數(shù)據(jù)不會再向前傳輸也不會改變訓(xùn)練好的權(quán)重,因此本文算法為半監(jiān)督類型的算法。
對于一個訓(xùn)練樣本數(shù)量為a的m個像素的k分類問題,輸入神經(jīng)元個數(shù)為m個,STDP神經(jīng)元數(shù)目為n個,抑制層神經(jīng)元數(shù)目為l個,且定義:
a1+a2+…+ak=a
(5)
1)當(dāng)ak類輸入時,求出所有神經(jīng)元的輸出脈沖之和并進(jìn)行標(biāo)準(zhǔn)處理,可以得到平均輸入一次樣本時神經(jīng)元的脈沖產(chǎn)生情況:
(6)
2)對于得到的k個行向量rk,定義rkn表示輸入類別為ak時,第n個神經(jīng)元產(chǎn)生的脈沖數(shù),可以拼接成如下的矩陣:
(7)
3)對Rkn的每一列取其最大值的行標(biāo)號,作為此神經(jīng)元的表現(xiàn)類別,可以得到:
assb=(s1,s2,…,sn)
(8)
其中,s1,s2,…,sn表示對應(yīng)神經(jīng)元表現(xiàn)的類別。
4)將前面得到的ass通過投票競爭機(jī)制進(jìn)行篩選,即:
ass*=f(ass1,ass2,…,assb)
(9)
for i =1 to n :
for j =1 to b :
If 在b次訓(xùn)練中無法重復(fù)值:
end
end
投票競爭策略如圖3所示,s1由s1,s2,…,sn投票得出,為其中出現(xiàn)次數(shù)最多的類別,即對于最后的神經(jīng)元表現(xiàn),由前面b次訓(xùn)練過程中得到的神經(jīng)元表示進(jìn)行投票,若神經(jīng)元表示類別為k的次數(shù)最多則最終結(jié)果定為k,這樣得到的表現(xiàn)類別優(yōu)于之前得到的單一表現(xiàn),可以使得此算法收斂到一個更優(yōu)的值。
圖3 投票競爭策略示意圖
為驗(yàn)證投票競爭機(jī)制的可靠性與有效性,本文以配有16 GB內(nèi)存、處理器為Intel?CoreTMi7-4720HQ,并裝有Ubuntu16.0的操作系統(tǒng)的筆記本電腦為測試平臺,以python3.6為編程環(huán)境,使用BRIAN2作為仿真庫使用,在MNIST數(shù)據(jù)集上進(jìn)行了驗(yàn)證實(shí)驗(yàn)。
為表明網(wǎng)絡(luò)結(jié)構(gòu)的生物意義的合理性,本文模擬時采用的參數(shù)均為在生物學(xué)的合理范圍之內(nèi),包括膜的時間常數(shù)、突觸模型和訓(xùn)練周期等[24],除了提高激勵性神經(jīng)元的時間常數(shù)到100 ms,相較與生物神經(jīng)元中的時間常數(shù)10 ms~20 ms,該網(wǎng)絡(luò)結(jié)構(gòu)可以降低噪聲的影響。例如,如果輸入脈沖在126 Hz的最大速率下持續(xù)輸入20 ms,則神經(jīng)元平均產(chǎn)生2.52個脈沖,這意味著單個噪聲尖峰會產(chǎn)生很大的影響,而增加到100 ms時,神經(jīng)元平均可以積累12.6個脈沖,從而減少了噪聲的影響。
在算法設(shè)計上,為保證算法的有效性不會因?yàn)殡S機(jī)的參數(shù)起點(diǎn)不一致而導(dǎo)致誤差,本文在同等網(wǎng)絡(luò)結(jié)構(gòu)下均采用相同初始條件。
MNIST手寫數(shù)字?jǐn)?shù)據(jù)庫,其訓(xùn)練集包含了60 000張28×28的圖片,測試集包含了10 000張28×28的圖片,因此網(wǎng)絡(luò)的輸入層神經(jīng)元個數(shù)為28×28=784個。對于STDP層和抑制層的神經(jīng)元數(shù)目在實(shí)驗(yàn)中發(fā)現(xiàn)兩者相等時表現(xiàn)最佳,因此本次實(shí)驗(yàn)過程中均選取一致的數(shù)目,測試的準(zhǔn)確率為測試集的準(zhǔn)確率。
為研究不同投票次數(shù)對準(zhǔn)確率的影響,設(shè)置了一組在STDP層神經(jīng)元數(shù)量不變時,訓(xùn)練次數(shù)為2次~9次的驗(yàn)證性實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4所示。
圖4 訓(xùn)練次數(shù)對準(zhǔn)確率的影響
從圖4可以看出,隨著訓(xùn)練次數(shù)的增加,準(zhǔn)確率的提升逐漸收斂,當(dāng)訓(xùn)練次數(shù)為4次時,測試集準(zhǔn)確率已經(jīng)穩(wěn)定,這是由于本文算法的機(jī)制所表現(xiàn),因?yàn)橹鸩皆黾油镀钡臉颖?并不會很大程度地改變主神經(jīng)元組的表現(xiàn),因此可以看出,本文方法是有效的。為進(jìn)一步驗(yàn)證算法的有效性,本文設(shè)計了4次不同神經(jīng)元數(shù)量下的對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖5所示。其中,在不同神經(jīng)元數(shù)量中,最右的深色為本文采用的投票競爭機(jī)制算法,其余為進(jìn)行投票的樣本。
圖5 不同神經(jīng)元數(shù)目下MNIST的準(zhǔn)確率對比
當(dāng)神經(jīng)元數(shù)目為200時,未采用投票競爭機(jī)制的平均準(zhǔn)確率只有85.55%,當(dāng)采用本文方法后提升至92.23%,提高了6.68%,在其他神經(jīng)元規(guī)模下,本文方法準(zhǔn)確率均有較大提升,說明了本文方法可以提高脈沖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的分類表現(xiàn)。
為進(jìn)一步研究準(zhǔn)確率的提升,在神經(jīng)元數(shù)目為400時,2種不同方法STDP測試集表現(xiàn)的混淆矩陣如圖6所示。
圖6 兩種方法標(biāo)準(zhǔn)化的混淆矩陣
從圖6可以看出,圖6(b)相對于圖6(a)提高了數(shù)字4和9的誤分類情況,數(shù)字9的識別率提高了6.0%,整體準(zhǔn)確率提升了3.69%,說明本文方法是有效的。
同時為了更加嚴(yán)謹(jǐn)?shù)胤治鏊惴ㄐ阅?對于算法的運(yùn)行時間進(jìn)行了實(shí)驗(yàn)分析。本文算法增加時間復(fù)雜度主要有2個因素:1)增加了競爭投票算法,由算法描述可知,此算法的時間復(fù)雜度為O(nb),受到神經(jīng)元個數(shù)以及訓(xùn)練次數(shù)的影響,將神經(jīng)元的類別ass采用矩陣形式的存儲方式,運(yùn)算效率高,時間復(fù)雜度可以降低為O(b),因此該因素對于整體的影響不大;2)增加了訓(xùn)練次數(shù),不可避免地會增加脈沖訓(xùn)練時間。脈沖訓(xùn)練時間影響主要來源為:不同數(shù)目的神經(jīng)元網(wǎng)絡(luò)構(gòu)建時間不同,即網(wǎng)絡(luò)結(jié)構(gòu)創(chuàng)建耗時;超過指定的脈沖響應(yīng)周期(接受脈沖時間和不應(yīng)期時間)的額外仿真耗時。實(shí)驗(yàn)結(jié)果如圖7所示。
圖7 脈沖時間網(wǎng)絡(luò)創(chuàng)建與訓(xùn)練耗時分析
由實(shí)驗(yàn)結(jié)果可以看出,網(wǎng)絡(luò)創(chuàng)建時間和單次額外仿真耗時(取訓(xùn)練同樣的前1 000個樣本時間然后取均值)均隨神經(jīng)元數(shù)目的增加而增加,此處的神經(jīng)元數(shù)目均指STDP層神經(jīng)元數(shù)目,其余神經(jīng)元數(shù)目保持不變。觀察圖中的網(wǎng)絡(luò)創(chuàng)建時間對于算法的效率影響不是很大,主要的時間影響因素來自單次額外仿真時間。對于本文算法來說,訓(xùn)練4次左右提升效果最為明顯,以200個神經(jīng)元訓(xùn)練時長為例,單次訓(xùn)練需要25.60 ms,采用本文算法則相當(dāng)于需要102.4 ms,單次仿真時間比700個神經(jīng)元所需的單次額外仿真時間要低1.33 ms,而兩者準(zhǔn)確率僅相差0.34%。這說明本文算法在不增加訓(xùn)練時間的情況下,可以取得與更加復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)一樣的訓(xùn)練結(jié)果,表明本文算法對于性能有限的機(jī)器有很大的幫助。將本文算法與其他脈沖神經(jīng)網(wǎng)絡(luò)算法在MNIST測試集上的分類效果進(jìn)行對比,如表1所示。
表1 脈沖神經(jīng)網(wǎng)絡(luò)在MNIST測試集上的比較
從表1對比結(jié)果可以看出,本文算法網(wǎng)絡(luò)結(jié)構(gòu)的效果更好。
本文提出一種投票競爭機(jī)制,該機(jī)制優(yōu)化了基于無監(jiān)督學(xué)習(xí)的脈沖神經(jīng)網(wǎng)絡(luò)機(jī)構(gòu)在圖像分類問題的表現(xiàn)。采用脈沖神經(jīng)網(wǎng)絡(luò)模型,并基于STDP學(xué)習(xí)規(guī)則進(jìn)行數(shù)據(jù)訓(xùn)練,對輸出的脈沖表現(xiàn)采用投票競爭的學(xué)習(xí)機(jī)制,提高了神經(jīng)元的表現(xiàn)。實(shí)驗(yàn)結(jié)果表明,在網(wǎng)絡(luò)結(jié)構(gòu)一致的情況下,本文方法在訓(xùn)練次數(shù)較少時即可以達(dá)到收斂,與傳統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)相比準(zhǔn)確率提升明顯。下一步將考慮輸入網(wǎng)絡(luò)數(shù)據(jù)來增加預(yù)處理的過程,以降低網(wǎng)絡(luò)的復(fù)雜度。