鄭重聲明:原文參見標題,如有侵權,請聯系作者,將會撤銷發布!
International Journal of Neural Systems, Vol. 30, No. 6 (2020) 2050027
Abstract
我們為多層SNN提出了一種新的監督學習規則,該規則使用一種稱為rank-order編碼的時序編碼形式。使用這種編碼方案,所有神經元對每個刺激發放一個脈沖,但發放序列攜帶信息。特別是在讀出層中,第一個發放的神經元決定刺激的類別。我們為這種網絡推導了一種新的學習規則,稱為S4NN,類似於傳統的誤差反向傳播(但基於延遲)。我們展示了如何在具有任意層數的前饋網絡中反向計算近似誤差梯度。這種方法通過監督的多全連接層SNN達到了最先進的性能:MNIST數據集的測試精度為97.4%,Caltech Face/Motorbike數據集的測試精度為99.2%。但是,我們使用的神經元模型(non-leaky IF)比以前所有工作中使用的模型都簡單得多。S4NN的源代碼可在https://github.com/SRKH/S4NN中公開獲得。
1 Introduction
生物神經元通過稱為"脈沖"或"動作電位"的短模式電脈沖進行交流。每個神經元都整合突觸前神經元的傳入脈沖,並且每當其膜電位達到某個閾值時,它還會將傳出脈沖發送到下游神經元。在大腦中,除了脈沖發放率外,脈沖時間在神經元處理信息的過程中也起着重要作用[1, 2]。因此,SNN比ANN更具有生物學合理性[3, 4, 5, 6],並且由於SNN使用以大規模並行方式處理的稀疏異步二值信號,因此它們是目前研究大腦如何在神經元描述級別進行計算的最優選擇之一。但是,SNN也吸引了AI技術,尤其是邊緣計算,因為它們在所謂的神經形態芯片上的實現比在ANN上實現的(通常在GPU或類似硬件上實現)耗費的能源要少得多,主要是因為它們可以利用基於事件的高效計算[4, 7, 8, 9, 10, 11, 12]。
最近,許多研究人員為開發用於SNN的直接監督學習算法進行了廣泛的研究[7]。對此的主要挑戰是脈沖神經元在發放時間的閾值激活函數的不可微分性。解決此問題的一種方法是考慮脈沖發放率,而不是確切的脈沖時間[13, 14, 15]。第二種方法是使用隨時間變化的平滑脈沖函數[16]。第三組方法在脈沖時間[8, 17, 18, 19, 20, 21, 22]使用替代梯度。最后一種方法稱為延遲學習,是本文的重點。在這種方法中,神經元的發放時間取決於其膜電位或突觸前神經元的發放時間[23, 24, 25]。這樣,不再需要推導閾值激活函數。
更具體地說,我們的目標是使用SNN對靜態輸入(例如,圖像)進行分類,在該SNN中,每個神經元最多發放一次,但最活躍的神經元最先發放[26, 27, 28, 29, 30, 31, 24, 32, 33, 25, 34, 35, 36]。因此,脈沖延遲或發放序列會攜帶信息。在此,我們在提出的SNN的所有層中都使用了簡單的non-leaky IF神經元[37]。實際上,每個神經元都簡單地整合經過時間加權的輸入脈沖(從瞬時突觸接收),沒有泄漏,並且在第一次超過其閾值后立即發出一個脈沖,如果從未達到此閾值,則僅發出零脈沖。在讀出層中,每個類別有一個神經元。一旦這些神經元之一發放,網絡就會為輸入分配相應的類別,並且只有少數神經元發放時,計算才能停止。因此,這種編碼方案在脈沖數量上非常經濟。
在這項工作中,我們將最初為ANN設計的眾所周知的反向傳播算法[38]應用於這種SNN。反向傳播已被證明可以解決多層神經網絡中極其困難的分類問題,從而導致了所謂的"深度學習"革命[39]。反向傳播的目的是解決多層信度分配問題[40]。也就是說,發現隱含層應該采取什么措施以最小化讀出層的損失,這促使我們和其他工作[23, 24, 25, 34]通過以下方式使反向傳播適應單脈沖SNN。我們使用上述方法的主要優勢是使用了一種更為簡單的神經元模型:具有瞬時突觸的non-leaky IF神經元。但它在MNIST數據集上達到了相當的精度[41]。
2 Methods
所提出的單脈沖監督SNN (S4NN)包括一個輸入層,將輸入數據轉換為脈沖序列並將其饋送到網絡中,然后是一個或多個處理輸入脈沖的non-leaky IF隱含層,最后是non-leaky IF神經元輸出層(每個類別一個神經元)。圖1演示了具有兩個隱含層的S4NN。在此,我們在輸入層中使用一種被稱為time-to-first-spike的時序(即rank-order)編碼,它非常稀疏,每個輸入值最多產生一個脈沖。隨后的神經元也僅限於精確發放一次。
為了訓練網絡,使用了反向傳播算法的時序版本。我們假設一個圖像分類任務,每個類別有多個圖像。首先,通過考慮第一個輸出神經元來做出關於輸入圖像類別的網絡決策。然后,通過將每個輸出神經元的實際發放時間與目標發放時間進行比較,計算出每個神經元的誤差(請參見2.5小節)。最后,這些誤差會通過各層反向傳播,權重會通過隨機梯度下降得到更新。同時,時序反向傳播面臨兩個挑戰:定義目標發放時間和計算神經元發放時間相對於其膜電位的導數。為了克服這些挑戰,所提出的學習算法使用相對目標發放時間和近似導數。
2.1 Time-to-first-spike coding
SNN的第一步是將模擬輸入信號轉換為代表相同信息的脈沖序列。后續神經元中的神經處理應與此編碼方案兼容,以便能夠解密輸入脈沖中編碼的信息。在此,我們對進入層(其中較大的輸入值對應於較早的脈沖)使用time-to-first-spike編碼,並在后續層中的IF神經元發放一次。
考慮像素范圍在[0, Imax]內的灰度圖像,每個輸入神經元在范圍[0, tmax]的單個脈沖時間內對相應的像素值進行編碼。第 i 個輸入神經元的發放時間ti是根據第 i 個像素強度值Ii計算的,如下所示:
因此,將輸入層(層0)中第 i 個神經元的脈沖序列定義為:
值得注意的是,這種簡單的強度到延遲代碼不需要任何預處理步驟,例如應用SNN中常用的Gabor或DoG濾波器,特別是在那些具有STDP學習規則且無法處理均質表面的應用中[30, 31, 42]。而且,它對每個像素僅產生一個脈沖,因此所獲得的脈沖序列比發放率編碼中常見的稀疏。
后續層的神經元一旦達到閾值,就會發放,輸出層中的第一個發放的神經元將決定網絡決策。因此,網絡決策取決於整個網絡的最早脈沖。換句話說,所有層中的神經信息都以最早的神經元的脈沖時間編碼。因此,可以說,time-to-first-spike信息編碼也在后續層中起作用。
2.2 Forward path
S4NN由多層non-leaky IF神經元組成,層數沒有限制,因此,S4NN可以實現任意數量的隱含層。在時間點 t 的第 l 層中的第 j 個神經元的膜電位計算為:
其中和
分別是從上一層的第 i 個突觸前神經元到神經元 j 的輸入脈沖序列和輸入突觸權重。IF神經元在其膜電位第一次達到閾值
時發出脈沖,
其中,檢查神經元在任何先前的時間步驟是否沒有發放。
如上一節所述,輸入圖像被轉換為脈沖序列S0(t),其中每個輸入神經元將發出一個延遲范圍為[0, tmax],與相應的像素值成反比。這些脈沖朝着網絡的第一層傳播,每個神經元接收傳入的脈沖並更新其膜電位,直到達到其閾值並將脈沖發送到下一層的神經元。對於每個輸入圖像,仿真都從將所有膜電壓重置為零開始,並持續tmax個時間步驟。請注意,在仿真中,任何層的每個神經元最多只能發放一次。在訓練階段,我們需要知道所有神經元的發放時間(參見等式15和等式9),因此,如果神經元是沉默的,我們假設它在最后一個時間步驟tmax處發放一個假脈沖。在測試階段,神經元可以保持沉默或最多發放一次。最后,關於在我們的網絡中部署的time-to-first-spike編碼,比其他更早響應的輸出神經元確定了輸入刺激的類別。
2.3 IF approximating ReLU
在具有ReLU[43]激活函數的傳統ANN中,層 l 中索引為 j 的神經元的輸出被計算為:
其中和
分別是第 i 個輸入和連接權重。因此,具有較大
的ReLU神經元具有較大的輸出值
。通常,該積分值的主要部分是由於輸入量大且連接權重大。在我們的time-to-first-spike編碼中,較大的值對應於較早的脈沖,因此,如果IF神經元通過強突觸權重接收到這些較早的脈沖,則它也會較早發放。注意,由於網絡決策基於輸出層中的首次脈沖,因此較早的脈沖會攜帶更多信息。這樣,time-to-first-spike編碼就保留在隱含層和輸出層中。因此,對於相同的輸入和突觸權重,我們可以假設ReLU神經元的輸出
與相應IF神經元的發放時間
之間存在等價關系,
2.4 Backward path
我們假設在具有C個類別的分類任務中,每個輸出神經元都分配一個不同的類別。在完成輸入模式上的前向路徑后,每個輸出神經元可能會在不同的時間點出現。如前所述,將輸入圖像的類別預測為分配給獲勝者輸出神經元(具有比其他更早發放的輸出神經元)的類別。
因此,為了能夠訓練網絡,我們將時序誤差函數定義為:
其中和
分別是第 j 個輸出神經元的目標發放時間和實際發放時間。目標發放時間應以正確的神經元比其他神經元更早發放的方式定義。我們使用相對目標發放計算,這在2.5節中有詳細說明。在此,我們假設
是已知的。
在學習階段,我們使用隨機梯度下降[38](SGD)和反向傳播算法來最小化"平方誤差"損失函數。對於每個訓練樣本,損失被定義為:
因此,我們需要針對每個突觸權重計算其梯度。為了更新,即層l - 1的第 i 個神經元和層 l 的第 j 個神經元之間的突觸權重,我們有:
其中η是學習率參數。
讓我們定義:
因此,通過考慮等式(8)和等式(12),我們有:
其中對於輸出層(即l = o),我們有:
對於隱含層(即l ≠ o),根據反向傳播算法,我們有:
為了避免反向傳播期間梯度爆炸和消失問題,我們使用歸一化梯度。從字面上看,在任何層 l 處,我們在更新權重之前將反向傳播的梯度歸一化,
為了避免過擬合,我們在等式(10)的"平方誤差"損失函數中添加了一個L2-范數正則項(在所有層的所有突觸權重上)。參數λ是考慮權重懲罰程度的正則化參數。
2.5 Relative target firing time
由於所提出的網絡在時域內工作,因此對於每個輸入圖像,我們需要定義關於其類別標簽的輸出神經元的目標發放時間。
一種可能的情況是為每個類別定義一個固定的目標發放時間矢量,以使正確的神經元比其他神經元具有更短的目標發放時間。例如,如果輸入圖像屬於第 i 類,則對於j ≠ i,可以定義和
,其中0 < τ < tmax是獲勝者神經元的期望發放時間。通過這種方式,可以鼓勵正確的輸出神經元在時間τ提前發放,而其他神經元則被迫阻塞發放直到仿真結束。
這種嚴格的方法有幾個缺點。例如,讓我們假設一個輸入圖像屬於的第 i 個類別,這樣,正確的神經元就會產生負誤差(請參見等式9)。后向路徑將更新權重,以使該神經元稍后發放,這意味着網絡應該忘記是什么幫助正確的神經元快速發放。這是不可取的,因為我們希望網絡盡快做出響應。
另一種情況是使用動態方法來獨立確定每個輸入圖像的目標發放時間。在此,我們提出了一種將實際發放時間考慮在內的相對方法。假設第 i 類的輸入圖像被饋送到網絡,並且獲得了輸出神經元的發放時間。首先,我們將最小輸出發放時間計算為,然后將第 j 個輸出神經元的目標發放時間設置為:
其中,γ是一個正常數項,懲罰發放時間接近τ的輸出神經元。其他在τ之后很久才發放的神經元也不會受到懲罰,因此,在最小發放時間τ,鼓勵正確的輸出神經元比其他神經元更早發放。
在特殊情況下,所有輸出神經元在仿真過程中均保持沉默,並且其發放時間已手動設置為tmax,我們將目標發放時間計算為:
以鼓勵正確的輸出神經元在仿真中發放。
2.6 Learning procedure
如前所述,所提出的網絡使用SGD的時序版本和反向傳播來訓練網絡。在訓練epoch,圖像通過time-to-first-spike編碼轉換為輸入脈沖序列(參見第2.1節),然后逐一饋入網絡。通過前向路徑,任何層的每個IF神經元都會接收傳入的脈沖,並在達到閾值時發出脈沖(參見第2.2節)。然后,在計算相對目標輸出發放時間(鼓勵正確的輸出神經元較早發放,參見第2.5節)之后,我們使用時序誤差反向傳播(參見第2.4節)來更新所有層中的突觸權重。請注意,如果神經元在仿真中無法達到閾值,則我們將迫使神經元在最后一個時間步驟發放假脈沖(這對於學習規則是必要的)。在當前輸入圖像上完成前向和后向處理之后,所有IF神經元的膜電位都將重置為零,並且網絡准備好處理下一個輸入圖像。值得注意的是,在每個輸入圖像的處理過程中,每個神經元只允許發放一次。
如前所述,除了假脈沖外,IF神經元當且僅當達到閾值時發放。讓我們考慮一個IF神經元,其權重降低(在權重更新過程中),使得它無法達到任何訓練圖像的閾值。現在,它是一個死亡的神經元,只會發出假脈沖。因此,如果神經元死亡,並且在訓練epoch中沒有發放真脈沖,我們可以通過將其突觸權重重置為從與初始權重相同范圍內的均勻分布得出的一組新的隨機值來重用它。盡管這種情況很少發生,但它可以幫助網絡利用其所有學習能力。
3 Results
我們首先使用Caltech 101face/motorbike數據集來更好地演示S4NN中的學習過程及其在大型自然圖像上的工作能力。之后,我們在MNIST數據集上評估S4NN,該數據集是SNN領域中廣泛使用的基准之一[7],以證明其處理大型多類別問題的能力。表1中提供了用於Caltech face/motorbike和MNIST數據集的S4NN模型的參數設置。
3.1 Caltech face/motorbike dataset
我們在http://www.vision.caltech.edu上可用的Caltech 101 face/motorbike數據集上評估S4NN。圖2中提供了一些示例圖像。我們在每個類別的200張隨機選擇的圖像上訓練網絡。此外,我們從每個類別中選擇了50張隨機圖像作為驗證集。其余圖像用於測試階段。我們對所有圖像進行了灰度處理,並將它們重新縮放為160x250像素。
在第一個實驗中,我們使用具有四個IF神經元(隱含層)的全連接結構。輸入層具有與輸入圖像相同的大小(即160x250),並且每個輸入神經元的發放時間通過2.1節中解釋的首次脈沖時間編碼來計算。輸出層由與圖像類別相對應的兩個輸出IF神經元(人臉和摩托車神經元)組成。我們將最大仿真時間設置為tmax = 256,並使用從[0, 1]和[0, 50]范圍內的均勻分布抽取的隨機值初始化輸入-隱含和隱含-輸出突觸權重。我們還將學習率設置為η = 0.1,目標發放時間計算中的懲罰項設置為γ = 3,正則化參數設置為λ = 10-6。所有層中所有神經元的閾值設置為100。
圖3顯示了通過訓練epoch的訓練和驗證樣本的平均平方和誤差(MSSE)的軌跡。MSSE曲線早期的突然跳躍主要是由於第一個訓練epoch的巨大權重變化,這可能會使任何輸出神經元保持沉默一段時間(僅發出假脈沖),但是,這在下一個epoch正在解決。最后,經過一段epoch后,網絡克服這一挑戰,並將MSSE降低到0.1以下。
所提出的S4NN在訓練樣本上可以達到99.75%±0.1%識別精度(即正確分類的樣本的百分比),在測試樣本上可以達到99.2%±0.2%識別精度,優於該數據集上先前報告的SNN結果(請參見表2)。在Masquelier et al. (2007)[28]中,在此數據集上,由無監督的STDP訓練的兩層卷積SNN,然后由有監督的基於勢能的徑向基函數(RBF)分類,達到了99.2%的精度。該網絡在第一層使用四個Gabor濾波器和四個標度,並為第二層提取十個不同的濾波器。而且,它不會根據脈沖時間做出決定,而是利用神經元的膜電位進行分類。在Kheradpisheh et al. (2018)[30]中,基於STDP的具有三個卷積層(分別由4, 20和10個濾波器組成)和SVM分類器的SNN可以在該數據集上達到99.1%的精度。該模型還利用最后一層中神經元的膜電位來進行分類。為了進行基於脈沖的分類,Mozafari et al. (2018)[31]的作者提出了一個兩層卷積網絡,第一層有四個Gabor濾波器,第二層由獎勵調節STDP學習了20個濾波器。20個濾波器中的每一個都被分配到一個特定的類別,並由第一個發放的神經元決策。在Caltech face/motorbike數據集上,其精度達到98.2%。該網絡的重要特征是通過RL實現了基於脈沖時間的決策。所提出的S4NN還可根據脈沖時間做出決策,僅使用四個隱含神經元和兩個輸出神經元,就可以達到99.2%的精度。
如第2.2節所述,每個輸出神經元都被分配到一個類別,並且基於第一個發放的輸出神經元做出網絡決策。在學習階段,關於相對目標發放時間(請參見第2.5節),網絡會調整其權重以使正確的輸出神經元首先發放(請參見第2.4節)。圖4提供了學習階段開始和結束時人臉和摩托車輸出神經元的發放時間(在訓練和驗證圖像上)。如圖4A所示,在學習開始時,兩個輸出神經元的發放時間分布(與圖像類別無關)是交錯的,這導致機會水平附近的分類精度較差。但是,隨着學習階段的進行和網絡學習解決任務,正確的輸出神經元往往會更早發放。
如圖4B所示,在學習階段結束時,對於每個圖像類別,其對應的輸出神經元在較早的時間步驟處發放,而其他神經元則在很長時間后發放。請注意,在訓練階段,如果神經元在仿真過程中沒有發放,我們會在最后一個時間步驟強迫它們發出假脈沖。因此,在測試階段,我們不需要在輸出層中的第一個脈沖發放之后繼續仿真。圖5示出了獲勝者神經元的發放時間的分布。獲勝者神經元的平均發放時間為27.4(用紅線顯示),其中78%的圖像中,獲勝者神經元在前40個時間步驟中發放。這意味着網絡可以非常快速地(相對於最大可能的仿真時間,tmax = 256)做出決定,並且可以准確地做出決定(錯誤率僅為0.8%)。
由於所使用的網絡只有一層全連接神經元的隱含層,因此我們可以簡單地通過繪制每個神經元的突觸權重來重建其學習模式。圖6描繪了學習階段結束時四個隱含神經元的突觸權重。如圖所示,神經元#2至#4對各種形狀的摩托車具有選擇性,從而覆蓋了各種形狀的摩托車。神經元#1已了解到出現在不同位置的面部組合,因此僅對面部圖像做出反應。由於輸出神經元之間相互競爭以首先發放,隱含和輸出神經元應學習並依賴從輸入層(並非全部)接收的早期脈沖。這就是為什么無法從視覺上很好地檢測隱含層中學到的特征的原因。圖7中繪制了四個隱含神經元中每個神經元的突觸權重分布。如圖所示,權重的初始均勻分布轉換為零均值的正態分布。在此,正權重會鼓勵神經元發放其學到的模式,而負權重會阻止神經元為其他模式發放。負權重有助於網絡減少不必要的脈沖的機會。例如,從摩托車選擇性隱含神經元到面部輸出神經元的負突觸權重顯著減少了面部神經元發生意外脈沖的機會。
此外,我們評估了經過訓練的S4NN對抖動噪聲的魯棒性。為此,在測試階段,我們將從[-J, J]范圍內的均勻分布繪制的隨機整數添加到輸入圖像的像素中。我們將抖動參數 J 從0更改為240,步長為20。圖8顯示了在面部/摩托車數據集上訓練的S4NN在受不同抖動水平污染的測試樣本上的識別精度。有趣的是,即使對於J = 240,S4NN精度也最多下降5%。它表明,S4NN甚至在強烈的噪聲水平下也很魯棒。實際上,隱含層中的神經元僅對那些參與面部/摩托車分類任務的輸入神經元具有強(正或負)突觸權重(見圖6),而其余大多數輸入的突觸權重卻很小(見圖7),並且在神經處理中貢獻不大。因此,由於抖動噪聲只是改變了脈沖順序,因此它不會影響IF神經元的行為。請注意,IF神經元是完美的積分器(沒有泄漏),並且與泄漏神經元相比,對輸入順序的敏感性較低。
為了評估所提出的時序反向傳播算法在更深層次的架構中使用的能力,我們在具有三層網絡的Caltech face/motorbike數據集上進行了另一項實驗。深度網絡由兩個隱含層組成,每個隱含層均包含四個IF神經元,然后是具有兩個IF神經元的輸出層。我們使用從[0, 1], [0, 50], [0, 50]范圍內的均勻分布抽取的隨機值初始化input-hidden1, hidden1-hidden2和hidden2-output權重。其他參數與上述具有一個隱含層的網絡相同。經過25個訓練epoch后,該網絡在測試圖像時達到了99.1%±0.2%的精度,獲勝者神經元的平均發放時間為32.1。盡管網絡精度平均比較深的網絡高0.1%,但該差異在統計上並不顯著(每個網絡十次不同運行的精度的配對t檢驗; p值 < 0.05)。
3.2 MNIST Dataset
MNIST[41]是已在SNN文獻[7]中廣泛使用的基准數據集。我們還在MNIST數據集上評估了所提出的S4NN,該數據集包含60000個訓練和10000個測試手寫個位數圖像。每個圖像的大小為28x28像素,並包含數字0-9之一。為此,我們使用了一個S4NN,其中一個隱含層/一個輸出層分別包含400和10個IF神經元。輸入層的大小與輸入圖像的大小相同,其中每個輸入神經元的發放時間由第2.1節中說明的time-to-first-spike編碼決定,最大仿真時間為tmax = 256。隱含輸出層的突觸權重是從范圍為[0, 5]和[0, 50]的均勻分布隨機抽取的。將所有層中所有神經元的閾值設置為。我們將學習率設置為η = 0.2,將目標發放時間計算中的懲罰項設置為γ = 3,將正則化參數設置為λ =10-6。
表3提供了MNIST數據集上所提出的S4NN (97.4±0.2%)和其他最近的SNN的分類精度,這些SNN具有基於脈沖時間的監督學習規則。在Mostafa (2017)[24]中,使用具有指數突觸函數的800個IF神經元會使網絡的神經處理和學習過程變得復雜。在Tavanaei et al. (2018)[44],由於使用發放率編碼和1000個隱含神經元,網絡計算成本非常高。在Comsa et al. (2019)[25]中,復雜的SRM神經元模型和α突觸電流的使用使其難以基於事件進行實現。Comsa et al. (2019)提出的模型在慢速和快速機制下工作。在快速狀態下,網絡以97.4%的精度做出快速決策;在慢速狀態下,網絡達到97.9%的精度,但響應時間更長。S4NN的優點是使用簡單的神經元模型(具有瞬時突觸電流的IF),每個神經元最多具有一個脈沖的時序編碼以及簡單的監督時序學習規則。此外,我們在隱含層中僅使用了400個神經元,這使其比其他網絡更輕量。
我們還實現了具有400個隱含單元的三層ANN(輸入-隱含-輸出)。我們對隱含層和輸出層都使用ReLU激活函數,並采用均方誤差(MSE)作為損失函數。我們使用Adam優化器對網絡進行訓練,並在MNIST上達到了98.1%的精度。盡管ANN的性能優於表3中的所有SNN模型,但SNN的優勢在於其能源效率和硬件友好性。
圖9在不同數字類別的圖像上顯示了每個輸出神經元的平均發放時間。如圖所示,對於每個數字類別,正確輸出神經元的平均發放時間與其他神經元的發放時間之間都存在巨大差距。發放時間為44.1和118.5的數字"1"和"4"分別具有最小和最大平均發放時間。假設地,與其他數字相比,識別數字"1"所依賴的脈沖要少得多,並且響應速度會快得多。數字"4"(或平均發放時間為101.5的數字"8")需要更多的輸入脈沖信號才能從其他(相似的數字)正確識別。有趣的是,平均而言,網絡需要172.69個脈沖才能識別數字"1",而需要233.22個脈沖才能識別數字"4"。表4列出了正確輸出神經元的平均發放時間以及所需的平均發放次數。請注意,所需的脈沖是通過計算所有三個層(輸入,隱含和輸出)中的脈沖數量直到在輸出層發放第一個脈沖而獲得的。
平均而言,所提出的S4NN在89.7個時間步驟(最大仿真時間的35.17%)中以97.4%的精度做出決策,只有218.3個脈沖(784+400+10個可能脈沖的18.22%)。請注意,在網絡做出決定之前,隱含的神經元平均會發出132.2±6.7個脈沖。因此,所提出的網絡以快速,准確和稀疏的方式工作。
在進一步的實驗中,我們評估了S4NN中的速度-精度權衡。為此,我們首先在MNIST上訓練S4NN (所有神經元的閾值為100),並對其權重進行卷曲,然后將其所有隱含和輸出神經元的閾值從10更改為150,並在測試集中對其進行評估。圖10顯示了獲勝者輸出神經元的精度和平均發放時間(即響應時間)超過不同的閾值。如圖所示,通過增加閾值,精度提高,在閾值70之后達到94%以上,並在閾值100達到峰值。此外,可以看出,平均響應時間在閾值70之后迅速增長。平均響應時間對於閾值70,大約是15個時間步驟;對於閾值100,大約是89個時間步驟。因此,通過降低預訓練網絡的閾值,可以從S4NN獲得更快但不太准確的響應。
4 Discussion
如今,SNN越來越流行[45, 46, 47, 48, 49, 50],它是研究大腦計算的最優工具之一[51, 52, 53, 54, 55, 56, 57, 58, 59]。在本文中,我們提出了一個SNN(稱為S4NN),它由多層非泄漏IF神經元組成,具有首次脈沖時間編碼和時序誤差反向傳播。關於視覺皮層中對象的快速處理(通常在100到150 ms范圍內)以及從視網膜中感光器到顳下葉(IT)皮層中對象響應神經元至少有10個突觸的事實,每個神經元只有大約10-15 ms來執行其計算,這對於發放率編碼而言還不夠[60]。此外,還表明,在圖像呈現后大約100 ms內,IT皮質的第一波脈沖攜帶足夠的信息以進行目標識別[61],表明了早期脈沖的重要性。此外,還有許多其他的神經生理學[62, 63]和計算[26, 27]證據支持首次脈沖編碼的重要性。
根據我們采用的時序編碼,輸入神經元會發出一個脈沖,其延遲與相應的像素值成負比例,並且上游神經元最多只能發放出現一次。所提出的時序誤差反向傳播將正確的輸出神經元推向更早發放(比起其他神經元)。它迫使網絡以很少的脈沖(高稀疏度)做出快速准確的決策。我們在Caltech face/motorbike(精度99.2%)和MNIST(精度97.4%)數據集上的實驗表明,與其他最近監督的SNN相比,S4NN具有更簡單的神經元模型(即,非泄漏IF)准確解決目標識別任務的優點(與其他具有時序學習規則的最近監督SNN對比)。
讓我們假設S4NN模型具有 l 層,其中n是網絡最大層中神經元的數量。在基於時鍾的實現中,對於任何層,可以在O(n2)中更新任何時間步驟的所有神經元的膜電位。因此,可以在O(l * n2 * t)中執行S4NN的前饋路徑,其中 t 是輸出層中第一個脈沖的時間步驟。請注意,所提出的時序反向傳播會迫使網絡盡可能早地准確響應。因此,所需的時間步驟 t 將比最大仿真時間小得多。注意,當時間步驟較短時,S4NN的實際計算時間可能會較短。
硬件實現不在本文討論范圍之內。但是,S4NN具有一些重要的功能,可能會使它對(數字)硬件更加友好。首先,計算僅限於每個神經元一個脈沖,並且在實踐中,要在大多數神經元發放之前做出決定。相反,基於脈沖發放率的SNN需要更長的時間才能具有足夠的輸出脈沖來做出決定。因此,我們的方法在延遲方面和能量方面均具有優勢,因為在大多數神經形態芯片上,能量消耗主要是由脈沖引起的[10]。其次,我們的方法是有效的記憶,因為一旦神經元發放,我們就可以忘記它的狀態,然后將相應的記憶重新用於其他神經元。注意,每個神經元最多有一個脈沖的其他方法也共享這三個優點[24, 25, 34, 64]。但是我們的神經元模型要簡單得多:沒有泄漏,並且突觸是瞬時的,如下所述,這使其對硬件更友好。在此,我們首次顯示了反向傳播可以適應這種簡單的神經元模型,即使這需要一些近似(公式6)。
如果可以利用晶體管或電容器的物理特性在模擬硬件中有效地實現泄漏[9],則數字硬件中的泄漏總是很昂貴的。兩種方法已經被提出。所有神經元的電壓都周期性地降低,例如每毫秒降低一次(參見例如[65])。顯然,這種方法非常耗能。泄漏也可以基於事件的方式來處理:當接收到輸入脈沖時,要考慮到泄漏,該泄漏基於自上一次輸入脈沖以來的經過時間(例如,參見[66, 67])。但這需要存儲每個神經元的最后輸入脈沖時間,這會增加內存占用量。最后,瞬時突觸是迄今為止處理起來最簡單的突觸:每個輸入脈沖都會導致准時電位增加。基於電流或基於電導的突觸需要狀態參數,並且每個輸入脈沖都會使電壓在幾個連續的時間步驟上更新。
由於脈沖神經元在其發放時間的閾值激活函數具有不可微分性,因此將梯度下降和反向傳播算法應用於SNN一直是一個很大的挑戰。不同的研究提出了不同的技術,包括基於發放率的可微激活函數[13, 14, 15],平滑的脈沖生成器[16]和替代梯度[8, 17, 18, 19, 20, 21]。所有這些方法都不能處理脈沖時間。在稱為延遲學習的最后一種方法中,神經元活動是基於其發放時間(通常是首次脈沖)來定義的,與之前的三種方法相反,不需要推導閾值激活函數。但是,他們需要根據神經元膜電位或突觸前神經元的發放時間來定義神經元的發放時間,並在反向傳播過程中使用其推導。例如,在Spikeprop[23]中,作者使用線性近似函數,該函數依賴於發放時間附近膜電位的變化(因此,他們不能使用IF神經元模型)。另外,在Mostafa (2017)[24]中,作者通過使用指數衰減的突觸,直接根據突觸前神經元的發放時間來定義神經元的發放時間。在此,通過假設發放時間和膜電位之間的單調遞增線性關系,我們可以在所提出的S4NN模型中使用具有瞬時突觸的IF神經元。
具有延遲學習的SNN使用單脈沖時間編碼,因此,如果神經元未達到其閾值,則會出現問題,因為這樣就無法確定延遲。有多種不同方法可以解決此問題。在Mostafa (2017)[24]中,作者使用非泄漏神經元並確保權重之和大於閾值,或者在Comsa (2019)[25]中,作者使用假輸入"同步脈沖"來推動神經元超過閾值。在所提出的S4NN中,我們假設如果神經元在仿真過程中沒有發放,它將在仿真后的某個時候發放,因此,我們迫使它在最后一個時間步驟發出假脈沖。
在此,我們只是在圖像分類任務上測試S4NN,以后的研究可以在其他數據模態上測試S4NN。如Caltech face/motorbike數據集所示,所提出的學習規則具有可擴展性,可用於更深的S4NN架構。而且,它可以用於卷積脈沖神經網絡(CSNN)。當前的CSNN主要從傳統CNN轉換,其發放率為[68, 69, 70, 71]和時序編碼[72]。盡管這些網絡的精度很好,但就計算成本或時間而言,它們可能無法有效地發揮作用。利用基於脈沖的反向傳播開發CSNN的最新成果已經在不同的數據集上產生了令人印象深刻的結果[73, 74],但是,他們使用了昂貴的神經元模型和發放率編碼方案。因此,將所提出的S4NN擴展到卷積架構可以提供較大的計算優勢。這種方式最重要的挑戰是防止卷積層中權重共享約束下的梯度消失/爆炸和學習。但是,與基於發放率的CSNN不同,可以通過傳播每個池化神經元感受野內出現的首次脈沖來簡單地完成最大池化操作。
此外,盡管SNN比傳統的ANN在硬件上更友好,但受監督的SNN中的反向傳播過程並不容易在硬件中實現。最近,使用可在S4NN中使用的脈沖[75]來估計反向傳播,使其更適合於硬件實現。