尚瑛杰,何 虎,楊 旭,董麗亞
(清華大學 微電子與納電子學系,北京 100084)
隨著智能化需求的推進,傳統的神經網絡逐漸暴露出計算量大、功耗高和智能化程度低等問題,而脈沖神經網絡(spiking neuron networks,SNN)由于工作模式更加接近人腦,具有計算量低、功耗低和仿生性高等特點,經常被譽為“第三代人工神經網絡”,是實現強人工智能的重要方式,因此受到越來越多的關注。
然而,目前脈沖神經網絡研究還處在初步階段,缺乏有效的學習算法,這既是脈沖神經網絡訓練困難的主要瓶頸,也是眾多科研人員努力解決的問題。人工智能的重大突破通常受到生物腦神經網絡的啟發[1],感知器模型、卷積神經網絡,乃至深度學習都是如此[2,3],而脈沖神經網絡的產生也是如此[4],所以,仿生型算法是解決脈沖神經網絡訓練困難的重要手段之一。
本文對脈沖神經網絡的權值和結構兩個方面進行了研究,提出了脈沖神經網絡的權值學習算法和結構學習算法,嘗試性地解決脈沖神經網絡訓練困難的問題。同時設計了一種脈沖神經網絡結構,用于算法的仿真驗證實驗。
神經元是神經網絡最基礎的組成部分,神經元模型的選擇與網絡性能有著直接的關系。本文采用的神經元模型為LIF(leaky integrate and fire)模型,即泄露積分放電模型,這是一種基于生物神經元特性抽象出來的積分器模型。LIF神經元模型既對生物神經元主要特性進行充分保留,又兼顧了模型的簡潔性和仿真效率。LIF模型在電路方面可以等效為帶電壓偏置的電阻-電容并聯模型,如圖1所示,其中I(t)為神經元的輸入電流,uret為神經元復位膜電位,u(t)為膜電位[5]。

圖1 LIF神經元模型的等效電路
當神經元處于靜息狀態,即輸入電流I(t)=0時,可知u(t)=uret。 當輸入電流I(t)>0時,電容C會進行充電,進而導致膜電位u(t)的升高;另一方面,若電容C上存在電荷積累,則電荷會隨著時間而泄漏,膜電位u(t)也會因此降低,直至回落到靜息狀態。如果電容C的電荷積累速度高于泄漏速度,膜電位u(t)會持續升高到激發閾值,此時神經元會向外發射一個電脈沖,膜電位u(t)迅速降低至復位膜電位。本文中采用的LIF模型參數借鑒了目前成熟的研究成果[6-8],具體參數詳見表1。

表1 LIF神經元模型參數
脈沖神經網絡被譽為“第三代神經網絡”,是受到腦神經工作方式的啟發而產生。因此,脈沖神經網絡具有很高的生物相似性,甚至會被用于生物神經網絡的模擬。另外,由于脈沖神經網絡具有時間維度信息,相比于第二代神經網絡其信息處理能力更強,尤其是在具有強關聯性的上下文信息處理方面獨具優勢。目前,由于缺乏有效的訓練算法,脈沖神經網絡的潛力不能充分發揮。
在網絡結構方面,脈沖神經網絡的種類眾多,主要有多層前饋網絡、循環網絡和進化網絡等。圖2展示了一個多層前饋網絡模型,本文以此為例介紹脈沖神經網絡的工作原理。

圖2 脈沖神經網絡模型
在脈沖神經網絡中,輸入、輸出和中間層的信息傳遞與處理都是基于脈沖編碼信號,輸入層的脈沖信號通過神經元之間的連接傳遞到下一層神經元。當神經元接收到脈沖信號后,該神經元的膜電位便會升高,在LIF的電路模型中,這一過程等效為電容充電。當神經元膜電位達到閾值后,該神經元會向后神經元發射一個脈沖信號,并將自身膜電位復位,稱神經元的這一事件為一次激活[9]。
2.1.1 STDP規則介紹
STDP(spike-timing-dependent plasticity)規則,稱為突觸可塑性規則,是生物學中對大腦神經元連接強度變化規律的總結。在生物神經網絡中,神經元之間的連接稱為突觸,突觸的強度會根據前后神經元激活狀態的因果關系發生改變,這種現象也稱為突觸可塑性。STDP規則的原理如圖3所示。

