劉宙思,李尊朝,張劍,羅丹
(西安交通大學微電子學院,710049,西安)
脈沖神經網絡(SNN)作為第3代神經網絡模型[1],來源于對生物神經網絡結構的模擬,是生物體神經元之間信息傳遞過程的抽象表述,具備充分的生物可解釋性,且具有高性能和低功耗兩大優勢[2],在類腦計算領域特別是機器視覺方向日益成為研究焦點[3]。與傳統人工神經網絡相比,脈沖神經元的引入簡化了連續時間編碼和非線性激活的傳遞方式,可以有效降低實時計算的復雜度,有利于實現數據流的并行架構[4]。同時,SNN的迭代并不依賴于誤差反向傳播算法[5],使其對于平臺算力的要求大大降低,有利于分布式系統的算法部署,能夠解決邊緣計算等場景下的在線學習難題[6]。因此,SNN被普遍認為是一種輕量化、高能效的硬件友好型圖像識別解決方案[7-8]。
近年來,脈沖時間依賴可塑性(STDP)算法憑借其深厚的生理學基礎和高效的調節性機制逐漸成為SNN模型的主流學習算法之一[8],并成功應用于現場可編程邏輯門陣列[9]和專用集成電路[10]等硬件終端上。特別地,Kheradpisheh等通過排序編碼方式和簡化的STDP算法進行輸入特征提取,再借助支持向量機(SVM)完成輸出分類,最終在Caltech數據集[11]的Face/Moto子集上取得了99.1%的準確率[12];Lee等在現有STDP算法基礎上利用泊松編碼和全連接的輸出結構實現了SNN的自分類,對于Face/Moto數據集分類準確率可達97.6%[13]。為了進一步提高STDP算法在SNN上的分類性能,Zheng等將反向傳播算法引申到STDP算法的脈沖序列模式的監督學習中,結合隨機梯度下降法進行訓練,并在MNIST數據集[14]上取得了97.8%的準確率[15];Mozafari等在文獻[12]的基礎上,通過引入強化學習來對STDP算法的權重改變量結果進行二次修正,克服了原有網絡結構對SVM等外界分類器的依賴性,在Face/Moto數據集上分類準確率達到了98.9%[16]。
綜上可知,研究人員在各自細分領域中針對STDP算法與SNN模型的適配工作已經做出了大量改進,但在面對實際應用場景中廣泛存在的資源受限、算力瓶頸等約束問題時,仍然存在著優化空間。一方面,軟件仿真若想取得更好的分類性能往往會占用更多的硬件資源,同時導致更高的計算功耗;另一方面,軟件算法是神經形態計算的核心,而硬件設備是軟件賴以運行的載體,二者密不可分,片面追求軟件性能的背后多是對硬件算力的透支,尤其是隨著面向異構計算軟件平臺的興起,軟硬件協同設計已經逐漸成為技術角逐的制高點之一[17]。
據此,本文參考流水線同步[18]和事件驅動[19]方案,提出了一種新型的基于離散時間調度的脈沖神經網絡(DTS-SNN)模型,使得脈沖序列能夠在固定時間段內依次沿網絡亞層單向傳播,以同步精簡脈沖發放模式和傳遞形式。通過結合并改進經典的STDP算法和強化學習機制,優化了網絡結構的適應性和穩定性,在保證網絡分類性能的同時大幅降低了資源占用和模型復雜度,有利于軟件算法向硬件平臺的底層移植,可為高效率低功耗的小型智能化硬件終端的邊緣計算方案實現提供參考。
DTS-SNN模型的主體架構依托于多層前饋神經網絡,以非泄漏的累積發放神經元模型[16]作為網絡節點,中間突觸信息采用脈沖形式傳遞,其基本結構如圖1所示。DTS-SNN模型可分為圖像輸入層、濾波處理層、卷積層C1、池化層P1、卷積層C2和全局池化層P2(亦為輸出層)。每當輸入層在t時刻發出脈沖,脈沖將沿網絡各層連續傳播,最后當輸出層所有通道都產生脈沖時,代表網絡對單幅輸入圖像分類完畢。若網絡處理周期為T,則此時各層中脈沖序列依次為t,t+1,t+2,…,T。其中,輸入層Ⅰ完成對輸入圖像的編碼和處理,中間層Ⅱ提取輸入特征并實現高維映射,輸出層Ⅲ負責輸出網絡對輸入圖像的分類結果。

