• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    用于雙閾值脈沖神經(jīng)網(wǎng)絡(luò)的改進(jìn)自適應(yīng)閾值算法

    2024-02-18 07:05:43王浩杰劉闖

    王浩杰 劉闖

    摘 要:脈沖神經(jīng)網(wǎng)絡(luò)(spiking neural network,SNN)由于在神經(jīng)形態(tài)芯片上低功耗和高速計(jì)算的獨(dú)特性質(zhì)而受到廣泛的關(guān)注。深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)到SNN的轉(zhuǎn)換方法是有效的脈沖神經(jīng)網(wǎng)絡(luò)訓(xùn)練方法之一,然而從DNN到SNN的轉(zhuǎn)換過(guò)程中存在近似誤差,轉(zhuǎn)換后的SNN在短時(shí)間步長(zhǎng)下遭受?chē)?yán)重的性能退化。通過(guò)對(duì)轉(zhuǎn)換過(guò)程中的誤差進(jìn)行詳細(xì)分析,將其分解為量化和裁剪誤差以及不均勻誤差,提出了一種改進(jìn)SNN閾值平衡的自適應(yīng)閾值算法。通過(guò)使用最小化均方誤差(MMSE)更好地平衡量化誤差和裁剪誤差;此外,基于IF神經(jīng)元模型引入了雙閾值記憶機(jī)制,有效解決了不均勻誤差。實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法在CIFAR-10、CIFAR-100數(shù)據(jù)集以及MIT-BIH心律失常數(shù)據(jù)庫(kù)上取得了很好的性能,對(duì)于CIFAR10數(shù)據(jù)集,僅用16個(gè)時(shí)間步長(zhǎng)就實(shí)現(xiàn)了93.22%的高精度,驗(yàn)證了算法的有效性。

    關(guān)鍵詞:脈沖神經(jīng)網(wǎng)絡(luò);高精度轉(zhuǎn)換;雙閾值記憶神經(jīng)元;自適應(yīng)閾值

    中圖分類(lèi)號(hào):TP391?? 文獻(xiàn)標(biāo)志碼:A?? 文章編號(hào):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 引言

    深度神經(jīng)網(wǎng)絡(luò)在圖像分類(lèi)、語(yǔ)音識(shí)別、自然語(yǔ)言處理等廣泛的應(yīng)用中取得了巨大成功[1,2]。作為人工智能的代表,深度學(xué)習(xí)在許多領(lǐng)域的表現(xiàn)已經(jīng)超越了人類(lèi)。然而,DNN的訓(xùn)練程序需要巨大的能量消耗和大量的內(nèi)存,這對(duì)應(yīng)用于輕量級(jí)設(shè)備和有限的存儲(chǔ)場(chǎng)景來(lái)說(shuō)是一個(gè)挑戰(zhàn)。人工智能與物聯(lián)網(wǎng)需求量的持續(xù)攀升,進(jìn)而催生高效神經(jīng)網(wǎng)絡(luò)和加速器的開(kāi)發(fā)與應(yīng)用,尤其是在推理方面,一些研究側(cè)重于減少網(wǎng)絡(luò)連接和使用低精度參數(shù),但計(jì)算消耗仍然很大。與傳統(tǒng)DNN不同,脈沖神經(jīng)網(wǎng)絡(luò)[3]以一種模擬大腦的方式利用離散脈沖進(jìn)行信息表示和傳輸,所以計(jì)算的能力更強(qiáng)大,而且在生物學(xué)上也是合理的。另外,SNN中的信息是基于事件的,即不發(fā)射脈沖神經(jīng)元不參與計(jì)算,神經(jīng)元的信息整合是累加(accumulate,AC)操作,這比DNN中的乘法累加(multiply accumulate,MAC)操作更節(jié)能。SNN促進(jìn)了神經(jīng)形態(tài)計(jì)算平臺(tái)的發(fā)展,這些平臺(tái)已經(jīng)成功展示了比傳統(tǒng)計(jì)算平臺(tái)節(jié)能數(shù)個(gè)數(shù)量級(jí)的出色性能[4,5]。

    雖然SNN具有上述優(yōu)點(diǎn),但由于脈沖的不可微性,廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)的反向傳播算法不能直接用于訓(xùn)練脈沖神經(jīng)網(wǎng)絡(luò)。到目前為止,訓(xùn)練高效的脈沖神經(jīng)網(wǎng)絡(luò)仍然是一個(gè)開(kāi)放性的問(wèn)題。直接訓(xùn)練和間接訓(xùn)練兩種主流方法被開(kāi)發(fā)出來(lái)克服訓(xùn)練深度SNN的挑戰(zhàn)。直接訓(xùn)練SNN需要解決不可微二元激活函數(shù)的問(wèn)題,流行的方法是對(duì)脈沖神經(jīng)元使用代理梯度函數(shù)。一些方法[6,7]設(shè)計(jì)可微的代理激活函數(shù)(和相應(yīng)的代理梯度)來(lái)優(yōu)化SNN。直接訓(xùn)練的方法在小型和中型數(shù)據(jù)集上的訓(xùn)練性能與傳統(tǒng)人工神經(jīng)網(wǎng)絡(luò)相當(dāng),甚至優(yōu)于傳統(tǒng)人工神經(jīng)網(wǎng)絡(luò)[8],然而訓(xùn)練過(guò)程需要大量的時(shí)間和內(nèi)存,并且對(duì)于像VGG這樣的大型網(wǎng)絡(luò)來(lái)說(shuō),在收斂方面存在困難。為了縮小SNN與DNN之間的差距,出現(xiàn)了一種間接轉(zhuǎn)換方案,通過(guò)將預(yù)先訓(xùn)練的DNN的參數(shù)映射到相同架構(gòu)的SNN,即DNN-SNN轉(zhuǎn)換方法。這種轉(zhuǎn)換方法利用DNN中的先進(jìn)技術(shù)來(lái)實(shí)現(xiàn)與SNN相當(dāng)?shù)木?,避免了梯度估?jì)問(wèn)題,因?yàn)樗m應(yīng)了最先進(jìn)的DNN學(xué)習(xí)算法,所以在復(fù)雜任務(wù)中實(shí)現(xiàn)了高可擴(kuò)展性。Cao等人[9]首先開(kāi)始了DNN-SNN的研究,將具有一定約束的訓(xùn)練的淺卷積網(wǎng)絡(luò)成功地部署到SNN中,從而在傳統(tǒng)的目標(biāo)識(shí)別基準(zhǔn)上產(chǎn)生良好的準(zhǔn)確性。并且發(fā)現(xiàn)脈沖神經(jīng)元的放電率可以近似于DNN中具有足夠時(shí)間步長(zhǎng)的對(duì)應(yīng)神經(jīng)元的激活,這一發(fā)現(xiàn)已經(jīng)成為轉(zhuǎn)換方案的基本原則。在隨后的工作中,Diehl等人[10]提出了基于數(shù)據(jù)的歸一化,通過(guò)閾值平衡來(lái)提高深度SNN的性能。這里的歸一化是對(duì)網(wǎng)絡(luò)的權(quán)重歸一化,歸一化尺度是DNN中每一層的最大激活值。Rueckauer等人[11]通過(guò)結(jié)合DNN的更多技術(shù)對(duì)轉(zhuǎn)換方法進(jìn)一步改進(jìn),把減法復(fù)位機(jī)制[12]方法應(yīng)用到轉(zhuǎn)換SNN,這種方法也稱(chēng)為軟重置[13]。Sengupta等人[14]將轉(zhuǎn)換方法擴(kuò)展到VGG和ResNet架構(gòu),并提出Spike-Norm算法,它根據(jù)轉(zhuǎn)換后的 SNN 中每層的最大輸入來(lái)調(diào)整閾值。Han等人[13] 提出剩余膜電位(RMP)脈沖神經(jīng)元,通過(guò)縮放脈沖標(biāo)準(zhǔn)閾值改進(jìn)了閾值平衡。Kim等人[15]提出了基于信道數(shù)據(jù)歸一化的Spiking-YOLO,這是第一個(gè)基于脈沖的目標(biāo)檢測(cè)模型,并在目標(biāo)檢測(cè)任務(wù)上實(shí)現(xiàn)了與DNN相當(dāng)?shù)慕Y(jié)果。最近,Ding等人[16]提出了分階段加權(quán)和閾值訓(xùn)練的方法,以?xún)?yōu)化激活與激活之間誤差的上界函數(shù)。Li等人[17]進(jìn)一步提出使用量化微調(diào)校準(zhǔn)權(quán)重和偏差。Bu等人[18]為人工神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)QCFS移位激活函數(shù),更好地近似SNN的激活函數(shù)。然而,它們都是復(fù)雜的過(guò)程,容易受到高推理延遲的影響;此外,使用批量歸一化(batch normalization,BN)層轉(zhuǎn)換低延遲SNN仍然是一個(gè)持續(xù)的挑戰(zhàn)。盡管DNN-SNN轉(zhuǎn)換已經(jīng)取得了一定的進(jìn)展,但SNN 與DNN之間的性能差距仍然存在,尤其是在遇到更復(fù)雜的任務(wù)時(shí)。并且有限的時(shí)間步長(zhǎng)(<256)將導(dǎo)致精度顯著下降,現(xiàn)有的DNN轉(zhuǎn)換SNN方法需要數(shù)千個(gè)推理時(shí)間步長(zhǎng)才能在準(zhǔn)確性方面達(dá)到DNN的水平,導(dǎo)致SNN的功耗和延遲在應(yīng)用中高于DNN。雖然較長(zhǎng)的推理時(shí)間可以進(jìn)一步減少轉(zhuǎn)換誤差,但這也阻礙了SNN在神經(jīng)形態(tài)芯片上的實(shí)際應(yīng)用。本文分析了DNN和SNN的神經(jīng)元模型和工作機(jī)制的差異導(dǎo)致的轉(zhuǎn)換中的近似誤差,即SNN離散化引起的量化和裁剪誤差以及由于脈沖到達(dá)激活層的時(shí)間序列不同而引起的不均勻誤差[18]。通過(guò)最小化均方誤差,本文提出了一種改進(jìn)量化誤差和裁剪誤差之間平衡的自適應(yīng)閾值算法,在該算法中,閾值是動(dòng)態(tài)調(diào)整的。此外,引入了雙閾值記憶神經(jīng)元來(lái)解決不均勻誤差。CIFAR-10和CIFAR-100數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,與其他方法相比,本文提出的自適應(yīng)閾值機(jī)制的SNN在分類(lèi)準(zhǔn)確率、準(zhǔn)確率損失和網(wǎng)絡(luò)延遲方面都有很大的提高。

    1 轉(zhuǎn)換誤差分析

    1.1 神經(jīng)元模型

    1.1.1 DNN神經(jīng)元模型

    DNN中的模擬神經(jīng)元的計(jì)算可以簡(jiǎn)化為線性變換和非線性映射的組合,在數(shù)學(xué)上前饋網(wǎng)絡(luò)中第l層中神經(jīng)元i的激活值ali(ReLU之后)可以計(jì)算為

    其中:l∈{1,…,L}表示具有L層神經(jīng)網(wǎng)絡(luò)的第l層;Wlij是l層中的神經(jīng)元i和l-1層中神經(jīng)元j之間的權(quán)重;bli表示第l層神經(jīng)元i的偏置,為了方便起見(jiàn),在下面的描述中省略了偏置。

    1.1.2 SNN的神經(jīng)元模型

    與以前的工作類(lèi)似,本文考慮積分發(fā)放(integrate-and-fire,IF)神經(jīng)元模型,IF神經(jīng)元由于輸入和輸出之間的功能關(guān)系類(lèi)似于ReLU而被廣泛應(yīng)用于DNN-SNN轉(zhuǎn)換算法中。在每個(gè)時(shí)間步長(zhǎng)t,脈沖神經(jīng)元j接收傳入脈沖并通過(guò)整合輸入膜電位來(lái)更新其狀態(tài),在時(shí)間步長(zhǎng)t處l層IF神經(jīng)元j的膜電位vlj(t)為

    mlj(t)=vlj(t-1)+Wlijsl-1i(t)Vl-1th(2)

    其中:mlj(t)和vlj(t)分別表示在時(shí)間步長(zhǎng)t時(shí)觸發(fā)脈沖之前和觸發(fā)脈沖之后神經(jīng)元j的膜電位;sl-1i(t)是時(shí)間步長(zhǎng)t時(shí)來(lái)自突觸前神經(jīng)元i的二進(jìn)制輸出脈沖,一旦神經(jīng)元j的膜電位mlj(t)超過(guò)放電閾值Vlth,神經(jīng)元將產(chǎn)生脈沖并更新膜電位vlj(t)。就硬復(fù)位機(jī)制而言,在發(fā)射脈沖后,膜電位將立即恢復(fù)到靜息電位,因此,硬復(fù)位機(jī)制忽略了放電瞬間的剩余電位,導(dǎo)致轉(zhuǎn)換SNN的準(zhǔn)確性下降。軟復(fù)位神經(jīng)元避免了上述問(wèn)題,并廣泛應(yīng)用于各種模型中。為了避免信息丟失,如式(4)所示,本文使用“軟復(fù)位”機(jī)制[11]。軟復(fù)位神經(jīng)元在觸發(fā)脈沖后不會(huì)恢復(fù)到靜息電位,而是將剩余電位保持在觸發(fā)閾值以上。

    由于IF神經(jīng)元的最大放電速率為1,神經(jīng)元在每個(gè)時(shí)間步長(zhǎng)最多發(fā)出一個(gè)脈沖,這要求ReLU激活函數(shù)的輸出范圍為[0,1],所以需要DNN的參數(shù)進(jìn)行變換。這就需要用到文獻(xiàn)[11]提出的分層參數(shù)歸一化,其通過(guò)使用DNN第l層的最大激活值λl重新縮放所有參數(shù),如下所示:

    用軟復(fù)位神經(jīng)元代替DNN的神經(jīng)元,并將軟復(fù)位神經(jīng)元的放電閾值設(shè)置為其對(duì)應(yīng)層的最大激活值??梢詫㈩A(yù)訓(xùn)練的DNN轉(zhuǎn)換為可以直接使用的SNN,本文采用閾值平衡的方法來(lái)進(jìn)行歸一化處理。

    1.2 轉(zhuǎn)換誤差

    DNN-SNN的轉(zhuǎn)換思想是將DNN的模擬神經(jīng)元的ReLU激活與SNN中的脈沖神經(jīng)元的放電速率(或平均突觸后電位)聯(lián)系起來(lái)。其轉(zhuǎn)換誤差主要來(lái)自?xún)蓚€(gè)方面:a)直接將DNN轉(zhuǎn)換為SNN,產(chǎn)生量化誤差和裁剪誤差;b)由于脈沖到達(dá)激活層的時(shí)間順序不同而導(dǎo)致的誤差。下面給出了近似過(guò)程的解析解釋?zhuān)瑢⑹剑?)代入式(4)可以得到

    vlj(t)-vlj(t-1)=Wlijsl-1i(t)Vl-1th-sli(t)Vlth(7)

    通過(guò)將式(7)從時(shí)間步長(zhǎng)1~T求和,并在等式兩邊除以T可以得到

    式(9)描述了相鄰層神經(jīng)元的平均突觸后膜電位關(guān)系,而且ψlj(T)≥0,觀察式(1)和(9)可以發(fā)現(xiàn),如果能夠?qū)NN中模擬神經(jīng)元的激活值al全部映射到SNN中IF神經(jīng)元的ψl(T),那么就能夠用反向傳播算法對(duì)源DNN進(jìn)行訓(xùn)練,并通過(guò)用IF神經(jīng)元代替ReLU激活來(lái)將其轉(zhuǎn)換為SNN,這是DNN-SNN轉(zhuǎn)換的核心思想。如果將初始膜電位vli(0)設(shè)置為零,那么當(dāng)模擬時(shí)間步長(zhǎng)T足夠長(zhǎng)時(shí)則可以忽略剩余膜電位vli(t)/T,轉(zhuǎn)換后的SNN具有與源DNN幾乎相同的激活函數(shù),然而這會(huì)導(dǎo)致很高的推理延遲以至于阻礙SNN的實(shí)際應(yīng)用。

    1.2.1 量化和裁剪誤差:SNN動(dòng)力學(xué)離散化的誤差

    如圖1所示,如果將λl設(shè)置為DNN中的實(shí)際閾值以映射SNN的有限離散集合ST中的最大值Vlth,al可以通過(guò)以下等式映射到ψl(t),即

    其中:Floor函數(shù)x」返回小于或等于x的最大整數(shù),而clip函數(shù)用于設(shè)置上限和下限,即

    為了減少人工神經(jīng)網(wǎng)絡(luò)到SNN轉(zhuǎn)換產(chǎn)生的量化誤差,可以通過(guò)增加延遲T或降低λl來(lái)實(shí)現(xiàn),這就是為什么DNN-SNN轉(zhuǎn)換后,延遲和精度具有權(quán)衡關(guān)系的原因。然而,較低的λl會(huì)導(dǎo)致裁剪誤差增大,這也降低了轉(zhuǎn)換的SNN的準(zhǔn)確性。另一方面,較大的λl會(huì)減小裁剪誤差但會(huì)伴隨量化誤差的增加,文獻(xiàn)[10]將Vlth設(shè)置為 DNN 中跨樣本的最大預(yù)激活以消除剪裁誤差。然而,最大預(yù)激活通常是異常值,基于這種認(rèn)識(shí),異常值可能會(huì)極大地增加量化誤差,因此必須使用非常大的T(如2 000)來(lái)減少量化誤差。

    1.2.2 不均勻誤差

    在DNN中,一個(gè)神經(jīng)元同時(shí)將輸入相加得到激活值;但是在SNN中,由于脈沖可能會(huì)沿時(shí)間軸散布在任何時(shí)間步長(zhǎng),所以神經(jīng)元的輸出速率可能會(huì)有很多變化。理想情況下,期望從前一層接收脈沖的時(shí)間是均勻的。通過(guò)分析可以發(fā)現(xiàn),對(duì)負(fù)權(quán)重傳遞的脈沖延遲到達(dá)的不當(dāng)處理導(dǎo)致脈沖神經(jīng)元的輸出速率過(guò)高,使得DNN和轉(zhuǎn)換后的SNN無(wú)法對(duì)應(yīng),下面通過(guò)圖2中的例子來(lái)解釋。

    如圖2上方框圖中第一個(gè)圖所示,假設(shè)輸入數(shù)據(jù)x1=3并且x2=2,則在DNN中神經(jīng)元的輸出為1。根據(jù)基于速率的編碼,將數(shù)據(jù)編碼成一定數(shù)量的脈沖,可以假設(shè)x1對(duì)應(yīng)于三個(gè)脈沖,x2對(duì)應(yīng)于兩個(gè)脈沖。此外,IF神經(jīng)元的靜息電位為0,脈沖發(fā)放閾值為1。深層SNN中神經(jīng)元的輸出脈沖可能在時(shí)間軸上顯示各種分布。理想情況下,期望從前一層接收脈沖的時(shí)間是均勻的,即圖2上方框中的第二個(gè)圖。然而在現(xiàn)實(shí)中,當(dāng)脈沖傳遞到深層時(shí)脈沖時(shí)間將是不均勻的,這將導(dǎo)致比預(yù)期發(fā)射更多的脈沖。本文分析兩種特殊情況,即由負(fù)權(quán)重傳輸?shù)拿}沖的延遲到達(dá)或提前到達(dá),這分別對(duì)應(yīng)圖2下方框中的第一個(gè)圖和第二個(gè)圖。從圖2下方框中可以看出,當(dāng)負(fù)權(quán)重傳遞的脈沖首先到達(dá)時(shí),神經(jīng)元的輸出速率可以對(duì)應(yīng)于DNN中神經(jīng)元的輸出;然而當(dāng)正權(quán)重傳遞的脈沖首先到達(dá)時(shí),神經(jīng)元會(huì)立即放電,導(dǎo)致輸出速率過(guò)高。對(duì)于使用基于速率編碼的SNN,雖然可以控制輸入脈沖的分布,但隱藏層中輸出脈沖的分布無(wú)法控制,使得上述誤差不可避免。

    2 解決方法

    2.1 雙閾值記憶機(jī)制

    如果所有的脈沖均勻地分布在時(shí)間軸上,或者負(fù)突觸傳遞的脈沖總是提前到達(dá)突觸后神經(jīng)元,則可以避免脈沖到達(dá)激活層的時(shí)間序列不同帶來(lái)的不均勻誤差。為了解決這一問(wèn)題,結(jié)合IF神經(jīng)元模型引入了雙閾值記憶(double-threshold memory,DTM)機(jī)制。DTM神經(jīng)元有效地解決了輸出速率過(guò)高的問(wèn)題,而記憶機(jī)制的使用確保了記憶神經(jīng)元能記住其傳輸?shù)拿}沖之和(正負(fù)脈沖可以相互抵消)。只有當(dāng)記憶值大于零時(shí),負(fù)的脈沖才能傳輸?shù)较乱粚?,通過(guò)這種方法,在時(shí)間步長(zhǎng)t處,第l層中的神經(jīng)元j的動(dòng)力學(xué)方程描述如下:

    其中:Mlj是第l層神經(jīng)元j的記憶值。當(dāng)mlj超過(guò)放電閾值Vlthj時(shí),神經(jīng)元j將向其突觸后神經(jīng)元發(fā)送脈沖slj(t)。下面通過(guò)圖3來(lái)說(shuō)明雙閾值記憶神經(jīng)元,請(qǐng)注意圖3的誤差條件與圖2的相同。

    從圖3可以看出,三個(gè)脈沖分別在t1、t2和t3從突觸W1輸入到記憶神經(jīng)元,在t3時(shí),雖然神經(jīng)元此時(shí)的膜電位為0,但記憶值為3Vlth,這是已經(jīng)被傳遞的所有脈沖的數(shù)量;在t4時(shí),記憶神經(jīng)元可以發(fā)出負(fù)脈沖,因?yàn)樗鼭M足式(15)的條件;t5時(shí)情況也是一樣。通過(guò)上面的例子可以說(shuō)明雙閾值記憶神經(jīng)元的輸出速率等于它的記憶值。普通的有符號(hào)神經(jīng)元如果傳輸?shù)呢?fù)脈沖比正脈沖多,那么神經(jīng)元的輸出速率可能就是負(fù)的,這與ReLU激活函數(shù)相矛盾,但雙閾值記憶神經(jīng)元由于有記憶值的存在,可以確保脈沖發(fā)射速率不會(huì)低于0。

    2.2 通過(guò)MMSE自適應(yīng)閾值

    由于膜電位在很大程度上取決于網(wǎng)絡(luò)的權(quán)重,許多研究尋求更好的閾值權(quán)重比,以促進(jìn)SNN的深化,同時(shí)減少近似誤差。權(quán)重標(biāo)準(zhǔn)化[10]和Spike-Norm[14]是其中兩個(gè)杰出的代表,在權(quán)重標(biāo)準(zhǔn)化中,權(quán)重和偏差根據(jù)DNN中相鄰層的最大激活或所有激活的第99.9個(gè)百分位數(shù)進(jìn)行縮放,閾值不變。首先通過(guò)一定數(shù)量的訓(xùn)練樣本估計(jì)網(wǎng)絡(luò)各層的最大激活值,然后根據(jù)相鄰層的最大值縮放權(quán)重,然而這種基于DNN的權(quán)重調(diào)整不太適合轉(zhuǎn)換后的SNN。文獻(xiàn)[14]提出了Spike-Norm,其中根據(jù)相應(yīng)層中突觸后膜電位的最大值設(shè)置特定神經(jīng)元的閾值。

    盡管這些方法取得了成功,但消除更深層次的CNN和SNN之間的近似誤差仍然是一個(gè)挑戰(zhàn)。上述兩種閾值調(diào)整方法都是基于一定數(shù)量樣本的最大輸入或輸出值,這種方式對(duì)單個(gè)樣本參數(shù)不是最優(yōu)的,可能會(huì)導(dǎo)致部分神經(jīng)元激活不足?;谝陨显颍疚奶岢隽艘环N自適應(yīng)閾值的調(diào)整方案。受文獻(xiàn)[15]啟發(fā),所提出的自適應(yīng)閾值方案是基于神經(jīng)網(wǎng)絡(luò)通道的,詳細(xì)的方法如圖4和算法1所示。這里的主要任務(wù)是減少每一層的激活差異,通過(guò)利用ClipFloor函數(shù)來(lái)確定觸發(fā)閾值。為了更好地平衡量化誤差和裁剪誤差,使用最小化均方誤差(MMSE)來(lái)獲得給定不同預(yù)定義時(shí)間步長(zhǎng)T的閾值Vlth,其公式為

    在此對(duì)幾批訓(xùn)練圖像進(jìn)行采樣,并使用網(wǎng)格搜索來(lái)確定Vlth的最終結(jié)果。具體來(lái)說(shuō),線性采樣[0,almax]的N個(gè)網(wǎng)格,并找到MSE最低的網(wǎng)格。設(shè)置N=100,發(fā)現(xiàn)這個(gè)選項(xiàng)在搜索效率和精度之間取得了很好的平衡。按通道應(yīng)用MMSE閾值,以進(jìn)一步降低MSE誤差。

    算法1 基于通道搜索脈沖發(fā)射閾值

    輸入:預(yù)訓(xùn)練的DNN;網(wǎng)格大小N。

    輸出:網(wǎng)絡(luò)每個(gè)神經(jīng)層的閾值平衡因子。

    for all i=1,2,…,n th layer in the DNN model do

    for j in output channels do

    初始化每個(gè)通道的最大激活值;

    收集DNN輸出;

    遍歷每個(gè)通道找到最大激活值max(Alj);

    for all j=1,2,…,N th grid do

    臨時(shí)設(shè)置閾值為j/N max(Alj);

    計(jì)算ReLU和ClipFloor激活之間的MSE;

    找到最小MSE的閾值;

    end for

    end for

    end for

    返回所有神經(jīng)元層的通道閾值。

    為了定量證明改進(jìn)方法對(duì)減少每一層激活差異的有效性,本文計(jì)算每一層的相對(duì)誤差‖al-ψl(t)‖2F/‖al‖2F并在圖5中可視化。在每一層中計(jì)算每個(gè)通道的相對(duì)誤差,并將它們放入箱形圖中,箱線顯示第5~95個(gè)百分位數(shù)的范圍,橙色線表示中間值(見(jiàn)電子版)。選擇在Cifar100數(shù)據(jù)集上使用VGG16模型,并將其轉(zhuǎn)換為步長(zhǎng)為16的SNN。對(duì)于傳統(tǒng)方法,首先確定每個(gè)IF神經(jīng)元層中的放電閾值,然后DNN的網(wǎng)絡(luò)參數(shù)被簡(jiǎn)單地復(fù)制到SNN。從圖5可以觀察到相對(duì)誤差最初很低,在使用傳統(tǒng)方法轉(zhuǎn)換的SNN倒數(shù)第二層中,部分通道的相對(duì)誤差甚至達(dá)到10以上,從而導(dǎo)致相當(dāng)大的精度缺陷。使用本文算法,激活差異得到了顯著改善,從圖5可以看出,大多數(shù)層的相對(duì)誤差小于0.75,倒數(shù)第二層的最大相對(duì)誤差僅為0.7。

    3 實(shí)驗(yàn)驗(yàn)證與分析

    3.1 實(shí)驗(yàn)數(shù)據(jù)

    3.1.1 CIFAR10和CIFAR100數(shù)據(jù)集

    CIFAR10數(shù)據(jù)集由10個(gè)類(lèi)別的60 000張32×32圖像組成,有50 000張訓(xùn)練圖像和10 000張測(cè)試圖像。與CIFAR10數(shù)據(jù)集類(lèi)似,CIFAR-100數(shù)據(jù)集由100個(gè)類(lèi)別的60 000 張32×32圖像組成,有50 000張訓(xùn)練圖像和10 000張測(cè)試圖像。另外將填充設(shè)置為4,其他數(shù)據(jù)擴(kuò)充包括隨機(jī)水平翻轉(zhuǎn)、裁剪和自動(dòng)擴(kuò)充[19]。

    3.1.2 MIT-BIH心律失常數(shù)據(jù)庫(kù)

    本文使用麻省理工學(xué)院心律失常數(shù)據(jù)庫(kù)[20],該數(shù)據(jù)庫(kù)可在Physionet官網(wǎng)免費(fèi)獲取,它包含48條持續(xù)時(shí)間約30 min的雙導(dǎo)聯(lián)ECG信號(hào)記錄。這些記錄以每通道每秒360個(gè)樣本的速度數(shù)字化,具有11位的分辨率,覆蓋了10 mV的范圍。因此,每個(gè)記錄包含大約648 000個(gè)樣本數(shù)據(jù)點(diǎn),在每個(gè)記錄中,第一個(gè)通道固定為改良導(dǎo)聯(lián)II(modified-lead II,MLII),第二個(gè)通道根據(jù)記錄的不同,是V1、V2、V4和V5(六個(gè)單極胸導(dǎo)聯(lián)中的四個(gè))之一。由于只有MLII在所有記錄中都可用,已經(jīng)證明了一個(gè)導(dǎo)聯(lián)就足以達(dá)到高精度,所以在這項(xiàng)工作中只使用MLII數(shù)據(jù)。本文采用醫(yī)療器械促進(jìn)協(xié)會(huì)(AAMI)在1998年提出的常用標(biāo)記標(biāo)準(zhǔn),該標(biāo)準(zhǔn)將心跳標(biāo)記為正常(normal,N)、室上異位搏動(dòng)(supraventricular ectopic beat,SVEB)、心室異位搏動(dòng)(ventricular ectopic beat,VEB)和融合(fusion,F(xiàn))。MIT-BIH數(shù)據(jù)集包括74 363次正常心跳、2 941次室上異位心跳、5 805次室上異位心跳和793次融合心跳。對(duì)于患者間分類(lèi),本文將MIT-BIH心律失常數(shù)據(jù)庫(kù)分為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,其中不同心跳類(lèi)型的比例在每個(gè)訓(xùn)練和測(cè)試數(shù)據(jù)集中是相似的。

    a)訓(xùn)練數(shù)據(jù)集:101,106,108,109,112,114,115,116,118,119,122,124,201,203,205,207,208,209,215,220,223,230。

    b)測(cè)試數(shù)據(jù)集:100,103,105,111,113,117,121,123,200,202,210,212,213,213,219,221,222,228,231,232,233,234。

    此外,麻省理工學(xué)院數(shù)據(jù)庫(kù)中的48條記錄中有4條沒(méi)有包括在內(nèi),即102、104、107和217,因?yàn)檫@些記錄中的節(jié)拍類(lèi)型高度不平衡(90%的節(jié)拍是N節(jié)拍,3%和6%是SVEB和VEB,只有1%是F)。使用MIT-BIH 數(shù)據(jù)集中提供的R峰注釋位置對(duì)信號(hào)進(jìn)行分段,只需取以 R 峰值為中心的180個(gè)點(diǎn)的窗口,每側(cè)90個(gè)點(diǎn),即可獲得分段節(jié)拍。

    3.2 實(shí)驗(yàn)參數(shù)配置

    本文實(shí)驗(yàn)均在Windows11操作系統(tǒng)上完成,CPU型號(hào)為Inter CoreTM i7-12700H CPU,主頻大小2.30 GHz,GPU 采用NVIDIA GeForce RTX3060,顯存的大小為6 GB。實(shí)驗(yàn)使用Python 3.8進(jìn)行編程和測(cè)試,選用深度學(xué)習(xí)框架PyTorch,版本號(hào)為1.9.0,CUDA版本為11.6,cuDNN版本為8.4.0。

    為了驗(yàn)證算法的有效性和效率,本文使用VGG16和ResNet20網(wǎng)絡(luò)結(jié)構(gòu)在CIFAR10、CIFAR100上進(jìn)行了實(shí)驗(yàn)。對(duì)于CIFAR數(shù)據(jù)集,優(yōu)化算法采用的是隨機(jī)梯度下降(stochastic gradient descent,SGD)算法,SGD算法中還使用了0.9的動(dòng)量參數(shù)。另外學(xué)習(xí)率衰減采用了一個(gè)因子為0.2的策略,即在訓(xùn)練到第180、240和270個(gè)epoch時(shí),學(xué)習(xí)率會(huì)分別乘以0.2,以減小學(xué)習(xí)率的大小。還采用了L2正則化,超參數(shù)λ被設(shè)置為5E-4。此外,為了防止過(guò)度擬合,在DNN中加入了批量歸一化層(batch normalization,BN)。在SNN推理階段,本文遵循文獻(xiàn)[11]的方法合并卷積層和隨后的BN層形成新的卷積層。在目前的SNN研究中,通常需要將實(shí)數(shù)的輸入值轉(zhuǎn)換為脈沖,再輸入到SNN中進(jìn)行處理[21];以前的方法通常將模擬輸入激活(如灰度級(jí)或RGB值)轉(zhuǎn)換成泊松發(fā)射率,但是這種轉(zhuǎn)換給網(wǎng)絡(luò)的啟動(dòng)帶來(lái)了可變性,并損害了其性能。對(duì)于轉(zhuǎn)換后的SNN,使用恒定編碼方案將輸入圖像像素強(qiáng)度轉(zhuǎn)換為脈沖率,根據(jù)IF神經(jīng)元的動(dòng)態(tài),通過(guò)在連續(xù)的時(shí)間步長(zhǎng)上分布輸入電流(模擬神經(jīng)元的激活值)來(lái)產(chǎn)生脈沖序列[11]。在SNN中,神經(jīng)元的激活是二進(jìn)制的而不是模擬值,執(zhí)行最大池化會(huì)導(dǎo)致下一層的重大信息損失,因此過(guò)去的大多數(shù)研究都使用平均池化。本文遵循先前的工作,所有的最大池化層都使用平均池化層替換。

    對(duì)于MIT-BIH心律失常數(shù)據(jù)庫(kù),本文所使用的網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。由于心電信號(hào)是一維數(shù)據(jù),所以使用一維DNN進(jìn)行分類(lèi)。圖6的卷積層和池化層的第一維度是1,其中的四分類(lèi)DNN模型將ECG信號(hào)分類(lèi)為N、SVEB、VEB、F四個(gè)詳細(xì)類(lèi)別。該模型在其前兩個(gè)卷積層中使用16個(gè)濾波器,在最后一個(gè)卷積層中使用24個(gè)濾波器,平均池化層應(yīng)用于每個(gè)卷積層,使用的學(xué)習(xí)率為0.001。采用脈沖速率編碼,其中歸一化為[0,1]的每個(gè)數(shù)字信號(hào)值被編碼為長(zhǎng)度為T(mén)的脈沖序列。

    3.3 消融實(shí)驗(yàn)

    本節(jié)中將證明所提出的方法能夠以更高的預(yù)測(cè)精度和更短的模擬時(shí)間實(shí)現(xiàn)SNN。為了驗(yàn)證所提出方法的有效性,采用VGG16和ResNet20對(duì)CIFAR10進(jìn)行了消融實(shí)驗(yàn)。在用于比較的基準(zhǔn)模型中,使用每層的最大激活值來(lái)歸一化權(quán)重和偏置,即文獻(xiàn)[11]中提出的Max-norm方法,然后分別驗(yàn)證所提兩種方法對(duì)轉(zhuǎn)換的影響。首先驗(yàn)證雙閾值記憶神經(jīng)元對(duì)轉(zhuǎn)換的影響,如表1所示,與基于Max-norm+IF的方法相比,使用本文的Max-norm+DTM方法,轉(zhuǎn)換的準(zhǔn)確性和速度明顯提高。粗體代表該項(xiàng)性能對(duì)比在所有模型中最高,當(dāng)進(jìn)一步將基準(zhǔn)模型的Max-norm方法換成本文的MMSE自適應(yīng)閾值的方法時(shí),性能提升更加明顯。例如,當(dāng)轉(zhuǎn)換ResNet20時(shí),本文方法只需要32個(gè)時(shí)間步長(zhǎng)就可以獲得93.30%的準(zhǔn)確率。

    圖7顯示了當(dāng)使用四種不同轉(zhuǎn)換方法時(shí)VGG16結(jié)構(gòu)的SNN推斷精度,可以得到更加直觀的效果。其中,用于比較的基準(zhǔn)模型標(biāo)記為灰色線(參見(jiàn)電子版)。在將基準(zhǔn)模型的IF神經(jīng)元改為雙閾值記憶神經(jīng)元之后,如圖中藍(lán)色曲線所示,可以看到在16個(gè)模擬時(shí)間步長(zhǎng)以后,精度顯著提高。黑線表示的是加入MMSE后的效果,可以看出提升效果更加明顯,僅僅使用32個(gè)模擬時(shí)間步長(zhǎng)就達(dá)到甚至超過(guò)基準(zhǔn)模型的效果。最后從綠色的線可以看出,結(jié)合所提兩種方法轉(zhuǎn)換后的SNN的推理精度超過(guò)了單獨(dú)使用任何一種方法的精度,并且只用32個(gè)時(shí)間步長(zhǎng)就可以實(shí)現(xiàn)近乎無(wú)損的DNN-SNN轉(zhuǎn)換,說(shuō)明結(jié)合本文中提出的兩種方法對(duì)DNN-SNN轉(zhuǎn)換的效果非常好。

    3.4 與相關(guān)工作的比較

    將本文算法與其他的先進(jìn)DNN-SNN算法在CIFAR數(shù)據(jù)集上的轉(zhuǎn)換結(jié)果進(jìn)行比較分析,結(jié)果如表2所示,粗體代表該項(xiàng)性能對(duì)比在所有模型中最高,網(wǎng)絡(luò)結(jié)構(gòu)包括VGG16和ResNet20。首先,本文關(guān)注轉(zhuǎn)換的SNN性能,對(duì)于VGG16和ResNet20,本文算法的精度都可以超過(guò)所有以前的算法,而且在32個(gè)時(shí)間步長(zhǎng)內(nèi)實(shí)現(xiàn)了不到1%的性能損失。該方法除了具有優(yōu)越的性能外,在仿真時(shí)間上也有突出的優(yōu)勢(shì)。用ResNet20使用CIFAR10進(jìn)行仿真實(shí)驗(yàn),所提算法僅用16個(gè)時(shí)間步長(zhǎng)就實(shí)現(xiàn)了93.22%的精度。在CIFAR100數(shù)據(jù)集上32個(gè)時(shí)間步長(zhǎng)也能實(shí)現(xiàn)可接受的轉(zhuǎn)換精度。為了證明所提出的算法無(wú)須過(guò)多的推理延遲(T>128),表2還列出了不同時(shí)間步長(zhǎng)的推理準(zhǔn)確性,并與其他研究進(jìn)行了比較。實(shí)驗(yàn)結(jié)果證明了本文算法法具有更好的性能。

    3.5 心電圖分類(lèi)的應(yīng)用

    本節(jié)將圖6所示的DNN訓(xùn)練好并轉(zhuǎn)換為SNN,然后應(yīng)用本文算法對(duì)心電圖分類(lèi)。使用以下兩個(gè)績(jī)效指標(biāo)展示轉(zhuǎn)換前DNN 和轉(zhuǎn)換后SNN兩種網(wǎng)絡(luò)的性能,即敏感度(Se)和陽(yáng)性預(yù)測(cè)率(P+),計(jì)算公式如下:

    其中:TP、TN、FN和FP分別為真陽(yáng)性、真陰性、假陰性和假陽(yáng)性。

    表3展示了四分類(lèi)DNN的混淆矩陣,其中正確的預(yù)測(cè)以粗體突出顯示。本文重點(diǎn)關(guān)注檢測(cè)SVEB和VEB疾病的Se和P+,結(jié)果如表4所示。由表4可知,檢測(cè)SVEB和VEB的Se分別為91%和85%,證明了本文的DNN模型的良好性能。表4還顯示了DNN到SNN轉(zhuǎn)換的精度損失,可以看出轉(zhuǎn)換后的脈沖神經(jīng)網(wǎng)絡(luò)在檢測(cè)疾病SVEB和VEB時(shí)有少量的精度損失,但在檢測(cè)疾病N和F時(shí)表現(xiàn)更好。當(dāng)使用本文的優(yōu)化算法來(lái)搜索各層的最佳閾值時(shí),精度增益來(lái)自SNN閾值的可配置性。

    3.6 能耗分析

    在DNN中,每個(gè)操作計(jì)算涉及一個(gè)浮點(diǎn)(floating-point,F(xiàn)P)乘法和一個(gè)FP加法,而在SNN中,由于二進(jìn)制脈沖,每個(gè)操作僅是一個(gè)FP加法。在SNN中,不發(fā)射脈沖的神經(jīng)元不參與計(jì)算,因此SNN在硬件上的實(shí)現(xiàn)具有節(jié)能的特性,尤其是在神經(jīng)形態(tài)硬件上。本文選擇VGG16在CIFAR100上驗(yàn)證所提出方法的能量效率,并使用文獻(xiàn)[22]中的能量估計(jì)方法。32位DNN中MAC運(yùn)算的能量成本(4.6 pJ)比SNN加法運(yùn)算(0.9 pJ)高5.1倍[23]。對(duì)于不同的技術(shù),這些數(shù)值可能不同,但是在大多數(shù)技術(shù)中,加法運(yùn)算比乘法運(yùn)算更加節(jié)能。如圖8所示,本文計(jì)算了當(dāng)模擬長(zhǎng)度為32時(shí)在CIFAR100整個(gè)驗(yàn)證集上每一層的平均脈沖發(fā)射率,需要注意的是,這里的發(fā)射速率是用脈沖的數(shù)量來(lái)計(jì)算的。與之前不同,這里的正負(fù)脈沖不會(huì)抵消。在本文的方法中,除了第一層的神經(jīng)元執(zhí)行乘法運(yùn)算,其余的神經(jīng)元只執(zhí)行加法運(yùn)算。在圖8中顯示了當(dāng)模擬長(zhǎng)度為32時(shí)每層的發(fā)射速率,并且平均發(fā)射速率僅為0.052 5。根據(jù)文獻(xiàn)[22]提到的能耗比計(jì)算公式(式(20))可以計(jì)算出當(dāng)模擬長(zhǎng)度為32時(shí),本文的模型只需要DNN模型能量消耗的65.70%。

    4 結(jié)束語(yǔ)

    本文旨在減少?gòu)腄NN到SNN轉(zhuǎn)換中由近似誤差引起的性能損失。分析了模擬神經(jīng)元和脈沖神經(jīng)元在神經(jīng)元模型和神經(jīng)元活動(dòng)方面的差異,以及權(quán)重和閾值之間的平衡對(duì)逼近誤差的影響。先前的研究主要集中在SNN中量化和裁剪誤差的優(yōu)化上,較少研究脈沖到達(dá)激活層的時(shí)間序列不同而引起的不均勻誤差。為此,本文基于IF神經(jīng)元提出了雙閾值記憶神經(jīng)元模型,可以有效解決脈沖時(shí)間不均勻?qū)е卤阮A(yù)期更多的脈沖的問(wèn)題;此外,提出了一種改進(jìn)的自適應(yīng)閾值的算法,通過(guò)使用最小化均方誤差方法有效地最小化量化和裁剪誤差。實(shí)驗(yàn)結(jié)果表明,所提出的算法在較短的時(shí)間步長(zhǎng)下實(shí)現(xiàn)了近乎無(wú)損的DNN-SNN轉(zhuǎn)換。本文所采用的網(wǎng)絡(luò)結(jié)構(gòu)所有的最大池化均用平均池化來(lái)代替,這在一定程度上可能會(huì)限制DNN的性能,后續(xù)工作將繼續(xù)研究使用最大池化的DNN-SNN轉(zhuǎn)換以及將轉(zhuǎn)換好的SNN模型部署到神經(jīng)形態(tài)芯片上。

    參考文獻(xiàn):

    [1]王清華,王麗娜,徐頌.融合LSTM結(jié)構(gòu)的脈沖神經(jīng)網(wǎng)絡(luò)模型研究與應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,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.(下轉(zhuǎn)第187頁(yè))

    金溪县| 通城县| 龙海市| 静海县| 安国市| 闽清县| 沁阳市| 靖江市| 龙川县| 民丰县| 南皮县| 乐亭县| 东乌珠穆沁旗| 梓潼县| 绥滨县| 奉贤区| 商河县| 阿坝县| 石狮市| 海宁市| 万全县| 尚义县| 全州县| 张掖市| 漳浦县| 苏州市| 柳河县| 抚远县| 富锦市| 咸宁市| 昭觉县| 平南县| 荔波县| 孟村| 宣城市| 阜新| 田东县| 大宁县| 古丈县| 满城县| 当雄县|