圖3 STDP規則
圖3中,Npre和Npost表示兩個脈沖神經元,兩者之間存在一條有向連接;Npre位于連接的起點,稱之為前神經元;Npost位于連接的終點,稱之為后神經元;神經元發射脈沖的動作稱作激活,發射脈沖的時間稱為激活時間。當前神經元激活時間早于后神經元激活時間,則加強兩個神經元之間的連接;反之,減弱連接。
從數學模型角度分析,連接的強度與前后神經元激活時間差,可以近似為某種函數關系[10,11]。STDP規則的函數實現方式如式(1)~式(5)所示
Δt=t2-t1
(1)
K(Δt)=exp(-|Δt|/τ)
(2)
f_(w)=αwμ
(3)
f+(w)=(1-w)μ
(4)
(5)
其中,t2為后神經元激活時間;t1為前神經元激活時間;τ為控制指數衰減速率的時間常數,取值大于0;α為對稱度調整參數,取值大于0,用于調整f-(w)函數和f+(w)函數對稱度;μ為曲率因子;w為歸一化后的連接權值,取值區間為[0,1];λ為權值學習率,取值大于0;K(Δt)為時間濾波函數;f-(w)和f+(w)稱為更新函數;Δw為權值調整量。
通過分析易得:當Δt小于或等于0時,權值減小;當Δt大于0時,權值增大;這與理論相符合。
2.1.2 基于STDP規則的監督式學習算法
監督式學習算法一直都是脈沖神經網絡的難點,由于脈沖序列為離散數據,無法進行微分求導運算,因此第二代神經網絡的BP算法并不適合脈沖神經網絡。本文基于STDP規則,設計了一種監督式的學習方法[12]。監督式學習算法的基本結構如圖4所示。

