王浩杰 劉闖



摘 要:脈沖神經網絡(spiking neural network,SNN)由于在神經形態芯片上低功耗和高速計算的獨特性質而受到廣泛的關注。深度神經網絡(deep neural network,DNN)到SNN的轉換方法是有效的脈沖神經網絡訓練方法之一,然而從DNN到SNN的轉換過程中存在近似誤差,轉換后的SNN在短時間步長下遭受嚴重的性能退化。通過對轉換過程中的誤差進行詳細分析,將其分解為量化和裁剪誤差以及不均勻誤差,提出了一種改進SNN閾值平衡的自適應閾值算法。通過使用最小化均方誤差(MMSE)更好地平衡量化誤差和裁剪誤差;此外,基于IF神經元模型引入了雙閾值記憶機制,有效解決了不均勻誤差。實驗結果表明,改進算法在CIFAR-10、CIFAR-100數據集以及MIT-BIH心律失常數據庫上取得了很好的性能,對于CIFAR10數據集,僅用16個時間步長就實現了93.22%的高精度,驗證了算法的有效性。
關鍵詞:脈沖神經網絡;高精度轉換;雙閾值記憶神經元;自適應閾值
中圖分類號:TP391?? 文獻標志碼:A?? 文章編號:1001-3695(2024)01-026-0177-06
doi:10.19734/j.issn.1001-3695.2023.05.0210
Improved adaptive threshold algorithm for double threshold spiking neural network
Abstract:SNN has gained widespread attention due to its low power consumption and high-speed computing capabilities on neuromorphic chips.The conversion from DNN to SNN is an effective training method for SNN.However,there are approximation errors in the conversion process,leading to significant performance degradation of the converted SNN under short time steps.Through a detailed analysis of the errors in the conversion process,this paper decomposed them into quantization and pruning errors and asymmetric errors,and proposed an improved adaptive threshold algorithm to balance the threshold of SNN.It used the mean square error(MMSE) to achieve a better balance between quantization and pruning errors.Additionally,this algorithm introduced a dual-threshold memory mechanism based on the IF neuron model to effectively address the asymmetric errors.Experimental results demonstrate that the improved algorithm achieves excellent performance on the CIFAR-10,CIFAR-100 datasets,and the MIT-BIH arrhythmia dataset.For the CIFAR-10 dataset,it achieves a high accuracy of 93.22% with only 16 time steps,validating the effectiveness of the algorithm.
Key words:spiking neural network;high precision conversion;dual-threshold memory neuron;adaptive threshold
0 引言
深度神經網絡在圖像分類、語音識別、自然語言處理等廣泛的應用中取得了巨大成功[1,2]。作為人工智能的代表,深度學習在許多領域的表現已經超越了人類。然而,DNN的訓練程序需要巨大的能量消耗和大量的內存,這對應用于輕量級設備和有限的存儲場景來說是一個挑戰。人工智能與物聯網需求量的持續攀升,進而催生高效神經網絡和加速器的開發與應用,尤其是在推理方面,一些研究側重于減少網絡連接和使用低精度參數,但計算消耗仍然很大。與傳統DNN不同,脈沖神經網絡[3]以一種模擬大腦的方式利用離散脈沖進行信息表示和傳輸,所以計算的能力更強大,而且在生物學上也是合理的。另外,SNN中的信息是基于事件的,即不發射脈沖神經元不參與計算,神經元的信息整合是累加(accumulate,AC)操作,這比DNN中的乘法累加(multiply accumulate,MAC)操作更節能。SNN促進了神經形態計算平臺的發展,這些平臺已經成功展示了比傳統計算平臺節能數個數量級的出色性能[4,5]。
雖然SNN具有上述優點,但由于脈沖的不可微性,廣泛應用于神經網絡的反向傳播算法不能直接用于訓練脈沖神經網絡。到目前為止,訓練高效的脈沖神經網絡仍然是一個開放性的問題。直接訓練和間接訓練兩種主流方法被開發出來克服訓練深度SNN的挑戰。直接訓練SNN需要解決不可微二元激活函數的問題,流行的方法是對脈沖神經元使用代理梯度函數。一些方法[6,7]設計可微的代理激活函數(和相應的代理梯度)來優化SNN。直接訓練的方法在小型和中型數據集上的訓練性能與傳統人工神經網絡相當,甚至優于傳統人工神經網絡[8],然而訓練過程需要大量的時間和內存,并且對于像VGG這樣的大型網絡來說,在收斂方面存在困難。為了縮小SNN與DNN之間的差距,出現了一種間接轉換方案,通過將預先訓練的DNN的參數映射到相同架構的SNN,即DNN-SNN轉換方法。這種轉換方法利用DNN中的先進技術來實現與SNN相當的精度,避免了梯度估計問題,因為它適應了最先進的DNN學習算法,所以在復雜任務中實現了高可擴展性。Cao等人[9]首先開始了DNN-SNN的研究,將具有一定約束的訓練的淺卷積網絡成功地部署到SNN中,從而在傳統的目標識別基準上產生良好的準確性。并且發現脈沖神經元的放電率可以近似于DNN中具有足夠時間步長的對應神經元的激活,這一發現已經成為轉換方案的基本原則。在隨后的工作中,Diehl等人[10]提出了基于數據的歸一化,通過閾值平衡來提高深度SNN的性能。這里的歸一化是對網絡的權重歸一化,歸一化尺度是DNN中每一層的最大激活值。Rueckauer等人[11]通過結合DNN的更多技術對轉換方法進一步改進,把減法復位機制[12]方法應用到轉換SNN,這種方法也稱為軟重置[13]。Sengupta等人[14]將轉換方法擴展到VGG和ResNet架構,并提出Spike-Norm算法,它根據轉換后的 SNN 中每層的最大輸入來調整閾值。Han等人[13] 提出剩余膜電位(RMP)脈沖神經元,通過縮放脈沖標準閾值改進了閾值平衡。Kim等人[15]提出了基于信道數據歸一化的Spiking-YOLO,這是第一個基于脈沖的目標檢測模型,并在目標檢測任務上實現了與DNN相當的結果。最近,Ding等人[16]提出了分階段加權和閾值訓練的方法,以優化激活與激活之間誤差的上界函數。Li等人[17]進一步提出使用量化微調校準權重和偏差。Bu等人[18]為人工神經網絡設計QCFS移位激活函數,更好地近似SNN的激活函數。然而,它們都是復雜的過程,容易受到高推理延遲的影響;此外,使用批量歸一化(batch normalization,BN)層轉換低延遲SNN仍然是一個持續的挑戰。盡管DNN-SNN轉換已經取得了一定的進展,但SNN 與DNN之間的性能差距仍然存在,尤其是在遇到更復雜的任務時。并且有限的時間步長(<256)將導致精度顯著下降,現有的DNN轉換SNN方法需要數千個推理時間步長才能在準確性方面達到DNN的水平,導致SNN的功耗和延遲在應用中高于DNN。雖然較長的推理時間可以進一步減少轉換誤差,但這也阻礙了SNN在神經形態芯片上的實際應用。本文分析了DNN和SNN的神經元模型和工作機制的差異導致的轉換中的近似誤差,即SNN離散化引起的量化和裁剪誤差以及由于脈沖到達激活層的時間序列不同而引起的不均勻誤差[18]。通過最小化均方誤差,本文提出了一種改進量化誤差和裁剪誤差之間平衡的自適應閾值算法,在該算法中,閾值是動態調整的。此外,引入了雙閾值記憶神經元來解決不均勻誤差。CIFAR-10和CIFAR-100數據集上的實驗結果表明,與其他方法相比,本文提出的自適應閾值機制的SNN在分類準確率、準確率損失和網絡延遲方面都有很大的提高。
1 轉換誤差分析
1.1 神經元模型
1.1.1 DNN神經元模型
DNN中的模擬神經元的計算可以簡化為線性變換和非線性映射的組合,在數學上前饋網絡中第l層中神經元i的激活值ali(ReLU之后)可以計算為
其中:l∈{1,…,L}表示具有L層神經網絡的第l層;Wlij是l層中的神經元i和l-1層中神經元j之間的權重;bli表示第l層神經元i的偏置,為了方便起見,在下面的描述中省略了偏置。
1.1.2 SNN的神經元模型
與以前的工作類似,本文考慮積分發放(integrate-and-fire,IF)神經元模型,IF神經元由于輸入和輸出之間的功能關系類似于ReLU而被廣泛應用于DNN-SNN轉換算法中。在每個時間步長t,脈沖神經元j接收傳入脈沖并通過整合輸入膜電位來更新其狀態,在時間步長t處l層IF神經元j的膜電位vlj(t)為
mlj(t)=vlj(t-1)+Wlijsl-1i(t)Vl-1th(2)
其中:mlj(t)和vlj(t)分別表示在時間步長t時觸發脈沖之前和觸發脈沖之后神經元j的膜電位;sl-1i(t)是時間步長t時來自突觸前神經元i的二進制輸出脈沖,一旦神經元j的膜電位mlj(t)超過放電閾值Vlth,神經元將產生脈沖并更新膜電位vlj(t)。就硬復位機制而言,在發射脈沖后,膜電位將立即恢復到靜息電位,因此,硬復位機制忽略了放電瞬間的剩余電位,導致轉換SNN的準確性下降。軟復位神經元避免了上述問題,并廣泛應用于各種模型中。為了避免信息丟失,如式(4)所示,本文使用“軟復位”機制[11]。軟復位神經元在觸發脈沖后不會恢復到靜息電位,而是將剩余電位保持在觸發閾值以上。
由于IF神經元的最大放電速率為1,神經元在每個時間步長最多發出一個脈沖,這要求ReLU激活函數的輸出范圍為[0,1],所以需要DNN的參數進行變換。這就需要用到文獻[11]提出的分層參數歸一化,其通過使用DNN第l層的最大激活值λl重新縮放所有參數,如下所示:
用軟復位神經元代替DNN的神經元,并將軟復位神經元的放電閾值設置為其對應層的最大激活值??梢詫㈩A訓練的DNN轉換為可以直接使用的SNN,本文采用閾值平衡的方法來進行歸一化處理。
1.2 轉換誤差
DNN-SNN的轉換思想是將DNN的模擬神經元的ReLU激活與SNN中的脈沖神經元的放電速率(或平均突觸后電位)聯系起來。其轉換誤差主要來自兩個方面:a)直接將DNN轉換為SNN,產生量化誤差和裁剪誤差;b)由于脈沖到達激活層的時間順序不同而導致的誤差。下面給出了近似過程的解析解釋,將式(2)代入式(4)可以得到
vlj(t)-vlj(t-1)=Wlijsl-1i(t)Vl-1th-sli(t)Vlth(7)
通過將式(7)從時間步長1~T求和,并在等式兩邊除以T可以得到
式(9)描述了相鄰層神經元的平均突觸后膜電位關系,而且ψlj(T)≥0,觀察式(1)和(9)可以發現,如果能夠將DNN中模擬神經元的激活值al全部映射到SNN中IF神經元的ψl(T),那么就能夠用反向傳播算法對源DNN進行訓練,并通過用IF神經元代替ReLU激活來將其轉換為SNN,這是DNN-SNN轉換的核心思想。如果將初始膜電位vli(0)設置為零,那么當模擬時間步長T足夠長時則可以忽略剩余膜電位vli(t)/T,轉換后的SNN具有與源DNN幾乎相同的激活函數,然而這會導致很高的推理延遲以至于阻礙SNN的實際應用。
1.2.1 量化和裁剪誤差:SNN動力學離散化的誤差
如圖1所示,如果將λl設置為DNN中的實際閾值以映射SNN的有限離散集合ST中的最大值Vlth,al可以通過以下等式映射到ψl(t),即
其中:Floor函數x」返回小于或等于x的最大整數,而clip函數用于設置上限和下限,即
為了減少人工神經網絡到SNN轉換產生的量化誤差,可以通過增加延遲T或降低λl來實現,這就是為什么DNN-SNN轉換后,延遲和精度具有權衡關系的原因。然而,較低的λl會導致裁剪誤差增大,這也降低了轉換的SNN的準確性。另一方面,較大的λl會減小裁剪誤差但會伴隨量化誤差的增加,文獻[10]將Vlth設置為 DNN 中跨樣本的最大預激活以消除剪裁誤差。然而,最大預激活通常是異常值,基于這種認識,異常值可能會極大地增加量化誤差,因此必須使用非常大的T(如2 000)來減少量化誤差。
1.2.2 不均勻誤差
在DNN中,一個神經元同時將輸入相加得到激活值;但是在SNN中,由于脈沖可能會沿時間軸散布在任何時間步長,所以神經元的輸出速率可能會有很多變化。理想情況下,期望從前一層接收脈沖的時間是均勻的。通過分析可以發現,對負權重傳遞的脈沖延遲到達的不當處理導致脈沖神經元的輸出速率過高,使得DNN和轉換后的SNN無法對應,下面通過圖2中的例子來解釋。
如圖2上方框圖中第一個圖所示,假設輸入數據x1=3并且x2=2,則在DNN中神經元的輸出為1。根據基于速率的編碼,將數據編碼成一定數量的脈沖,可以假設x1對應于三個脈沖,x2對應于兩個脈沖。此外,IF神經元的靜息電位為0,脈沖發放閾值為1。深層SNN中神經元的輸出脈沖可能在時間軸上顯示各種分布。理想情況下,期望從前一層接收脈沖的時間是均勻的,即圖2上方框中的第二個圖。然而在現實中,當脈沖傳遞到深層時脈沖時間將是不均勻的,這將導致比預期發射更多的脈沖。本文分析兩種特殊情況,即由負權重傳輸的脈沖的延遲到達或提前到達,這分別對應圖2下方框中的第一個圖和第二個圖。從圖2下方框中可以看出,當負權重傳遞的脈沖首先到達時,神經元的輸出速率可以對應于DNN中神經元的輸出;然而當正權重傳遞的脈沖首先到達時,神經元會立即放電,導致輸出速率過高。對于使用基于速率編碼的SNN,雖然可以控制輸入脈沖的分布,但隱藏層中輸出脈沖的分布無法控制,使得上述誤差不可避免。
2 解決方法
2.1 雙閾值記憶機制
如果所有的脈沖均勻地分布在時間軸上,或者負突觸傳遞的脈沖總是提前到達突觸后神經元,則可以避免脈沖到達激活層的時間序列不同帶來的不均勻誤差。為了解決這一問題,結合IF神經元模型引入了雙閾值記憶(double-threshold memory,DTM)機制。DTM神經元有效地解決了輸出速率過高的問題,而記憶機制的使用確保了記憶神經元能記住其傳輸的脈沖之和(正負脈沖可以相互抵消)。只有當記憶值大于零時,負的脈沖才能傳輸到下一層,通過這種方法,在時間步長t處,第l層中的神經元j的動力學方程描述如下:
其中:Mlj是第l層神經元j的記憶值。當mlj超過放電閾值Vlthj時,神經元j將向其突觸后神經元發送脈沖slj(t)。下面通過圖3來說明雙閾值記憶神經元,請注意圖3的誤差條件與圖2的相同。
從圖3可以看出,三個脈沖分別在t1、t2和t3從突觸W1輸入到記憶神經元,在t3時,雖然神經元此時的膜電位為0,但記憶值為3Vlth,這是已經被傳遞的所有脈沖的數量;在t4時,記憶神經元可以發出負脈沖,因為它滿足式(15)的條件;t5時情況也是一樣。通過上面的例子可以說明雙閾值記憶神經元的輸出速率等于它的記憶值。普通的有符號神經元如果傳輸的負脈沖比正脈沖多,那么神經元的輸出速率可能就是負的,這與ReLU激活函數相矛盾,但雙閾值記憶神經元由于有記憶值的存在,可以確保脈沖發射速率不會低于0。
2.2 通過MMSE自適應閾值
由于膜電位在很大程度上取決于網絡的權重,許多研究尋求更好的閾值權重比,以促進SNN的深化,同時減少近似誤差。權重標準化[10]和Spike-Norm[14]是其中兩個杰出的代表,在權重標準化中,權重和偏差根據DNN中相鄰層的最大激活或所有激活的第99.9個百分位數進行縮放,閾值不變。首先通過一定數量的訓練樣本估計網絡各層的最大激活值,然后根據相鄰層的最大值縮放權重,然而這種基于DNN的權重調整不太適合轉換后的SNN。文獻[14]提出了Spike-Norm,其中根據相應層中突觸后膜電位的最大值設置特定神經元的閾值。
盡管這些方法取得了成功,但消除更深層次的CNN和SNN之間的近似誤差仍然是一個挑戰。上述兩種閾值調整方法都是基于一定數量樣本的最大輸入或輸出值,這種方式對單個樣本參數不是最優的,可能會導致部分神經元激活不足?;谝陨显颍疚奶岢隽艘环N自適應閾值的調整方案。受文獻[15]啟發,所提出的自適應閾值方案是基于神經網絡通道的,詳細的方法如圖4和算法1所示。這里的主要任務是減少每一層的激活差異,通過利用ClipFloor函數來確定觸發閾值。為了更好地平衡量化誤差和裁剪誤差,使用最小化均方誤差(MMSE)來獲得給定不同預定義時間步長T的閾值Vlth,其公式為
在此對幾批訓練圖像進行采樣,并使用網格搜索來確定Vlth的最終結果。具體來說,線性采樣[0,almax]的N個網格,并找到MSE最低的網格。設置N=100,發現這個選項在搜索效率和精度之間取得了很好的平衡。按通道應用MMSE閾值,以進一步降低MSE誤差。
算法1 基于通道搜索脈沖發射閾值
輸入:預訓練的DNN;網格大小N。
輸出:網絡每個神經層的閾值平衡因子。
for all i=1,2,…,n th layer in the DNN model do
for j in output channels do
初始化每個通道的最大激活值;
收集DNN輸出;
遍歷每個通道找到最大激活值max(Alj);
for all j=1,2,…,N th grid do
臨時設置閾值為j/N max(Alj);
計算ReLU和ClipFloor激活之間的MSE;
找到最小MSE的閾值;
end for
end for
end for
返回所有神經元層的通道閾值。
為了定量證明改進方法對減少每一層激活差異的有效性,本文計算每一層的相對誤差‖al-ψl(t)‖2F/‖al‖2F并在圖5中可視化。在每一層中計算每個通道的相對誤差,并將它們放入箱形圖中,箱線顯示第5~95個百分位數的范圍,橙色線表示中間值(見電子版)。選擇在Cifar100數據集上使用VGG16模型,并將其轉換為步長為16的SNN。對于傳統方法,首先確定每個IF神經元層中的放電閾值,然后DNN的網絡參數被簡單地復制到SNN。從圖5可以觀察到相對誤差最初很低,在使用傳統方法轉換的SNN倒數第二層中,部分通道的相對誤差甚至達到10以上,從而導致相當大的精度缺陷。使用本文算法,激活差異得到了顯著改善,從圖5可以看出,大多數層的相對誤差小于0.75,倒數第二層的最大相對誤差僅為0.7。
3 實驗驗證與分析
3.1 實驗數據
3.1.1 CIFAR10和CIFAR100數據集
CIFAR10數據集由10個類別的60 000張32×32圖像組成,有50 000張訓練圖像和10 000張測試圖像。與CIFAR10數據集類似,CIFAR-100數據集由100個類別的60 000 張32×32圖像組成,有50 000張訓練圖像和10 000張測試圖像。另外將填充設置為4,其他數據擴充包括隨機水平翻轉、裁剪和自動擴充[19]。
3.1.2 MIT-BIH心律失常數據庫
本文使用麻省理工學院心律失常數據庫[20],該數據庫可在Physionet官網免費獲取,它包含48條持續時間約30 min的雙導聯ECG信號記錄。這些記錄以每通道每秒360個樣本的速度數字化,具有11位的分辨率,覆蓋了10 mV的范圍。因此,每個記錄包含大約648 000個樣本數據點,在每個記錄中,第一個通道固定為改良導聯II(modified-lead II,MLII),第二個通道根據記錄的不同,是V1、V2、V4和V5(六個單極胸導聯中的四個)之一。由于只有MLII在所有記錄中都可用,已經證明了一個導聯就足以達到高精度,所以在這項工作中只使用MLII數據。本文采用醫療器械促進協會(AAMI)在1998年提出的常用標記標準,該標準將心跳標記為正常(normal,N)、室上異位搏動(supraventricular ectopic beat,SVEB)、心室異位搏動(ventricular ectopic beat,VEB)和融合(fusion,F)。MIT-BIH數據集包括74 363次正常心跳、2 941次室上異位心跳、5 805次室上異位心跳和793次融合心跳。對于患者間分類,本文將MIT-BIH心律失常數據庫分為訓練數據集和測試數據集,其中不同心跳類型的比例在每個訓練和測試數據集中是相似的。
a)訓練數據集:101,106,108,109,112,114,115,116,118,119,122,124,201,203,205,207,208,209,215,220,223,230。
b)測試數據集:100,103,105,111,113,117,121,123,200,202,210,212,213,213,219,221,222,228,231,232,233,234。
此外,麻省理工學院數據庫中的48條記錄中有4條沒有包括在內,即102、104、107和217,因為這些記錄中的節拍類型高度不平衡(90%的節拍是N節拍,3%和6%是SVEB和VEB,只有1%是F)。使用MIT-BIH 數據集中提供的R峰注釋位置對信號進行分段,只需取以 R 峰值為中心的180個點的窗口,每側90個點,即可獲得分段節拍。
3.2 實驗參數配置
本文實驗均在Windows11操作系統上完成,CPU型號為Inter CoreTM i7-12700H CPU,主頻大小2.30 GHz,GPU 采用NVIDIA GeForce RTX3060,顯存的大小為6 GB。實驗使用Python 3.8進行編程和測試,選用深度學習框架PyTorch,版本號為1.9.0,CUDA版本為11.6,cuDNN版本為8.4.0。
為了驗證算法的有效性和效率,本文使用VGG16和ResNet20網絡結構在CIFAR10、CIFAR100上進行了實驗。對于CIFAR數據集,優化算法采用的是隨機梯度下降(stochastic gradient descent,SGD)算法,SGD算法中還使用了0.9的動量參數。另外學習率衰減采用了一個因子為0.2的策略,即在訓練到第180、240和270個epoch時,學習率會分別乘以0.2,以減小學習率的大小。還采用了L2正則化,超參數λ被設置為5E-4。此外,為了防止過度擬合,在DNN中加入了批量歸一化層(batch normalization,BN)。在SNN推理階段,本文遵循文獻[11]的方法合并卷積層和隨后的BN層形成新的卷積層。在目前的SNN研究中,通常需要將實數的輸入值轉換為脈沖,再輸入到SNN中進行處理[21];以前的方法通常將模擬輸入激活(如灰度級或RGB值)轉換成泊松發射率,但是這種轉換給網絡的啟動帶來了可變性,并損害了其性能。對于轉換后的SNN,使用恒定編碼方案將輸入圖像像素強度轉換為脈沖率,根據IF神經元的動態,通過在連續的時間步長上分布輸入電流(模擬神經元的激活值)來產生脈沖序列[11]。在SNN中,神經元的激活是二進制的而不是模擬值,執行最大池化會導致下一層的重大信息損失,因此過去的大多數研究都使用平均池化。本文遵循先前的工作,所有的最大池化層都使用平均池化層替換。
對于MIT-BIH心律失常數據庫,本文所使用的網絡結構如圖6所示。由于心電信號是一維數據,所以使用一維DNN進行分類。圖6的卷積層和池化層的第一維度是1,其中的四分類DNN模型將ECG信號分類為N、SVEB、VEB、F四個詳細類別。該模型在其前兩個卷積層中使用16個濾波器,在最后一個卷積層中使用24個濾波器,平均池化層應用于每個卷積層,使用的學習率為0.001。采用脈沖速率編碼,其中歸一化為[0,1]的每個數字信號值被編碼為長度為T的脈沖序列。
3.3 消融實驗
本節中將證明所提出的方法能夠以更高的預測精度和更短的模擬時間實現SNN。為了驗證所提出方法的有效性,采用VGG16和ResNet20對CIFAR10進行了消融實驗。在用于比較的基準模型中,使用每層的最大激活值來歸一化權重和偏置,即文獻[11]中提出的Max-norm方法,然后分別驗證所提兩種方法對轉換的影響。首先驗證雙閾值記憶神經元對轉換的影響,如表1所示,與基于Max-norm+IF的方法相比,使用本文的Max-norm+DTM方法,轉換的準確性和速度明顯提高。粗體代表該項性能對比在所有模型中最高,當進一步將基準模型的Max-norm方法換成本文的MMSE自適應閾值的方法時,性能提升更加明顯。例如,當轉換ResNet20時,本文方法只需要32個時間步長就可以獲得93.30%的準確率。
圖7顯示了當使用四種不同轉換方法時VGG16結構的SNN推斷精度,可以得到更加直觀的效果。其中,用于比較的基準模型標記為灰色線(參見電子版)。在將基準模型的IF神經元改為雙閾值記憶神經元之后,如圖中藍色曲線所示,可以看到在16個模擬時間步長以后,精度顯著提高。黑線表示的是加入MMSE后的效果,可以看出提升效果更加明顯,僅僅使用32個模擬時間步長就達到甚至超過基準模型的效果。最后從綠色的線可以看出,結合所提兩種方法轉換后的SNN的推理精度超過了單獨使用任何一種方法的精度,并且只用32個時間步長就可以實現近乎無損的DNN-SNN轉換,說明結合本文中提出的兩種方法對DNN-SNN轉換的效果非常好。
3.4 與相關工作的比較
將本文算法與其他的先進DNN-SNN算法在CIFAR數據集上的轉換結果進行比較分析,結果如表2所示,粗體代表該項性能對比在所有模型中最高,網絡結構包括VGG16和ResNet20。首先,本文關注轉換的SNN性能,對于VGG16和ResNet20,本文算法的精度都可以超過所有以前的算法,而且在32個時間步長內實現了不到1%的性能損失。該方法除了具有優越的性能外,在仿真時間上也有突出的優勢。用ResNet20使用CIFAR10進行仿真實驗,所提算法僅用16個時間步長就實現了93.22%的精度。在CIFAR100數據集上32個時間步長也能實現可接受的轉換精度。為了證明所提出的算法無須過多的推理延遲(T>128),表2還列出了不同時間步長的推理準確性,并與其他研究進行了比較。實驗結果證明了本文算法法具有更好的性能。
3.5 心電圖分類的應用
本節將圖6所示的DNN訓練好并轉換為SNN,然后應用本文算法對心電圖分類。使用以下兩個績效指標展示轉換前DNN 和轉換后SNN兩種網絡的性能,即敏感度(Se)和陽性預測率(P+),計算公式如下:
其中:TP、TN、FN和FP分別為真陽性、真陰性、假陰性和假陽性。
表3展示了四分類DNN的混淆矩陣,其中正確的預測以粗體突出顯示。本文重點關注檢測SVEB和VEB疾病的Se和P+,結果如表4所示。由表4可知,檢測SVEB和VEB的Se分別為91%和85%,證明了本文的DNN模型的良好性能。表4還顯示了DNN到SNN轉換的精度損失,可以看出轉換后的脈沖神經網絡在檢測疾病SVEB和VEB時有少量的精度損失,但在檢測疾病N和F時表現更好。當使用本文的優化算法來搜索各層的最佳閾值時,精度增益來自SNN閾值的可配置性。
3.6 能耗分析
在DNN中,每個操作計算涉及一個浮點(floating-point,FP)乘法和一個FP加法,而在SNN中,由于二進制脈沖,每個操作僅是一個FP加法。在SNN中,不發射脈沖的神經元不參與計算,因此SNN在硬件上的實現具有節能的特性,尤其是在神經形態硬件上。本文選擇VGG16在CIFAR100上驗證所提出方法的能量效率,并使用文獻[22]中的能量估計方法。32位DNN中MAC運算的能量成本(4.6 pJ)比SNN加法運算(0.9 pJ)高5.1倍[23]。對于不同的技術,這些數值可能不同,但是在大多數技術中,加法運算比乘法運算更加節能。如圖8所示,本文計算了當模擬長度為32時在CIFAR100整個驗證集上每一層的平均脈沖發射率,需要注意的是,這里的發射速率是用脈沖的數量來計算的。與之前不同,這里的正負脈沖不會抵消。在本文的方法中,除了第一層的神經元執行乘法運算,其余的神經元只執行加法運算。在圖8中顯示了當模擬長度為32時每層的發射速率,并且平均發射速率僅為0.052 5。根據文獻[22]提到的能耗比計算公式(式(20))可以計算出當模擬長度為32時,本文的模型只需要DNN模型能量消耗的65.70%。
4 結束語
本文旨在減少從DNN到SNN轉換中由近似誤差引起的性能損失。分析了模擬神經元和脈沖神經元在神經元模型和神經元活動方面的差異,以及權重和閾值之間的平衡對逼近誤差的影響。先前的研究主要集中在SNN中量化和裁剪誤差的優化上,較少研究脈沖到達激活層的時間序列不同而引起的不均勻誤差。為此,本文基于IF神經元提出了雙閾值記憶神經元模型,可以有效解決脈沖時間不均勻導致比預期更多的脈沖的問題;此外,提出了一種改進的自適應閾值的算法,通過使用最小化均方誤差方法有效地最小化量化和裁剪誤差。實驗結果表明,所提出的算法在較短的時間步長下實現了近乎無損的DNN-SNN轉換。本文所采用的網絡結構所有的最大池化均用平均池化來代替,這在一定程度上可能會限制DNN的性能,后續工作將繼續研究使用最大池化的DNN-SNN轉換以及將轉換好的SNN模型部署到神經形態芯片上。
參考文獻:
[1]王清華,王麗娜,徐頌.融合LSTM結構的脈沖神經網絡模型研究與應用[J].計算機應用研究,2021,38(5):1381-1386.(Wang Qinghua,Wang Lina,Xu Song.Research and application of spiking neural network model based on LSTM structure[J].Application Research of Computers,2021,38(5):1381-1386.)
[2]Tavanaei A,Ghodrati M,Kheradpisheh S R,et al.Deep learning in spiking neural networks[J].Neural Networks,2019,111(3):47-63.
[3]Maass W.Networks of spiking neurons:the third generation of neural network models[J].Neural Networks,1997,10(9):1659-1671.
[4]Davies M,Srinivasa N,Lin T H,et al.Loihi:a neuromorphic manycore processor with on-chip learning[J].IEEE Micro,2018,38(1):82-99.
[5]Song Shihao,Balaji A,Das A,et al.Compiling spiking neural networks to neuromorphic hardware[C]//Proc of the 21st ACM SIGPLAN/SIGBED Conference on Languages,Compilers,and Tools for Embedded Systems.New York:ACM Press,2020:38-50.
[6]Li Yuhang,Guo Yufei,Zhang Shanghang,et al.Differentiable spike:rethinking gradient-descent for training spiking neural networks[C]//Advances in Neural Information Processing Systems.Red Hook,NY:Curran Associates Inc.,2021:23426-23439.
[7]Lee C,Sarwar S S,Panda P,et al.Enabling spike-based backpropagation for training deep neural network architectures[J].Frontiers in Neuroscience,2020,14:119.
[8]Zhang Wenrui,Li Peng.Temporal spike sequence learning via backpropagation for deep spiking neural networks[C]//Proc of the 34th International Conference on Neural Information Processing Systems.Red Hook,NY:Curran Associates Inc.,2020:12022-12033.
[9]Cao Yongqiang,Chen Yang,Khosla D.Spiking deep convolutional neural networks for energy-efficient object recognition[J].International Journal of Computer Vision,2015,113(1):54-66.
[10]Diehl P U,Neil D,Binas J,et al.Fast-classifying,high-accuracy spiking deep networks through weight and threshold balancing[C]//Proc of International Joint Conference on Neural Networks.Piscataway,NJ:IEEE Press,2015:1-8.
[11]Rueckauer B,Lungu I A,Hu Yuhuang,et al.Conversion of conti-nuous-valued deep networks to efficient event-driven networks for image classification[J/OL].Frontiers in Neuroscience.(2017).https://doi.org/10.3389/fnins.2017.00682.(下轉第187頁)