尚瑛杰,何 虎,楊 旭,董麗亞
(清華大學(xué) 微電子與納電子學(xué)系,北京 100084)
隨著智能化需求的推進(jìn),傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)逐漸暴露出計算量大、功耗高和智能化程度低等問題,而脈沖神經(jīng)網(wǎng)絡(luò)(spiking neuron networks,SNN)由于工作模式更加接近人腦,具有計算量低、功耗低和仿生性高等特點(diǎn),經(jīng)常被譽(yù)為“第三代人工神經(jīng)網(wǎng)絡(luò)”,是實現(xiàn)強(qiáng)人工智能的重要方式,因此受到越來越多的關(guān)注。
然而,目前脈沖神經(jīng)網(wǎng)絡(luò)研究還處在初步階段,缺乏有效的學(xué)習(xí)算法,這既是脈沖神經(jīng)網(wǎng)絡(luò)訓(xùn)練困難的主要瓶頸,也是眾多科研人員努力解決的問題。人工智能的重大突破通常受到生物腦神經(jīng)網(wǎng)絡(luò)的啟發(fā)[1],感知器模型、卷積神經(jīng)網(wǎng)絡(luò),乃至深度學(xué)習(xí)都是如此[2,3],而脈沖神經(jīng)網(wǎng)絡(luò)的產(chǎn)生也是如此[4],所以,仿生型算法是解決脈沖神經(jīng)網(wǎng)絡(luò)訓(xùn)練困難的重要手段之一。
本文對脈沖神經(jīng)網(wǎng)絡(luò)的權(quán)值和結(jié)構(gòu)兩個方面進(jìn)行了研究,提出了脈沖神經(jīng)網(wǎng)絡(luò)的權(quán)值學(xué)習(xí)算法和結(jié)構(gòu)學(xué)習(xí)算法,嘗試性地解決脈沖神經(jīng)網(wǎng)絡(luò)訓(xùn)練困難的問題。同時設(shè)計了一種脈沖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),用于算法的仿真驗證實驗。
神經(jīng)元是神經(jīng)網(wǎng)絡(luò)最基礎(chǔ)的組成部分,神經(jīng)元模型的選擇與網(wǎng)絡(luò)性能有著直接的關(guān)系。本文采用的神經(jīng)元模型為LIF(leaky integrate and fire)模型,即泄露積分放電模型,這是一種基于生物神經(jīng)元特性抽象出來的積分器模型。LIF神經(jīng)元模型既對生物神經(jīng)元主要特性進(jìn)行充分保留,又兼顧了模型的簡潔性和仿真效率。LIF模型在電路方面可以等效為帶電壓偏置的電阻-電容并聯(lián)模型,如圖1所示,其中I(t)為神經(jīng)元的輸入電流,uret為神經(jīng)元復(fù)位膜電位,u(t)為膜電位[5]。
圖1 LIF神經(jīng)元模型的等效電路
當(dāng)神經(jīng)元處于靜息狀態(tài),即輸入電流I(t)=0時,可知u(t)=uret。 當(dāng)輸入電流I(t)>0時,電容C會進(jìn)行充電,進(jìn)而導(dǎo)致膜電位u(t)的升高;另一方面,若電容C上存在電荷積累,則電荷會隨著時間而泄漏,膜電位u(t)也會因此降低,直至回落到靜息狀態(tài)。如果電容C的電荷積累速度高于泄漏速度,膜電位u(t)會持續(xù)升高到激發(fā)閾值,此時神經(jīng)元會向外發(fā)射一個電脈沖,膜電位u(t)迅速降低至復(fù)位膜電位。本文中采用的LIF模型參數(shù)借鑒了目前成熟的研究成果[6-8],具體參數(shù)詳見表1。
表1 LIF神經(jīng)元模型參數(shù)
脈沖神經(jīng)網(wǎng)絡(luò)被譽(yù)為“第三代神經(jīng)網(wǎng)絡(luò)”,是受到腦神經(jīng)工作方式的啟發(fā)而產(chǎn)生。因此,脈沖神經(jīng)網(wǎng)絡(luò)具有很高的生物相似性,甚至?xí)挥糜谏锷窠?jīng)網(wǎng)絡(luò)的模擬。另外,由于脈沖神經(jīng)網(wǎng)絡(luò)具有時間維度信息,相比于第二代神經(jīng)網(wǎng)絡(luò)其信息處理能力更強(qiáng),尤其是在具有強(qiáng)關(guān)聯(lián)性的上下文信息處理方面獨(dú)具優(yōu)勢。目前,由于缺乏有效的訓(xùn)練算法,脈沖神經(jīng)網(wǎng)絡(luò)的潛力不能充分發(fā)揮。
在網(wǎng)絡(luò)結(jié)構(gòu)方面,脈沖神經(jīng)網(wǎng)絡(luò)的種類眾多,主要有多層前饋網(wǎng)絡(luò)、循環(huán)網(wǎng)絡(luò)和進(jìn)化網(wǎng)絡(luò)等。圖2展示了一個多層前饋網(wǎng)絡(luò)模型,本文以此為例介紹脈沖神經(jīng)網(wǎng)絡(luò)的工作原理。
圖2 脈沖神經(jīng)網(wǎng)絡(luò)模型
在脈沖神經(jīng)網(wǎng)絡(luò)中,輸入、輸出和中間層的信息傳遞與處理都是基于脈沖編碼信號,輸入層的脈沖信號通過神經(jīng)元之間的連接傳遞到下一層神經(jīng)元。當(dāng)神經(jīng)元接收到脈沖信號后,該神經(jīng)元的膜電位便會升高,在LIF的電路模型中,這一過程等效為電容充電。當(dāng)神經(jīng)元膜電位達(dá)到閾值后,該神經(jīng)元會向后神經(jīng)元發(fā)射一個脈沖信號,并將自身膜電位復(fù)位,稱神經(jīng)元的這一事件為一次激活[9]。
2.1.1 STDP規(guī)則介紹
STDP(spike-timing-dependent plasticity)規(guī)則,稱為突觸可塑性規(guī)則,是生物學(xué)中對大腦神經(jīng)元連接強(qiáng)度變化規(guī)律的總結(jié)。在生物神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元之間的連接稱為突觸,突觸的強(qiáng)度會根據(jù)前后神經(jīng)元激活狀態(tài)的因果關(guān)系發(fā)生改變,這種現(xiàn)象也稱為突觸可塑性。STDP規(guī)則的原理如圖3所示。
圖3 STDP規(guī)則
圖3中,Npre和Npost表示兩個脈沖神經(jīng)元,兩者之間存在一條有向連接;Npre位于連接的起點(diǎn),稱之為前神經(jīng)元;Npost位于連接的終點(diǎn),稱之為后神經(jīng)元;神經(jīng)元發(fā)射脈沖的動作稱作激活,發(fā)射脈沖的時間稱為激活時間。當(dāng)前神經(jīng)元激活時間早于后神經(jīng)元激活時間,則加強(qiáng)兩個神經(jīng)元之間的連接;反之,減弱連接。
從數(shù)學(xué)模型角度分析,連接的強(qiáng)度與前后神經(jīng)元激活時間差,可以近似為某種函數(shù)關(guān)系[10,11]。STDP規(guī)則的函數(shù)實現(xiàn)方式如式(1)~式(5)所示
Δt=t2-t1
(1)
K(Δt)=exp(-|Δt|/τ)
(2)
f_(w)=αwμ
(3)
f+(w)=(1-w)μ
(4)
(5)
其中,t2為后神經(jīng)元激活時間;t1為前神經(jīng)元激活時間;τ為控制指數(shù)衰減速率的時間常數(shù),取值大于0;α為對稱度調(diào)整參數(shù),取值大于0,用于調(diào)整f-(w)函數(shù)和f+(w)函數(shù)對稱度;μ為曲率因子;w為歸一化后的連接權(quán)值,取值區(qū)間為[0,1];λ為權(quán)值學(xué)習(xí)率,取值大于0;K(Δt)為時間濾波函數(shù);f-(w)和f+(w)稱為更新函數(shù);Δw為權(quán)值調(diào)整量。
通過分析易得:當(dāng)Δt小于或等于0時,權(quán)值減小;當(dāng)Δt大于0時,權(quán)值增大;這與理論相符合。
2.1.2 基于STDP規(guī)則的監(jiān)督式學(xué)習(xí)算法
監(jiān)督式學(xué)習(xí)算法一直都是脈沖神經(jīng)網(wǎng)絡(luò)的難點(diǎn),由于脈沖序列為離散數(shù)據(jù),無法進(jìn)行微分求導(dǎo)運(yùn)算,因此第二代神經(jīng)網(wǎng)絡(luò)的BP算法并不適合脈沖神經(jīng)網(wǎng)絡(luò)。本文基于STDP規(guī)則,設(shè)計了一種監(jiān)督式的學(xué)習(xí)方法[12]。監(jiān)督式學(xué)習(xí)算法的基本結(jié)構(gòu)如圖4所示。
圖4 監(jiān)督式學(xué)習(xí)算法
網(wǎng)絡(luò)中提供監(jiān)督式學(xué)習(xí)信號的神經(jīng)元,稱為“引導(dǎo)”神經(jīng)元;而Npre和Npost分別代指前神經(jīng)元和后神經(jīng)元,并且把神經(jīng)元發(fā)射脈沖的動作稱作激活,發(fā)射脈沖的時間稱為激活時間。另外,學(xué)習(xí)算法設(shè)定:神經(jīng)元Npre與神經(jīng)元Npost之間的連接權(quán)值為W1,該權(quán)值受STDP規(guī)則調(diào)整;“引導(dǎo)”神經(jīng)元與神經(jīng)元Npost之間的連接權(quán)值為W2,該權(quán)值為常數(shù)值,仿真過程中保持不變。
在初始網(wǎng)絡(luò)之中,權(quán)值W1設(shè)定相對較小,因此神經(jīng)元Npre對神經(jīng)元Npost的影響較??;而權(quán)值W2設(shè)定相對較大,因此“引導(dǎo)”神經(jīng)元對神經(jīng)元Npost的影響較大。并且,考慮到LIF神經(jīng)元模型的積分放電行為,激活時間t2會非常接近t3。具體關(guān)系可以表示如式(6)~式(7)所示
W1?W2
(6)
t3=t2+Δt
(7)
其中,Δt≈0。 在這種情況下,只需要通過設(shè)置“引導(dǎo)”神經(jīng)元的激活時間t3,就可以調(diào)整神經(jīng)元Npost的激活時間t2,則:
當(dāng)t1 當(dāng)t1≥t2時,根據(jù)STDP規(guī)則,連接權(quán)值為W1減弱; 綜上所述,對于連接前后兩個神經(jīng)元,在合理地設(shè)置“引導(dǎo)”神經(jīng)元激活時間的情況下,可以實現(xiàn)對前后神經(jīng)元之間連接的增強(qiáng)或者減弱。 目前結(jié)構(gòu)學(xué)習(xí)算法方面研究成果相對較少,神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法主要以權(quán)值學(xué)習(xí)為主。然而,網(wǎng)絡(luò)結(jié)構(gòu)關(guān)系到網(wǎng)絡(luò)性能,網(wǎng)絡(luò)結(jié)構(gòu)的分布方式、復(fù)雜度和連接方式都會對網(wǎng)絡(luò)功能產(chǎn)生重要影響。當(dāng)前主流的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)都是人為設(shè)計的,不同的網(wǎng)絡(luò)結(jié)構(gòu)面向不同的功能,網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計也依賴于研究人員的經(jīng)驗。因此,設(shè)計一種能夠產(chǎn)生自適應(yīng)網(wǎng)絡(luò)結(jié)構(gòu)的算法,既可以提高網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計效率,又可以提供定制化的設(shè)計方案。 結(jié)構(gòu)學(xué)習(xí)算法基于生物學(xué)Hebb規(guī)則,能夠自動生成新連接,為網(wǎng)絡(luò)結(jié)構(gòu)自動構(gòu)建方法提供思路,彌補(bǔ)目前神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)固定的缺陷,同時也為本文的脈沖神經(jīng)網(wǎng)絡(luò)賦予更強(qiáng)的生物相似性。其中,Hebb學(xué)習(xí)規(guī)則是唐納德·赫布在1949年提出的神經(jīng)心理學(xué)理論,該理論認(rèn)為不同的神經(jīng)元在同一時間段內(nèi)激活,則兩者存在相關(guān)性,兩者之間的連接應(yīng)當(dāng)被加強(qiáng)。本文借鑒Hebb規(guī)則的相關(guān)性學(xué)習(xí)思想,規(guī)定同一時間段內(nèi)激活的神經(jīng)元,若兩者沒有連接,則建立一條連接,結(jié)構(gòu)學(xué)習(xí)算法如圖5所示。 圖5 基于Hebb的結(jié)構(gòu)學(xué)習(xí)算法 圖5中,N1和N2表示兩個脈沖神經(jīng)元,兩者之間不存在連接;input1和input2分別表示N1和N2的輸入信號;t1和t2分別表示N1和N2的激活時間;Threshold表示時間閾值。當(dāng)t1和t2差的絕對值小于時間閾值時,在N1和N2建立一條新的連接。 同時為了防止網(wǎng)絡(luò)連接的無限制增長,算法考慮了神經(jīng)元的位置因素,在神經(jīng)元相對距離超出閾值時,不建立連接。將神經(jīng)元發(fā)射脈沖這一事件稱為激活,具體算法如下: 基于Hebb的結(jié)構(gòu)學(xué)習(xí)算法: 步驟1 開始仿真并檢測該仿真周期內(nèi)兩個神經(jīng)元N1,N2的狀態(tài),若N1,N2兩個神經(jīng)元之間不存在連接,則轉(zhuǎn)步驟2;否則,結(jié)束; 步驟2 若兩個神經(jīng)元都處于激活狀態(tài),則將激活時間分別記為t1,t2,轉(zhuǎn)步驟3;否則結(jié)束; 步驟3 若兩個神經(jīng)元距離小于閾值,則轉(zhuǎn)步驟4;否則,結(jié)束; 步驟4 若abs(t1-t2) 若abs(t1-t2) 若abs(t1-t2)≥Threshold,結(jié)束。 為了驗證算法的可行性,本文設(shè)計了一種仿生型的網(wǎng)絡(luò)模型,并搭建了適合脈沖神經(jīng)網(wǎng)絡(luò)的仿真平臺。 在生物視覺系統(tǒng)中,也存在類似卷積層和池化層的結(jié)構(gòu),而卷積神經(jīng)網(wǎng)絡(luò)(CNN)就是借鑒貓的視覺神經(jīng)網(wǎng)絡(luò)而提出的。但生物視覺網(wǎng)絡(luò)的卷積層和池化層只是起到了圖像預(yù)處理的作用,真正具備識別功能的不是卷積層和池化層,而是更深層次的識別網(wǎng)絡(luò)。本文提出的仿生型脈沖神經(jīng),將識別任務(wù)放在了SNN網(wǎng)絡(luò)層,卷積層僅對數(shù)據(jù)進(jìn)行預(yù)處理,卷積層在學(xué)習(xí)過程中不會發(fā)生變化[13,14],網(wǎng)絡(luò)模型如圖6所示。 網(wǎng)絡(luò)模型中的每一層的功能如下所示: 輸入層:讀取數(shù)據(jù)并進(jìn)行格式轉(zhuǎn)化。 卷積層:提取圖像特征。卷積層的卷積核由4個固定的卷積核組成,分別對圖像數(shù)據(jù)橫、豎、左斜和右斜4個方向的特征進(jìn)行提取。 圖6 脈沖神經(jīng)網(wǎng)絡(luò)模型 池化層:主要起到了降低數(shù)據(jù)量和銳化特征的目的。 轉(zhuǎn)換函數(shù):將數(shù)據(jù)轉(zhuǎn)換為脈沖序列信號,作為脈沖神經(jīng)網(wǎng)絡(luò)的輸入。 SNN網(wǎng)絡(luò):脈沖神經(jīng)網(wǎng)絡(luò)層,具體結(jié)構(gòu)可由使用者定義,承擔(dān)主要的信息處理任務(wù)。 輸出層:統(tǒng)計分析脈沖信息,將SNN網(wǎng)絡(luò)的輸出轉(zhuǎn)化為標(biāo)準(zhǔn)的數(shù)據(jù)輸出格式。 鑒于第三代神經(jīng)網(wǎng)絡(luò)與第二代神經(jīng)網(wǎng)絡(luò)工作模式的不同,脈沖神經(jīng)網(wǎng)絡(luò)無法在傳統(tǒng)的仿真平臺上進(jìn)行仿真。最常見的仿真方法是通過數(shù)學(xué)建模,但神經(jīng)元模型和網(wǎng)絡(luò)結(jié)構(gòu)的建模過程繁瑣,需要耗費(fèi)大量的研究時間,也不適合大規(guī)模網(wǎng)絡(luò)的仿真。 本文通過Python編程,結(jié)合開源脈沖神經(jīng)網(wǎng)絡(luò)模擬器NEST,搭建了一款適合脈沖神經(jīng)網(wǎng)絡(luò)的仿真平臺。NEST是一個面向脈沖神經(jīng)網(wǎng)絡(luò)的模擬器,它關(guān)注的是神經(jīng)系統(tǒng)的動態(tài)、大小和結(jié)構(gòu),為用戶提供了大量的仿生型神經(jīng)元模型和突觸模型。除了NEST模擬器外,該仿真平臺還有配置文件、脈沖轉(zhuǎn)換器、脈沖神經(jīng)網(wǎng)絡(luò)仿真器和顯示界面構(gòu)成,如圖7所示。 圖7 脈沖神經(jīng)網(wǎng)絡(luò)仿真平臺 配置文件主要為用戶提供配置接口,包括網(wǎng)絡(luò)、算法和系統(tǒng)等配置信息;而脈沖轉(zhuǎn)換器則負(fù)責(zé)讀取數(shù)據(jù)集,并結(jié)合脈沖轉(zhuǎn)換函數(shù)轉(zhuǎn)換為脈沖信號;NEST模擬器則提供神經(jīng)元模型和網(wǎng)絡(luò)連接模型,減少用戶的數(shù)學(xué)建模壓力;脈沖神經(jīng)網(wǎng)絡(luò)仿真器為核心部分,負(fù)責(zé)算法和仿真的實現(xiàn);顯示界面主要顯示網(wǎng)絡(luò)仿真結(jié)果,例如提供網(wǎng)絡(luò)輸出信息、繪制神經(jīng)元膜電位曲線等。 本實驗中的網(wǎng)絡(luò)結(jié)構(gòu)基于圖6的網(wǎng)絡(luò)模型搭建,其中SNN網(wǎng)絡(luò)部分采用了三層脈沖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。第一層為576脈沖發(fā)射神經(jīng)元,根據(jù)轉(zhuǎn)換函數(shù)的輸出數(shù)據(jù)產(chǎn)生脈沖序列;第二層為576個LIF模型神經(jīng)元;最后一層為10個LIF模型神經(jīng)元,用于表征網(wǎng)絡(luò)的分類結(jié)果。第一層到第二層采用“一對一”連接,第二層到第三層采用全連接方式進(jìn)行連接,并為第三層神經(jīng)元添加“引導(dǎo)”神經(jīng)元。 權(quán)值設(shè)置和優(yōu)化方面,第一層到第二層所有連接的權(quán)值設(shè)為統(tǒng)一的值,記為weight0。實驗過程中發(fā)現(xiàn),weight0太小,會導(dǎo)致第二層神經(jīng)元無法激活;weight0太大,會導(dǎo)致神經(jīng)元參數(shù)飽和,影響仿真精度;因此,weight0的值必須設(shè)置在合適的區(qū)間范圍內(nèi)。本文使用二分查找法,以第二層神經(jīng)元激活狀態(tài)和神經(jīng)元參數(shù)飽和狀態(tài)為參考,設(shè)置weight0的上下邊界,結(jié)合實驗數(shù)據(jù)選取合適的weight0。另外,由于前文中監(jiān)督式學(xué)習(xí)算法的要求,第二層到第三層連接的權(quán)值應(yīng)當(dāng)遠(yuǎn)小于“引導(dǎo)”神經(jīng)元到第三層神經(jīng)元的連接的權(quán)值。因此,本文將第二層到第三層的初始權(quán)值設(shè)為1,而將“引導(dǎo)”神經(jīng)元到第三層神經(jīng)元的連接的權(quán)值設(shè)為1500。在巨大的權(quán)值差距下,輸出層神經(jīng)元的激活時間會高度趨近于“引導(dǎo)”神經(jīng)元,根據(jù)STDP規(guī)則,進(jìn)而對第二層到第三層的連接權(quán)值進(jìn)行定向增強(qiáng)或者減弱,從而實現(xiàn)權(quán)值訓(xùn)練的目的。 實驗采用了MNIST手寫體數(shù)字對網(wǎng)絡(luò)性能進(jìn)行了測試,MNIST訓(xùn)練集圖片共計60 000張,測試集圖片共計10 000,圖片類別共 10類,分別用10個標(biāo)簽值進(jìn)行表示。在網(wǎng)絡(luò)輸出層,每個神經(jīng)元代表一種分類結(jié)果,與10個標(biāo)簽值一一對應(yīng),激活時間最早的神經(jīng)元所對應(yīng)的分類結(jié)果即為網(wǎng)絡(luò)最終輸出結(jié)果。 實驗中,每張圖片的仿真時間為500 ms,通過實驗觀察,第二層神經(jīng)元活躍時間為50 ms左右。在每一張圖片的仿真過程中,根據(jù)輸入圖片的標(biāo)簽值,對于代表正確輸出的神經(jīng)元,其連接的“引導(dǎo)”神經(jīng)元激活時間設(shè)為 75 ms;對于代表錯誤輸出的神經(jīng)元,其連接的“引導(dǎo)”神經(jīng)元激活時間設(shè)為35 ms;那么,根據(jù)權(quán)值學(xué)習(xí)算法,“引導(dǎo)”神經(jīng)元就能夠?qū)φ_輸出進(jìn)行強(qiáng)化,對于錯誤輸出進(jìn)行抑制,從而實現(xiàn)了算法的學(xué)習(xí)功能。 為了更加直觀地表現(xiàn)監(jiān)督式學(xué)習(xí)算法的有效性,通過10次重復(fù)實驗,每次實驗中采用500張訓(xùn)練集圖片對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后在訓(xùn)練集和測試集上分別進(jìn)行網(wǎng)絡(luò)功能驗證,將測試結(jié)果記錄見表2。 表2 網(wǎng)絡(luò)對MNIST數(shù)據(jù)集識別準(zhǔn)確率/% 通過表2可以看出,在監(jiān)督式學(xué)習(xí)算法的訓(xùn)練下,脈沖神經(jīng)網(wǎng)絡(luò)能夠?qū)NIST測試集進(jìn)行有效識別。多次重復(fù)性實驗后發(fā)現(xiàn),訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)對MNIST訓(xùn)練集的識別率均值能夠達(dá)到91.20%,測試集的識別率均值能夠達(dá)到84.12%,雖然這一準(zhǔn)確率無法與第二代神經(jīng)網(wǎng)絡(luò)相比,但足以驗證了本文脈沖神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法和網(wǎng)絡(luò)結(jié)構(gòu)的可行性。 為了驗證脈沖神經(jīng)網(wǎng)絡(luò)快速收斂能力,本實驗通過與第二代神經(jīng)網(wǎng)絡(luò)的對比實驗,驗證脈沖神經(jīng)網(wǎng)絡(luò)在快速收斂方面的優(yōu)勢。 首先,實驗使用TensorFlow搭建了兩個第二代神經(jīng)網(wǎng)絡(luò)用于對比實驗:一個是僅有兩層全連接結(jié)構(gòu)的網(wǎng)絡(luò),一個是具有兩層卷積和一層全連接的卷積神經(jīng)網(wǎng)絡(luò)。這兩個網(wǎng)絡(luò)在充分訓(xùn)練的情況下,對MNIST數(shù)據(jù)集具有良好的識別率,分別能夠達(dá)到98.4%和99.24%。然而在網(wǎng)絡(luò)收斂速度方面,這兩種網(wǎng)絡(luò)則較為緩慢。本實驗將脈沖神經(jīng)網(wǎng)絡(luò)、全連接網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,第一輪迭代的前500圖片訓(xùn)練收斂情況繪制如圖8所示。 圖8 3種網(wǎng)絡(luò)收斂速度對比 從結(jié)果上可以看出,本文設(shè)計的脈沖神經(jīng)網(wǎng)絡(luò)(SNN)具有快速收斂的能力。而卷積神經(jīng)網(wǎng)絡(luò)(CNN)雖然具有極好識別準(zhǔn)確率,但其收斂速度也較慢。 為了分析脈沖神經(jīng)網(wǎng)絡(luò)低功耗特性,本文對網(wǎng)絡(luò)識別單張圖片的能耗進(jìn)行了估算。在前文中,LIF神經(jīng)元模型的等效電路已經(jīng)在圖1中給出,從該神經(jīng)模型中可以看出模型的能耗可根據(jù)電容充放電過程進(jìn)行計算。單個神經(jīng)元激活一次消耗的能量計算方式如式(8)~式(10)所示 (8) U2(t1)=Vth (9) U2(t2)=Vreset (10) 其中,Vth為神經(jīng)元的激發(fā)閾值,Vreset為神經(jīng)元的復(fù)位膜電位,本文中LIF神經(jīng)元模型的參數(shù)在表1中已經(jīng)給出,此處不再贅述。通過統(tǒng)計脈沖神經(jīng)網(wǎng)絡(luò)在訓(xùn)練和識別過程中,每張圖片激活神經(jīng)元平均數(shù),可以計算出訓(xùn)練或識別一張圖片所消耗的能量,結(jié)果見表3。 表3 訓(xùn)練、識別單張MNIST數(shù)據(jù)集圖片能耗 從結(jié)果可以看出,該網(wǎng)絡(luò)學(xué)習(xí)和識別一張圖片的能耗大約為65 pJ。雖然最終的功耗需要根據(jù)網(wǎng)絡(luò)的工作頻率進(jìn)行計算,但單張圖片的處理能耗在pJ量級已經(jīng)完全符合低功耗特性了。 結(jié)構(gòu)學(xué)習(xí)算法驗證實驗仍然基于本文提出的網(wǎng)絡(luò)模型,其中SNN網(wǎng)絡(luò)部分主要包括輸入層、中間層和輸出層,其中中間層是實現(xiàn)結(jié)構(gòu)學(xué)習(xí)的核心層,網(wǎng)絡(luò)結(jié)構(gòu)如圖9所示。 圖9 結(jié)構(gòu)學(xué)習(xí)網(wǎng)絡(luò)模型SNN部分 輸入層:為整個脈沖神經(jīng)網(wǎng)絡(luò)提供脈沖信號,輸入層神經(jīng)元數(shù)量為576個,采用一對一的方式連接到中間層,該部分連接為固定連接,既不參與權(quán)值訓(xùn)練,也不參與結(jié)構(gòu)訓(xùn)練。 中間層:為12×12×4的三維神經(jīng)元陣列,神經(jīng)元模型為LIF模型,神經(jīng)元之間距離的最小單位記為1。在中間層內(nèi)部無初始連接,只有在開啟仿真后,經(jīng)過輸入信號和結(jié)構(gòu)學(xué)習(xí)算法的共同作用,中間層內(nèi)部才會不斷生長出新的連接。 輸出層:共計10個神經(jīng)元,與圖片的10個類別相對應(yīng),神經(jīng)元模型為LIF模型。中間層與輸出層之間也無初始連接,在每次仿真中,中間層中激活的神經(jīng)元會被標(biāo)記。仿真結(jié)束后,將中間層中激活的神經(jīng)元連接到與輸入圖片類別對應(yīng)的輸出神經(jīng)元上。 網(wǎng)絡(luò)權(quán)值方面,輸入層到中間層的連接權(quán)值與權(quán)值學(xué)習(xí)算法驗證實驗中相同,運(yùn)用二分查找法對權(quán)值進(jìn)行初始化;中間層的連接會讓同時激活的神經(jīng)元產(chǎn)生相互刺激,使得這部分神經(jīng)元更容易激發(fā),因此,這部分連接的權(quán)值需要根據(jù)實驗中神經(jīng)元的激發(fā)狀態(tài)設(shè)計。而中間層到輸出層之間權(quán)值是一個動態(tài)變化的過程,對于連向同一個輸出神經(jīng)元的所有連接,它們權(quán)值的總和為一個常數(shù),當(dāng)連接數(shù)量越多時,每條連接的權(quán)值就越?。环粗?,每條連接的權(quán)值就越大,權(quán)值會在每張圖片仿真結(jié)束后進(jìn)行更新。 由于結(jié)構(gòu)學(xué)習(xí)算法處于探索階段,大規(guī)模數(shù)據(jù)集會增加算法研究過程中的不確定性,因此,本實驗僅從MNIST數(shù)據(jù)集中選取了10張數(shù)字圖片,其標(biāo)簽值分別為0到9,設(shè)計的學(xué)習(xí)算法流程如下: 結(jié)構(gòu)學(xué)習(xí)算法流程: 步驟1 加載數(shù)據(jù)并完成預(yù)處理,轉(zhuǎn)換為脈沖信號傳入輸入層,轉(zhuǎn)步驟2; 步驟2 開啟仿真,并記錄網(wǎng)絡(luò)中神經(jīng)元狀態(tài),轉(zhuǎn)步驟3; 步驟3 調(diào)用結(jié)構(gòu)學(xué)習(xí)算法生成中間層的層內(nèi)連接,并將激活神經(jīng)元連接至輸出神經(jīng)元,轉(zhuǎn)步驟4; 步驟4 若網(wǎng)絡(luò)已經(jīng)收斂,則結(jié)束;否則,轉(zhuǎn)步驟5; 步驟5 是否達(dá)到最大迭代次數(shù),是,則結(jié)束;否,則轉(zhuǎn)步驟1; 在結(jié)構(gòu)學(xué)習(xí)算法的控制下,中間層中網(wǎng)絡(luò)連接數(shù)量會不斷變化,通過對連接數(shù)量的記錄,可以得到如圖10所示的結(jié)果。 圖10 中間層中網(wǎng)絡(luò)連接數(shù)量統(tǒng)計 從圖10中可以看出,隨著仿真的進(jìn)行,中間層網(wǎng)絡(luò)連接數(shù)量不斷增長,并在算法的控制下逐漸趨于平緩。這一過程驗證了結(jié)構(gòu)學(xué)習(xí)算法的有效性和合理性,也模擬了生物神經(jīng)網(wǎng)絡(luò)在外界刺激下不斷生成新連接的機(jī)制。當(dāng)然,目前的算法并不能完全客觀完整地反映出生物神經(jīng)網(wǎng)絡(luò)的真實生長規(guī)律,本文的算法僅僅對此做探索性研究,網(wǎng)絡(luò)模型和算法也需要后續(xù)不斷的優(yōu)化。 為了驗證結(jié)構(gòu)學(xué)習(xí)算法生成的網(wǎng)絡(luò)是否具備自適應(yīng)特性,本文對已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行了測試,驗證該網(wǎng)絡(luò)對已經(jīng)學(xué)習(xí)過的內(nèi)容是否能夠有效區(qū)分。將數(shù)字圖片再次輸入網(wǎng)絡(luò),觀察輸出層神經(jīng)元的激活情況,結(jié)果匯總見表4。 其中,輸出層激活神經(jīng)元列表中,元素值代表輸出層神經(jīng)元標(biāo)號,與10個手寫體數(shù)字圖片的標(biāo)簽值一一對應(yīng)。輸出層激活神經(jīng)元列表順序,表示了輸出層神經(jīng)元的激活順序,重復(fù)出現(xiàn)的元素表示對應(yīng)的神經(jīng)元被多次激活。輸出層激活神經(jīng)元列表中,元素出現(xiàn)次數(shù)最多的,即為網(wǎng)絡(luò)最終輸出。從識別結(jié)果上看出,結(jié)構(gòu)學(xué)習(xí)算法生成的網(wǎng)絡(luò)能夠?qū)?0張圖片進(jìn)行有效區(qū)分,驗證了結(jié)構(gòu)學(xué)習(xí)算法的合理性。 表4 結(jié)構(gòu)學(xué)習(xí)網(wǎng)絡(luò)功能測試 結(jié)構(gòu)學(xué)習(xí)算法具有較強(qiáng)的生物仿生性,本實驗對于輸出層神經(jīng)元的膜電位變化情況進(jìn)行了記錄。當(dāng)輸入數(shù)字“1”的圖片時,網(wǎng)絡(luò)輸出層各個神經(jīng)元膜電位變化曲線如圖11所示。 圖11 輸出層神經(jīng)元膜電位響應(yīng)情況 圖11中output-0,output-1……output-9分別表示輸出層的10個神經(jīng)元,從膜電位曲線上看,中間網(wǎng)絡(luò)的output-1輸出神經(jīng)元有著明顯的響應(yīng),并且很快達(dá)到了激發(fā)閾值(-55 mv),但是其余輸出神經(jīng)元在此過程中,并非處于完全靜默狀態(tài),其膜電位曲線也表現(xiàn)出了相對較低的活躍性。而在生物腦神經(jīng)網(wǎng)絡(luò)中,由于神經(jīng)元之間復(fù)雜的連接,某一神經(jīng)元團(tuán)的激活往往會通過突觸傳導(dǎo)到附近的神經(jīng)元團(tuán)中,引起附近的神經(jīng)元團(tuán)的活躍,這一現(xiàn)象也從側(cè)面反映了本實驗中的網(wǎng)絡(luò)具有更強(qiáng)的生物可解釋性。 本文提出的脈沖神經(jīng)網(wǎng)絡(luò)權(quán)值學(xué)習(xí)算法能夠?qū)γ}沖神經(jīng)網(wǎng)絡(luò)實現(xiàn)有效的監(jiān)督式訓(xùn)練,權(quán)值學(xué)習(xí)算法訓(xùn)練出來的脈沖神經(jīng)網(wǎng)絡(luò)具備良好的圖像識別能力,與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)相比,在快速收斂能力和低功耗特性方面具有一定優(yōu)勢。結(jié)構(gòu)學(xué)習(xí)算法打破了神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)固定的缺陷,能夠生成自適應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu),提高了網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計的效率,并且具有更高的生物可解釋性。兩種脈沖神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法,分別從不同方面進(jìn)行了嘗試,各有優(yōu)缺點(diǎn)。但兩種算法都屬于脈沖神經(jīng)網(wǎng)絡(luò)方面的探索性研究,仍然需要進(jìn)一步地研究與完善。2.2 基于Hebb的結(jié)構(gòu)學(xué)習(xí)算法
3 網(wǎng)絡(luò)模型與仿真平臺
3.1 脈沖神經(jīng)網(wǎng)絡(luò)模型
3.2 脈沖神經(jīng)網(wǎng)絡(luò)仿真平臺
4 權(quán)值學(xué)習(xí)算法驗證實驗
4.1 網(wǎng)絡(luò)結(jié)構(gòu)與參數(shù)說明
4.2 權(quán)值學(xué)習(xí)有效性分析
4.3 快速收斂能力分析
4.4 低功耗特性分析
5 結(jié)構(gòu)學(xué)習(xí)算法驗證實驗
5.1 網(wǎng)絡(luò)結(jié)構(gòu)與參數(shù)說明
5.2 結(jié)構(gòu)學(xué)習(xí)有效性分析
5.3 網(wǎng)絡(luò)性能分析
5.4 輸出層神經(jīng)元膜電分析
6 結(jié)束語