圖1 DTS-SNN模型的基本結構
由于輸入圖像之間存在尺寸和格式上的差異,故首先需要對其進行預處理。在輸入層中統一將原圖像轉換為大小一致的像素尺寸為250×160的灰度圖像,并作去邊框、閾值化處理,以減小輸入層的神經元規模,同時保留圖像的輸入特征。
原始輸入特征中通常還包含著不同程度的干擾,如多元場景、復雜光線、圖像噪點等。為盡可能地凸顯輸入圖像中的關鍵特征點,引入高斯差分歸一化層(即濾波處理層)對原圖像進行二維濾波處理。高斯核函數、差分算子和均值歸一化表達式分別為
(1)
ΔG=Gσ+(x,y)-Gσ-(x,y)
(2)
(3)
式中:x和y分別為橫、縱坐標參數;σ+=1;σ-=2;μ=4;ΔGmean和ΔGmax為ΔG的平均值和最大值。式中各參數取值來源于文獻[12]。
網絡模型的輸入脈沖采用時間編碼方式表示,單個神經元僅能發放單個脈沖,再經由權重連接作用于后神經元。為了將輸入圖像轉化為輸入脈沖序列,需要對各像素點的灰度值進行編碼。首脈沖時間(TTFS)編碼[20]是一種常用的灰度圖像線性時間編碼方式,像素點的灰度值越高表示輸入特征越明顯,相應會越早發出脈沖,灰度值越低則會越晚發出脈沖,即將灰度值0~255的像素點依次呈線性映射到T~0的時間尺度之內。為了確保所有輸入層的初始脈沖都能有機會傳遞到輸出層,初始脈沖的發放時刻應滿足

(4)
式中:p為輸入像素點灰度值;pmax和pmin分別為輸入像素點灰度值的最大值和最小值;T為單幅輸入圖像的處理周期;L為網絡模型層數。式(4)是向下取整離散化后的結果,符合脈沖序列的離散時間表達形式。每當某一時刻t輸入層有脈沖發出,輸出層至少能在t+L-1時刻產生響應,保證了輸入特征在周期T內的連續傳遞。
圖2為歸一化差分算子對輸入圖像樣例的處理過程。在排序編碼方式[12]中,初始脈沖的發放時刻為對應像素點灰度值的倒數,即0~255的灰度值范圍對應256種脈沖發放時刻。TTFS編碼通過對灰度值進行T個周期的離散化線性編碼,使其對應的脈沖編碼模式縮減至排序編碼的T/256,使得同組神經元在對應時刻同時產生脈沖,脈沖編碼模式得以大大簡化,有效提高了特征映射的并行化程度。