圖4 監督式學習算法
網絡中提供監督式學習信號的神經元,稱為“引導”神經元;而Npre和Npost分別代指前神經元和后神經元,并且把神經元發射脈沖的動作稱作激活,發射脈沖的時間稱為激活時間。另外,學習算法設定:神經元Npre與神經元Npost之間的連接權值為W1,該權值受STDP規則調整;“引導”神經元與神經元Npost之間的連接權值為W2,該權值為常數值,仿真過程中保持不變。
在初始網絡之中,權值W1設定相對較小,因此神經元Npre對神經元Npost的影響較小;而權值W2設定相對較大,因此“引導”神經元對神經元Npost的影響較大。并且,考慮到LIF神經元模型的積分放電行為,激活時間t2會非常接近t3。具體關系可以表示如式(6)~式(7)所示
W1?W2
(6)
t3=t2+Δt
(7)
其中,Δt≈0。 在這種情況下,只需要通過設置“引導”神經元的激活時間t3,就可以調整神經元Npost的激活時間t2,則:
當t1 當t1≥t2時,根據STDP規則,連接權值為W1減弱; 綜上所述,對于連接前后兩個神經元,在合理地設置“引導”神經元激活時間的情況下,可以實現對前后神經元之間連接的增強或者減弱。 目前結構學習算法方面研究成果相對較少,神經網絡的學習算法主要以權值學習為主。然而,網絡結構關系到網絡性能,網絡結構的分布方式、復雜度和連接方式都會對網絡功能產生重要影響。當前主流的神經網絡結構都是人為設計的,不同的網絡結構面向不同的功能,網絡結構的設計也依賴于研究人員的經驗。因此,設計一種能夠產生自適應網絡結構的算法,既可以提高網絡結構設計效率,又可以提供定制化的設計方案。 結構學習算法基于生物學Hebb規則,能夠自動生成新連接,為網絡結構自動構建方法提供思路,彌補目前神經網絡結構固定的缺陷,同時也為本文的脈沖神經網絡賦予更強的生物相似性。其中,Hebb學習規則是唐納德·赫布在1949年提出的神經心理學理論,該理論認為不同的神經元在同一時間段內激活,則兩者存在相關性,兩者之間的連接應當被加強。本文借鑒Hebb規則的相關性學習思想,規定同一時間段內激活的神經元,若兩者沒有連接,則建立一條連接,結構學習算法如圖5所示。 圖5 基于Hebb的結構學習算法 圖5中,N1和N2表示兩個脈沖神經元,兩者之間不存在連接;input1和input2分別表示N1和N2的輸入信號;t1和t2分別表示N1和N2的激活時間;Threshold表示時間閾值。當t1和t2差的絕對值小于時間閾值時,在N1和N2建立一條新的連接。 同時為了防止網絡連接的無限制增長,算法考慮了神經元的位置因素,在神經元相對距離超出閾值時,不建立連接。將神經元發射脈沖這一事件稱為激活,具體算法如下: 基于Hebb的結構學習算法: 步驟1 開始仿真并檢測該仿真周期內兩個神經元N1,N2的狀態,若N1,N2兩個神經元之間不存在連接,則轉步驟2;否則,結束; 步驟2 若兩個神經元都處于激活狀態,則將激活時間分別記為t1,t2,轉步驟3;否則結束; 步驟3 若兩個神經元距離小于閾值,則轉步驟4;否則,結束; 步驟4 若abs(t1-t2) 若abs(t1-t2) 若abs(t1-t2)≥Threshold,結束。 為了驗證算法的可行性,本文設計了一種仿生型的網絡模型,并搭建了適合脈沖神經網絡的仿真平臺。 在生物視覺系統中,也存在類似卷積層和池化層的結構,而卷積神經網絡(CNN)就是借鑒貓的視覺神經網絡而提出的。但生物視覺網絡的卷積層和池化層只是起到了圖像預處理的作用,真正具備識別功能的不是卷積層和池化層,而是更深層次的識別網絡。本文提出的仿生型脈沖神經,將識別任務放在了SNN網絡層,卷積層僅對數據進行預處理,卷積層在學習過程中不會發生變化[13,14],網絡模型如圖6所示。 網絡模型中的每一層的功能如下所示: 輸入層:讀取數據并進行格式轉化。 卷積層:提取圖像特征。卷積層的卷積核由4個固定的卷積核組成,分別對圖像數據橫、豎、左斜和右斜4個方向的特征進行提取。 圖6 脈沖神經網絡模型 池化層:主要起到了降低數據量和銳化特征的目的。 轉換函數:將數據轉換為脈沖序列信號,作為脈沖神經網絡的輸入。 SNN網絡:脈沖神經網絡層,具體結構可由使用者定義,承擔主要的信息處理任務。 輸出層:統計分析脈沖信息,將SNN網絡的輸出轉化為標準的數據輸出格式。 鑒于第三代神經網絡與第二代神經網絡工作模式的不同,脈沖神經網絡無法在傳統的仿真平臺上進行仿真。最常見的仿真方法是通過數學建模,但神經元模型和網絡結構的建模過程繁瑣,需要耗費大量的研究時間,也不適合大規模網絡的仿真。 本文通過Python編程,結合開源脈沖神經網絡模擬器NEST,搭建了一款適合脈沖神經網絡的仿真平臺。NEST是一個面向脈沖神經網絡的模擬器,它關注的是神經系統的動態、大小和結構,為用戶提供了大量的仿生型神經元模型和突觸模型。除了NEST模擬器外,該仿真平臺還有配置文件、脈沖轉換器、脈沖神經網絡仿真器和顯示界面構成,如圖7所示。 圖7 脈沖神經網絡仿真平臺 配置文件主要為用戶提供配置接口,包括網絡、算法和系統等配置信息;而脈沖轉換器則負責讀取數據集,并結合脈沖轉換函數轉換為脈沖信號;NEST模擬器則提供神經元模型和網絡連接模型,減少用戶的數學建模壓力;脈沖神經網絡仿真器為核心部分,負責算法和仿真的實現;顯示界面主要顯示網絡仿真結果,例如提供網絡輸出信息、繪制神經元膜電位曲線等。 本實驗中的網絡結構基于圖6的網絡模型搭建,其中SNN網絡部分采用了三層脈沖神經網絡結構。第一層為576脈沖發射神經元,根據轉換函數的輸出數據產生脈沖序列;第二層為576個LIF模型神經元;最后一層為10個LIF模型神經元,用于表征網絡的分類結果。第一層到第二層采用“一對一”連接,第二層到第三層采用全連接方式進行連接,并為第三層神經元添加“引導”神經元。 權值設置和優化方面,第一層到第二層所有連接的權值設為統一的值,記為weight0。實驗過程中發現,weight0太小,會導致第二層神經元無法激活;weight0太大,會導致神經元參數飽和,影響仿真精度;因此,weight0的值必須設置在合適的區間范圍內。本文使用二分查找法,以第二層神經元激活狀態和神經元參數飽和狀態為參考,設置weight0的上下邊界,結合實驗數據選取合適的weight0。另外,由于前文中監督式學習算法的要求,第二層到第三層連接的權值應當遠小于“引導”神經元到第三層神經元的連接的權值。因此,本文將第二層到第三層的初始權值設為1,而將“引導”神經元到第三層神經元的連接的權值設為1500。在巨大的權值差距下,輸出層神經元的激活時間會高度趨近于“引導”神經元,根據STDP規則,進而對第二層到第三層的連接權值進行定向增強或者減弱,從而實現權值訓練的目的。 實驗采用了MNIST手寫體數字對網絡性能進行了測試,MNIST訓練集圖片共計60 000張,測試集圖片共計10 000,圖片類別共 10類,分別用10個標簽值進行表示。在網絡輸出層,每個神經元代表一種分類結果,與10個標簽值一一對應,激活時間最早的神經元所對應的分類結果即為網絡最終輸出結果。 實驗中,每張圖片的仿真時間為500 ms,通過實驗觀察,第二層神經元活躍時間為50 ms左右。在每一張圖片的仿真過程中,根據輸入圖片的標簽值,對于代表正確輸出的神經元,其連接的“引導”神經元激活時間設為 75 ms;對于代表錯誤輸出的神經元,其連接的“引導”神經元激活時間設為35 ms;那么,根據權值學習算法,“引導”神經元就能夠對正確輸出進行強化,對于錯誤輸出進行抑制,從而實現了算法的學習功能。 為了更加直觀地表現監督式學習算法的有效性,通過10次重復實驗,每次實驗中采用500張訓練集圖片對網絡進行訓練,然后在訓練集和測試集上分別進行網絡功能驗證,將測試結果記錄見表2。 表2 網絡對MNIST數據集識別準確率/% 通過表2可以看出,在監督式學習算法的訓練下,脈沖神經網絡能夠對MNIST測試集進行有效識別。多次重復性實驗后發現,訓練后的神經網絡對MNIST訓練集的識別率均值能夠達到91.20%,測試集的識別率均值能夠達到84.12%,雖然這一準確率無法與第二代神經網絡相比,但足以驗證了本文脈沖神經網絡訓練算法和網絡結構的可行性。 為了驗證脈沖神經網絡快速收斂能力,本實驗通過與第二代神經網絡的對比實驗,驗證脈沖神經網絡在快速收斂方面的優勢。 首先,實驗使用TensorFlow搭建了兩個第二代神經網絡用于對比實驗:一個是僅有兩層全連接結構的網絡,一個是具有兩層卷積和一層全連接的卷積神經網絡。這兩個網絡在充分訓練的情況下,對MNIST數據集具有良好的識別率,分別能夠達到98.4%和99.24%。然而在網絡收斂速度方面,這兩種網絡則較為緩慢。本實驗將脈沖神經網絡、全連接網絡和卷積神經網絡訓練過程中,第一輪迭代的前500圖片訓練收斂情況繪制如圖8所示。 圖8 3種網絡收斂速度對比 從結果上可以看出,本文設計的脈沖神經網絡(SNN)具有快速收斂的能力。而卷積神經網絡(CNN)雖然具有極好識別準確率,但其收斂速度也較慢。 為了分析脈沖神經網絡低功耗特性,本文對網絡識別單張圖片的能耗進行了估算。在前文中,LIF神經元模型的等效電路已經在圖1中給出,從該神經模型中可以看出模型的能耗可根據電容充放電過程進行計算。單個神經元激活一次消耗的能量計算方式如式(8)~式(10)所示 (8) U2(t1)=Vth (9) U2(t2)=Vreset (10) 其中,Vth為神經元的激發閾值,Vreset為神經元的復位膜電位,本文中LIF神經元模型的參數在表1中已經給出,此處不再贅述。通過統計脈沖神經網絡在訓練和識別過程中,每張圖片激活神經元平均數,可以計算出訓練或識別一張圖片所消耗的能量,結果見表3。 表3 訓練、識別單張MNIST數據集圖片能耗 從結果可以看出,該網絡學習和識別一張圖片的能耗大約為65 pJ。雖然最終的功耗需要根據網絡的工作頻率進行計算,但單張圖片的處理能耗在pJ量級已經完全符合低功耗特性了。 結構學習算法驗證實驗仍然基于本文提出的網絡模型,其中SNN網絡部分主要包括輸入層、中間層和輸出層,其中中間層是實現結構學習的核心層,網絡結構如圖9所示。 圖9 結構學習網絡模型SNN部分 輸入層:為整個脈沖神經網絡提供脈沖信號,輸入層神經元數量為576個,采用一對一的方式連接到中間層,該部分連接為固定連接,既不參與權值訓練,也不參與結構訓練。 中間層:為12×12×4的三維神經元陣列,神經元模型為LIF模型,神經元之間距離的最小單位記為1。在中間層內部無初始連接,只有在開啟仿真后,經過輸入信號和結構學習算法的共同作用,中間層內部才會不斷生長出新的連接。 輸出層:共計10個神經元,與圖片的10個類別相對應,神經元模型為LIF模型。中間層與輸出層之間也無初始連接,在每次仿真中,中間層中激活的神經元會被標記。仿真結束后,將中間層中激活的神經元連接到與輸入圖片類別對應的輸出神經元上。 網絡權值方面,輸入層到中間層的連接權值與權值學習算法驗證實驗中相同,運用二分查找法對權值進行初始化;中間層的連接會讓同時激活的神經元產生相互刺激,使得這部分神經元更容易激發,因此,這部分連接的權值需要根據實驗中神經元的激發狀態設計。而中間層到輸出層之間權值是一個動態變化的過程,對于連向同一個輸出神經元的所有連接,它們權值的總和為一個常數,當連接數量越多時,每條連接的權值就越??;反之,每條連接的權值就越大,權值會在每張圖片仿真結束后進行更新。 由于結構學習算法處于探索階段,大規模數據集會增加算法研究過程中的不確定性,因此,本實驗僅從MNIST數據集中選取了10張數字圖片,其標簽值分別為0到9,設計的學習算法流程如下: 結構學習算法流程: 步驟1 加載數據并完成預處理,轉換為脈沖信號傳入輸入層,轉步驟2; 步驟2 開啟仿真,并記錄網絡中神經元狀態,轉步驟3; 步驟3 調用結構學習算法生成中間層的層內連接,并將激活神經元連接至輸出神經元,轉步驟4; 步驟4 若網絡已經收斂,則結束;否則,轉步驟5; 步驟5 是否達到最大迭代次數,是,則結束;否,則轉步驟1; 在結構學習算法的控制下,中間層中網絡連接數量會不斷變化,通過對連接數量的記錄,可以得到如圖10所示的結果。 圖10 中間層中網絡連接數量統計 從圖10中可以看出,隨著仿真的進行,中間層網絡連接數量不斷增長,并在算法的控制下逐漸趨于平緩。這一過程驗證了結構學習算法的有效性和合理性,也模擬了生物神經網絡在外界刺激下不斷生成新連接的機制。當然,目前的算法并不能完全客觀完整地反映出生物神經網絡的真實生長規律,本文的算法僅僅對此做探索性研究,網絡模型和算法也需要后續不斷的優化。 為了驗證結構學習算法生成的網絡是否具備自適應特性,本文對已經訓練好的網絡進行了測試,驗證該網絡對已經學習過的內容是否能夠有效區分。將數字圖片再次輸入網絡,觀察輸出層神經元的激活情況,結果匯總見表4。 其中,輸出層激活神經元列表中,元素值代表輸出層神經元標號,與10個手寫體數字圖片的標簽值一一對應。輸出層激活神經元列表順序,表示了輸出層神經元的激活順序,重復出現的元素表示對應的神經元被多次激活。輸出層激活神經元列表中,元素出現次數最多的,即為網絡最終輸出。從識別結果上看出,結構學習算法生成的網絡能夠對10張圖片進行有效區分,驗證了結構學習算法的合理性。 表4 結構學習網絡功能測試 結構學習算法具有較強的生物仿生性,本實驗對于輸出層神經元的膜電位變化情況進行了記錄。當輸入數字“1”的圖片時,網絡輸出層各個神經元膜電位變化曲線如圖11所示。 圖11 輸出層神經元膜電位響應情況 圖11中output-0,output-1……output-9分別表示輸出層的10個神經元,從膜電位曲線上看,中間網絡的output-1輸出神經元有著明顯的響應,并且很快達到了激發閾值(-55 mv),但是其余輸出神經元在此過程中,并非處于完全靜默狀態,其膜電位曲線也表現出了相對較低的活躍性。而在生物腦神經網絡中,由于神經元之間復雜的連接,某一神經元團的激活往往會通過突觸傳導到附近的神經元團中,引起附近的神經元團的活躍,這一現象也從側面反映了本實驗中的網絡具有更強的生物可解釋性。 本文提出的脈沖神經網絡權值學習算法能夠對脈沖神經網絡實現有效的監督式訓練,權值學習算法訓練出來的脈沖神經網絡具備良好的圖像識別能力,與傳統的神經網絡相比,在快速收斂能力和低功耗特性方面具有一定優勢。結構學習算法打破了神經網絡結構固定的缺陷,能夠生成自適應的網絡結構,提高了網絡結構設計的效率,并且具有更高的生物可解釋性。兩種脈沖神經網絡學習算法,分別從不同方面進行了嘗試,各有優缺點。但兩種算法都屬于脈沖神經網絡方面的探索性研究,仍然需要進一步地研究與完善。2.2 基于Hebb的結構學習算法

3 網絡模型與仿真平臺
3.1 脈沖神經網絡模型

3.2 脈沖神經網絡仿真平臺

4 權值學習算法驗證實驗
4.1 網絡結構與參數說明
4.2 權值學習有效性分析

4.3 快速收斂能力分析

4.4 低功耗特性分析

5 結構學習算法驗證實驗
5.1 網絡結構與參數說明

5.2 結構學習有效性分析

5.3 網絡性能分析

5.4 輸出層神經元膜電分析

6 結束語