降低百倍時間步,精度媲美傳統(tǒng)神經(jīng)網(wǎng)絡(luò):上交等機(jī)構(gòu)提出ANN-SNN 轉(zhuǎn)換框架SpikeConverter
脈沖神經(jīng)網(wǎng)絡(luò)(Spiking Neural Network, SNN)被譽(yù)為第三代的神經(jīng)網(wǎng)絡(luò),以其豐富的時空領(lǐng)域的神經(jīng)動力學(xué)特性、多樣的編碼機(jī)制、事件驅(qū)動的優(yōu)勢引起了學(xué)者的關(guān)注。由于生物合理性與任務(wù)需求間存在不同程度的取舍,對網(wǎng)絡(luò)使用的神經(jīng)元模型、編碼方式等各有差異,這造成了 SNN 的多樣化。與向量乘法為基礎(chǔ)的傳統(tǒng)人工神經(jīng)網(wǎng)絡(luò)(ANN)不同,SNN 通過模擬大腦的功能結(jié)構(gòu),以神經(jīng)元為計算、存儲單元,通過累積在膜電壓上由相鄰神經(jīng)元發(fā)出的脈沖信號,并在超過閾值電位時****脈沖的方式傳遞信息。由于其計算可以完全由加法完成,需要的計算量和功耗大幅減少[1]。此外,由于 SNN 中神經(jīng)元的執(zhí)行、學(xué)習(xí)機(jī)制,使得 SNN 與一些新興器件天然結(jié)合在一起[2]。
論文鏈接:https://www.aaai.org/AAAI22Papers/AAAI-364.LiuF.pdf
脈沖神經(jīng)網(wǎng)絡(luò)的目標(biāo)是在基于異步電路的實現(xiàn),每個神經(jīng)元可以異步接收和****脈沖信號。然而這種大規(guī)模的異步電路目前還無法實現(xiàn),脈沖神經(jīng)網(wǎng)絡(luò)中的所有脈沖信號需要對齊至?xí)r鐘信號。這樣做會帶來兩個問題:其一,為了精確表達(dá)脈沖****的時間,需要將一次推理分割成大量的時間步(time step),使得脈沖序列變的十分冗長;其二,脈沖序列中的脈沖數(shù)量沒有變化,使得脈沖序列出現(xiàn)不規(guī)則的稀疏脈沖?,F(xiàn)有的同步脈沖神經(jīng)網(wǎng)絡(luò)芯片,例如 Loihi,在一定程度上利用了稀疏性。但是,時間步增加導(dǎo)致的推理時間延長問題依然存在。
現(xiàn)有的脈沖神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法分為兩種方法:直接訓(xùn)練和通過傳統(tǒng)神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)換得來。
直接訓(xùn)練的 SNN:可以進(jìn)一步劃分為有監(jiān)督訓(xùn)練和無監(jiān)督訓(xùn)練。有監(jiān)督訓(xùn)練的 SNN 是基于脈沖的反向傳播算法,然而神經(jīng)元函數(shù)不可微,導(dǎo)致傳統(tǒng)的反向傳播算法沒辦法直接應(yīng)用在 SNN 上。無監(jiān)督訓(xùn)練的 SNN 是利用突觸可塑性規(guī)則的仿生學(xué)習(xí)算法。例如:脈沖時序依賴的突觸可塑性(Spike-Timing Dependent Plasticity, STDP)是最具代表性的無監(jiān)督 SNN,根據(jù)神經(jīng)元激發(fā)的先后順序,調(diào)整神經(jīng)元之間連接的強(qiáng)弱。
基于轉(zhuǎn)換的 SNN:為了在已發(fā)展的深度學(xué)習(xí)成果上進(jìn)一步利用脈沖神經(jīng)網(wǎng)絡(luò)低能耗的特點,從 ANN 的視角出發(fā),將連續(xù)的激活函數(shù)值通過 SNN 中頻率編碼下的平均脈沖發(fā)放率進(jìn)行替代,并且使用神經(jīng)元函數(shù)替換 ANN 中的 ReLU 函數(shù),再通過特定手段將其轉(zhuǎn)換為 SNN。從本質(zhì)上說,基于轉(zhuǎn)換的 SNN 其訓(xùn)練仍然依賴于 ANN 中的反向傳播算法,因此它避免了對 SNN 進(jìn)行直接訓(xùn)練的困難。就性能表現(xiàn)而言,基于轉(zhuǎn)換的 SNN 保持著與 ANN 發(fā)展相匹配的進(jìn)程。
然而,現(xiàn)有的 SNN 在實現(xiàn)超大規(guī)模的網(wǎng)絡(luò)結(jié)構(gòu)上,仍然面臨梯度消失、訓(xùn)練資源開銷大甚至算法收斂性的問題,一般只能應(yīng)用在淺層的 SNN 中,并且精度還距離 ANN 有一定的差距。
而現(xiàn)有的轉(zhuǎn)換方法應(yīng)用在更深的網(wǎng)絡(luò)或更復(fù)雜的數(shù)據(jù)集時,需要大量的時間步長表示脈沖序列(例如:在 ImageNet 中,VGG 轉(zhuǎn)換而來的 SNN 需要的時間步數(shù)量高達(dá) 2048[3,4])。相比于進(jìn)行一次 ANN 的推理只需要執(zhí)行一次前向傳遞過程;SNN 在每個時間步都需要執(zhí)行一次前向傳遞。因此,時間步的數(shù)量過多會引入極大的推理延遲,導(dǎo)致了轉(zhuǎn)換后的 SNN 網(wǎng)絡(luò)難以勝任對實時性有要求的應(yīng)用。
方法介紹
本文提出一種基于高效且準(zhǔn)確的 ANN-SNN 轉(zhuǎn)換框架,不僅可以應(yīng)用到傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的最新發(fā)展,而且大幅度降低了時間步的數(shù)量。只需要 8-16 個時間步就可以達(dá)到和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)幾乎一致的精度,節(jié)省了百倍的時間延遲。
轉(zhuǎn)換中的一致性關(guān)系
首先,我們在神經(jīng)元****脈沖之后采用了軟重置的策略,在當(dāng)前的膜電位中減去閾值電位的值,從而保留了超出閾值的部分。在之前的大部分文章中,采用的是硬重置策略,當(dāng)膜電壓超過閾值時****脈沖并將膜電壓直接重置為 0。這樣做的好處是盡可能多的保留了膜電壓中包含的信息,并且能夠在輸入的微小擾動下保持相對一致的輸出結(jié)果。軟重置方法可以用公式表達(dá)為
其中 V[t]是 t 時刻的膜電壓,k 是每個時間步之間的膜電壓衰減系數(shù)。Xi 是第 i 個相鄰神經(jīng)元的脈沖序列,0 表示 t 時沒有脈沖傳輸。Y 是當(dāng)前神經(jīng)元的輸出脈沖序列。將公式 (1) 在 t=1 到 T 累加,我們可以得到
在理想情況下,最后神經(jīng)元內(nèi)沒有膜電壓存留,即 V[T]=0。此時,公式 (2) 可以簡化為
不難發(fā)現(xiàn),公式 (3) 與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的 MAC 計算模式十分相似,而事實上之前最為常用的基于 ANN 轉(zhuǎn)換的 SNN,將 ANN 的激活值作為 SNN 中的神經(jīng)元****脈沖的頻率,正是公式 (3) 在 k=1 的特例。
然而,公式 (3) 在很多情況下并不成立。最明顯的一種情況,是膜電壓在最后并不一定會等于 0 或一個相對較小的數(shù)。事實上,由于神經(jīng)元之間的權(quán)重有負(fù)值,導(dǎo)致很多時候膜電壓最終是一個負(fù)數(shù)。SNN 的神經(jīng)元模型的機(jī)制決定了其只會對正的電壓做出反應(yīng)而累積的負(fù)膜電位則會被保留,從而導(dǎo)致公式 (3) 的等號并不成立,信息無法準(zhǔn)確表達(dá),使得脈沖神經(jīng)網(wǎng)絡(luò)的精度低于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)。例如當(dāng) k=1 以及閾值電位 = 1 的情況下,如果輸入總膜電位分別為 1,1,-1,-1,則會在前兩個時間步產(chǎn)生脈沖信號;而后兩個 - 1 則被累積在膜電位中無法消耗。此時公式左邊 = 0 而右邊 = 2,公式并不成立。
神經(jīng)元計算中的時域分離
針對這一點,文章采用了時域分離的方法,將膜電壓的累積過程和膜電壓釋放脈沖的過程在時域上分離開,避免膜電壓累積信息丟失的情況出現(xiàn)。為了實現(xiàn)時域分離的效果,即****脈沖在累積電壓之后,應(yīng)使得較晚時間的膜電壓在沒有額外輸入的情況下要大于之前的膜電壓。這在之前的 leaky integrate-and-fire 模型中是無法做到的。文章提出了與傳統(tǒng) LIF 相反的模型,iLIF,在每個時間步結(jié)束后增幅而不是減少模電壓,即在公式中的模電壓衰減系數(shù) k 現(xiàn)在是一個大于 1 的數(shù),被稱作為電壓增幅系數(shù)。
然而,時域分離的方法使得完成一個神經(jīng)元計算的時間翻倍,文章通過流水線的方法,在前一層的脈沖輸出階段直接將信號傳輸至下一層作為輸入信號。在消除了時域分離帶來的額外運(yùn)行時間的同時,也減少了需要臨時存儲的內(nèi)容。
以上示意圖展示了圖片推理的執(zhí)行示意圖。核心是利用層間并行,實現(xiàn)不同圖片的兩個執(zhí)行階段重疊,降低推理時延。
參數(shù)選擇方面,主要是電壓增幅系數(shù)的選擇。文章考慮了不同的時間步數(shù)量和增幅系數(shù)的情況下,平均的轉(zhuǎn)化誤差。實驗表明在不同的時間步選擇下,k=2 都是最優(yōu)選擇。
以上示意圖展示了在不同參數(shù)選擇下,轉(zhuǎn)化誤差的變化情況。K=2 時,在各個時間步下,轉(zhuǎn)換誤差最小,可以膜電壓累積表示的信息最準(zhǔn)確。
實驗結(jié)果
文章使用 CIFAR-10/100,以及 ImageNet 數(shù)據(jù)集進(jìn)行實驗。實驗結(jié)果表明文章提出的方法在僅需要 16 個時間步的情況下,可以達(dá)到和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)幾乎一致的精度。極大節(jié)省空間存儲和計算代價的情況下取得了最佳的性能,具體實驗結(jié)果參見論文。部分結(jié)果如下。
未來方向
脈沖神經(jīng)網(wǎng)絡(luò)還有較大的挖掘空間,還有許多領(lǐng)域 SNN 未能成功應(yīng)用,可以在視頻識別、機(jī)器人控制等方面繼續(xù)研究。
[1] Roy, K.; Jaiswal, A.; and Panda, P. 2019. Towards spike based machine intelligence with neuromorphic computing. Nature, 575(7784): 607–617.[2] Wo?niak, Stanis?aw, et al. "Deep learning incorporating biologically inspired neural dynamics and in-memory computing." Nature Machine Intelligence 2.6 (2020): 325-336.[3] Han, Bing, Gopalakrishnan Srinivasan, and Kaushik Roy. "Rmp-snn: Residual membrane potential neuron for enabling deeper high-accuracy and low-latency spiking neural network." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.[4] Han, Bing, and Kaushik Roy. "Deep spiking neural network: Energy efficiency through time based coding." European Conference on Computer Vision. Springer, Cham, 2020.
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。