圖2 歸一化差分算子對輸入圖像樣例的處理過程
卷積層的主要目的是通過權重共享的方式減少網絡前后神經元之間的連接參數,其中C1層有利于解離,對應于輸入的低維特征,C2層則傾向于重建融合后的高維特征[12]。通過對輸入脈沖的多維卷積,突觸后神經元可以提取到對應區域中突觸前神經元陣列的組合特征。對于第j層的某一神經元φ,其在t時刻的膜電位改變量由輸入神經元脈沖和突觸連接參數共同決定,φ的膜電位離散表達式為
(5)
式中:θ為上一卷積層i中對應于φ的卷積窗口Ω中的輸入神經元;ωij為前后神經元之間的突觸連接權重;Si為θ產生的輸入脈沖。所有神經元的輸入脈沖形式均應滿足累積發放條件[16],表達式為
(6)
當神經元的膜電位Vi未超過其閾值Vth時,神經元保持靜息狀態,對應Si=0;當膜電位超過閾值時,神經元轉入興奮狀態,對應Si=1,且在下一時刻膜電位將復位清零。
池化層的主要目的是實現網絡的數據降維和特征壓縮,降低輸入信息的冗余度。傳統人工神經網絡在配合卷積輸入的前提下,可通過最大值池化的方式引入平移不變性[12],使得高維空間內的特征映射在一定程度上不受到低維空間中具體位置的影響,以達到尺度放縮的效果。在SNN中,最大值池化過程可進一步簡化為脈沖池化表達式
(7)
只要池化窗口Ω內任一神經元θ在上一時刻發過脈沖,對應位置的后神經元φ即產生脈沖,對應Sj=1;當且僅當Ω內所有前神經元均未產生過脈沖時,后神經元φ保持靜息狀態,對應Sj=0。
針對同一層內不同通道的相同位置可能會同時產生多次脈沖的情況,在卷積和池化層均引入了側向抑制機制。只要某一位置上的神經元率先產生了脈沖且膜電位最高,則位于相同位置處不同通道中的其他神經元均會被抑制,即同一位置上只允許發放一次脈沖,直到輸入下一圖像為止。這種競爭性傳輸機制既體現了視覺感知的生物機理,又保證了脈沖傳遞的單向性和稀疏性,同時還降低了網絡結構的復雜程度。
輸出層即為全局池化層P2,池化窗口設為整個輸入卷積層C2的尺寸,統計每個通道最早產生脈沖的時刻,并作為輸出神經元集群仲裁的特征向量。對于二分類任務,輸出層神經元按類別標簽分為兩組,分別按產生脈沖的最早時刻進行投票,并統計輸出結果。如果某組內神經元最早產生脈沖,則代表輸入特征與該類最為相符,該神經元輸出結果有效,對應該組票數增加;如果較晚時刻產生或是沒有發出脈沖,則代表特征不符,該神經元輸出結果無效,對應該組票數不變。當某組票數更多時,說明識別成功,輸出結果即為該組標簽;當兩組票數相等時,說明識別失敗。其中,通過在同組中設置多對一(N:1)的分類方式,可以降低輸出的隨機性,提高特征識別的魯棒性和網絡分類的準確率,但同時也會增加額外的訓練參數,故本文中N取為5作為折中。
DTS-SNN模型的訓練主要針對卷積層的突觸連接權重進行修改,每當新的圖像輸入時,所有神經元首先復位至初始狀態,膜電位清零,直到學習層中某一神經元的膜電位累積達到閾值后產生首個脈沖,繼而觸發學習機制,使得對應位置的突觸權重在原值基礎上不斷迭代。依據神經元的突觸可塑性原理[8],網絡學習以經典的STDP算法為基礎,結合強化學習的獎懲機制[16],對卷積層C1和C2逐層進行訓練,直至迭代完畢。由于網絡采用了離散時間調度的脈沖驅動方式,因此STDP算法的連續時間窗口同樣可以被降采樣后的T個等距離散時刻所表示,在散列存儲的結構下,其對應的空間復雜度也將大大降低。這不僅能提高相關脈沖的利用率,還能簡化權重更新的計算過程,同時有利于實現硬件的并行加速。
C1層的學習過程依賴于輸入圖像的低維特征,與C2層相比,其卷積核尺寸小、通道少、脈沖響應閾值低,采用經典的STDP無監督學習算法可避免復雜運算,并達到輸入特征分離的效果。突觸權重變化量Δωij的離散表達式為
(8)
式中:Δt=ti-tj為突觸前神經元脈沖和突觸后神經元脈沖產生時刻的差值;a+和τ+分別為長時程增強(LTP)作用因子和時間常數;a-和τ-分別為長時程抑制(LTD)作用因子和時間常數。當Δt<0時,前神經元與后神經元之間構成因果聯系,突觸權重增量按照LTP過程呈指數增大,且脈沖時間相隔越短說明聯系越緊密,對應突觸權重增加得越多;當Δt≥0時,前后神經元之間存在逆因果聯系,突觸權重增量按照LTD過程呈指數減小,且脈沖時間相隔越短對應突觸權重減少得越多。
C2層需要滿足后續分類識別的要求,因此權重學習不僅依賴于上層輸入的高維特征,還取決于輸出層的類別標簽[16]。本文提出采用與強化學習的獎懲機制相結合的強化STDP算法——RL-STDP,能夠避免引入額外的分類器,通過將特征提取和分類輸出過程融為一體來實現網絡自分類,節省大量運算資源。RL-STDP算法對應的權重變化量的離散表達式為
(9)
式中各學習參數的定義與式(8)相一致,上標r和p分別對應強化學習中的獎勵和懲罰機制。當輸出神經元的分組標簽與輸入樣本的真實標簽一致時,觸發獎勵機制,對應權重按照經典STDP規則修改;當分組標簽與真實標簽不一致時,觸發懲罰機制,對應權重按照經典STDP規則逆向修改,以修正導致預測錯誤的網絡自適應偏差。STDP與RL-STDP算法的離散變化曲線如圖3所示。

(a)STDP(b)RL-STDP圖3 STDP與RL-STDP算法的離散變化曲線
在整個學習過程的時間窗口內始終未產生有效脈沖的神經元,在模型訓練過程中均等同于無關項,與其連接的權重按照對應LTD作用因子(Δt=0)減小,以便清除無效連接。
與脈沖傳輸過程相類似,學習層中的各通道也可能在同一時刻產生多個首脈沖,故同樣需要引入競爭性機制來解決多重觸發的矛盾。圖4是競爭性學習機制示意。競爭性學習機制按照作用域的不同可分為自抑制和互抑制兩種情況,其相同點是只要學習層中的某神經元率先產生了脈沖且膜電位相對最高,就會抑制其他部分神經元的學習進程,直到輸入下一圖像為止。不同點是自抑制表示某神經元會對同一通道內的所有其他神經元產生抑制,即單個通道內僅由單個首脈沖神經元觸發權重更新,使得同一通道內僅學習與其輸入最為相符的單個特征?;ヒ种苿t表示某神經元還會對周圍一定范圍內不同通道中的其他神經元產生抑制,即不同通道中的特定區域內仍然僅由單個首脈沖神經元觸發權重更新,使得不同通道提取各自符合的不同特征。另外,通過設置合適的權重更新次數,可以將單次學習過程中觸發神經元的總數控制在一定規模內,因而對于單幅輸入圖像,網絡至多學習到其中最具代表性的有限個特征,以此保證學習特征的唯一性和特異性。

圖4 競爭性學習機制示意

(10)
LTP作用目標對應ωij的上限1,縮放因子為1-ωij;LTD作用目標對應ωij的下限0,縮放因子為ωij-0。結合式(8),可得累積后的權重∑ω表達式為
∑ω=(1+ΔωLTD)(1-ΔωLTP)ω+ΔωLTP
(11)
式中ΔωLTD和ΔωLTP分別為對應LTD和LTP過程的權重變化量。結合0<ω<1,易證0<∑ω<1??紤]到訓練后期分類正確的樣本數將遠高于分類錯誤的樣本數,從而反饋狀態中獎勵信號頻次會遠多于懲罰信號頻次,導致模型將受限于臨界極值而難以跳出固有循環,以致引發過擬合的問題,附加式(10)所示的非對稱約束條件。當輸出反饋懲罰信號時,LTP與LTD過程隨即切換:對于保持LTP過程的獎勵響應神經元,權重穩定于1附近,LTP迭代增量趨近于0,對應切換LTD后的懲罰響應增量最大;對于保持LTD過程的獎勵響應神經元,權重穩定于0附近,LTD迭代增量趨近于0,對應切換LTP后的懲罰響應增量亦最大。這表明式(10)除施加邊界約束外,也能充當自適應學習率[16]的調節因子,從而避免模型陷入局部最優解,以減緩過擬合。此外,為簡化計算,本文將權重下限設為10-6,上限對應設為1-10-6,即在權重變化單位區間內同時附加剛性約束條件,以便精度控制和參數存取。
本文將Caltech數據庫中的Face/Moto類別作為數據集進行仿真實驗,以驗證DTS-SNN模型的有效性。每種圖像類別共包含隨機選取且不重復的100張圖片,訓練集和測試集的樣本比例各占50%。實驗使用CPU+GPU的多核異構PC作為測試平臺,選用Anaconda3環境和Python3語言搭建仿真框架,并應用Numba庫和CUDA核函數進行硬件加速。實驗所使用的DTS-SNN模型的網絡參數和學習參數分別如表1和表2所示,C1和C2層的訓練輪次分別設為30和50,迭代次數總計為8 000。重復實驗10次,取最終穩定后的測試集準確率結果的平均值作為模型的性能評價指標,同時記錄訓練集準確率以作參考。

表1 DTS-SNN模型的網絡參數
注:窗口大小為寬度×長度×深度。

表2 DTS-SNN模型的學習參數
注:互抑制范圍為寬度×長度。

(a)C2層中兩個通道提取到的不同輸入特征映射

(b)C1層的權重變化曲線

(c)C2層的權重變化曲線

(d)樣本分類準確率的變化曲線圖5 DTS-SNN模型的學習過程
DTS-SNN模型的學習過程如圖5所示,ωC1和ωC2分別為C1和C2層的權重??梢钥闯?隨著網絡模型的不斷迭代,C2層的高維特征經可視化后表現得越發明顯,與輸入圖像類別的匹配度不斷增加;ωC1和ωC2的極值按照LTP和LTD過程分別收斂于1和0;模型的分類準確率由40%開始迅速上升,在迭代第6次時已能達到90%,同時對應于圖6c中的C2層權重恰好近乎收斂,且在迭代20次后分類性能趨于穩定,訓練集和測試集準確率分別保持在98%和94%左右,兩組結果的準確率較高且差別較小,說明了模型在收斂快速且穩定的同時具有良好的泛化能力。
為了全面衡量DTS-SNN模型和學習算法的適配性,本文以現有SNN模型在Face/Moto數據集上的分類性能[13]作為對照,對不同方案在Face/Moto數據集的分類性能進行了比較,結果如表3所示。

表3 不同方案在Face/Moto數據集的分類性能比較
注:分類準確率為平均值±標準差。
由表3可知:DTS-SNN模型的測試準確率為93.4%±0.5%,相較于其他網絡模型的分類準確率雖有一定程度上的降低,但權重訓練參數總量僅為5×5×1×4+15×15×4×10=9 100,規模只相當于SpiCNN[13]、RL-SNN[16]、SDNN[12]的35.7%、39.4%、35.7%;在學習算法方面,RL-STDP的性能表現優于簡化R-STDP[16]算法的,并解除了對SVM分類器[12]的依賴性,減少了輸出分類的計算開銷,具備實現圖像分類的可行性和高效性。與其他方案相比,本文基于離散化時域的調度方式大大簡化了脈沖轉換和權重學習過程:一方面通過TTFS編碼將脈沖模式限定于T=30內,相比于排序編碼[12,16],壓縮率達到了30/256×100%=11.7%;另一方面通過將脈沖序列間隔離散化,相比于經典的連續STDP算法[13],復雜度由O(n2)降為O(1),優化了權重更新的計算過程。同時,本文通過在網絡迭代過程中引入競爭性機制,進一步保證了脈沖傳遞的稀疏性和學習特征的特異性,降低了網絡復雜度和訓練計算量。此外,雙重約束條件的引入也使得模型能夠在有限資源下抑制過擬合的出現,而無需借助于額外的動態學習率和隨機失活[16]等方案。綜上可見,本文提出的DTS-SNN模型能夠在保證良好分類性能的同時有效降低模型復雜度,大幅減少資源占用率,而且結構相對獨立,泛化能力較強,與其他SNN模型相比更適合于高效率、低功耗的小型智能化硬件系統的邊緣計算方案實現。
在實際應用場景中,待測樣本數往往多于訓練樣本數[12]。有鑒于此,本文通過抽樣方式逐漸減少訓練集樣本比例,以考察DTS-SNN模型的在線學習能力。不同訓練樣本數下模型的實際分類性能如圖6所示??梢钥闯?當訓練樣本數降為原先的60%時,測試準確率下降約8%;當訓練樣本數在此基礎上繼續減少20%時,測試準確率又降低了約6%,但仍能穩定于80%左右。隨著訓練樣本比例減少至40%,DTS-SNN模型的分類性能確有所下降,但尚在可接受范圍之內且能保持穩定,表現出較高的魯棒性。

圖6 不同訓練樣本數下模型的實際分類性能
為了解決現有SNN圖像分類模型中存在的資源占用高和運算較復雜等實際約束問題,本文以輕量化、高能效的機器視覺優化解決方案為研究背景,提出了一種新型的基于強化STDP算法的DTS-SNN圖像自分類模型,并在Face/Moto數據集上取得了良好的分類效果。
實驗結果表明,與傳統的SNN分類模型相比,DTS-SNN模型具有以下優勢:①脈沖序列的發放和傳遞均采用離散時間調度方案,配合TTFS編碼策略,使得脈沖模式和權重學習大為簡化;②將強化學習的獎懲機制與經典STDP算法結合,實現了網絡自分類,不需要借助于額外的分類器;③競爭性機制和雙重約束條件的引入保證了脈沖傳遞的稀疏性和學習特征的特異性,有效抑制了過擬合的出現;④網絡資源占用少,模型復雜程度低,且具有收斂速度快、泛化能力強、穩定性良好、魯棒性較高等特點,有利于高效率低功耗的小型智能化硬件終端的邊緣計算方案實現。