
使用這些基本 REST API 最佳實踐構建出色的 API
在過去十年中,深度學習取得了顯著成就,它在計算機視覺、語音識別、自然語言處理(NLP)和圍棋等領域展現了可與甚至超越人類表現的成果。最近,大型語言模型(LLMs),即基于Transformer架構的超深神經網絡,包含數千億個參數,吸引了全球的廣泛關注。受到ChatGPT(一個具備卓越溝通能力的大型語言模型)成功的推動,人工智能(AI)領域在2022年和2023年見證了關于大規模神經網絡研究的迅速擴展。
盡管深度神經網絡(DNNs)展示了強大的潛力,但其對內存和計算資源需求的不斷增加,給DNNs的發展和應用帶來了重大挑戰,尤其是在邊緣計算等資源受限的環境中。此外,DNNs不斷增長的碳足跡也加劇了全球變暖等環境問題。例如,GPT-3在訓練過程中消耗了大量的能量,而OpenAI每天大約消耗564 MWh來運行ChatGPT。相比之下,人類大腦能夠以大約20瓦的功率完成一系列復雜任務。為了應對深度學習的瓶頸,研究人員從人類大腦中汲取靈感,提出了脈沖神經網絡(SNNs),它們有望實現高能效計算。
不同于傳統的人工神經網絡(ANNs),SNNs由脈沖神經元組成,這些神經元通過離散的脈沖(事件,值為0或1)而不是連續值激活來交換信息。利用事件驅動的計算模型,SNNs中的脈沖神經元只在脈沖到達時異步更新。此外,與依賴大量乘加(MAC)操作的DNNs相比,SNNs使用更節能的累加(AC)操作。隨著TrueNorth、Loihi和Darwin等新興神經形態硬件的出現,SNNs有望解決馮·諾依曼瓶頸,并通過脈沖驅動的高度并行處理實現高能效的機器智能。
發展情況方面,由于脈沖的不連續性,SNNs的訓練一直具有挑戰性,因為強大的梯度下降算法無法直接應用。早期的工作,如SpikeProp、Tempotron、ReSuMe和無監督STDP,由于缺乏有效的學習算法,SNNs的能力有限。受深度學習成功的啟發,自2015年以來,研究人員開發了基于深度卷積神經網絡(DCNNs)的各種學習算法,在復雜任務(如ImageNet分類)中取得了顯著進展。最近,受大型語言模型成功的啟發,SNNs研究中出現了一個新趨勢:構建基于Transformer架構的深度SNNs。由于Transformer模塊是大多數LLM框架中的關鍵部分,結合脈沖Transformer與神經形態硬件有望在緩解LLM推理的能量瓶頸方面取得重大進展,通過實現大規模SNN模型。
我們的研究集中于深度神經網絡,范圍限于能夠執行復雜任務(如ImageNet分類)的深度脈沖神經網絡。為此,我們主要考察了兩個備受關注且極為重要的方面:學習規則和網絡架構。關于學習規則,我們重點關注兩種流行的途徑:ANN到SNN的轉換和使用替代梯度的直接訓練。對于基于局部可塑性規則(如STDP)構建的SNNs,請參閱其他綜述。關于網絡架構,我們集中于兩類流行的架構:DCNNs和脈沖Transformer。
相關工作方面,脈沖神經網絡,尤其是其訓練方法,已經成為近期多篇綜述的主題。Yi等人描述了多種SNN的學習規則。Guo等人則側重于直接學習方法,綜述了提高準確性、提升效率和利用時間動態的方法。Dampfhoffer等人聚焦于深度SNNs,回顧了ANN到SNN的轉換和反向傳播方法,并對空間、時空和單脈沖方法進行了分類。同樣,Eshraghian等人探討了SNNs如何利用深度學習技術。Rathi等人提供了對SNNs的系統回顧,涵蓋了算法和硬件。然而,以上綜述中都未涉及新興的脈沖Transformer架構,而這類架構有望實現大規模SNN模型。
論文概述方面,首先,第2.1節對構建深度SNNs的學習方法進行了綜述。第2.2節對深度SNNs的網絡架構(如DCNNs和脈沖Transformer)進行了綜述。第2.3節比較了在ImageNet基準上當前最先進的深度SNNs。第3節討論了構建大規模脈沖神經網絡的挑戰與未來方向。第4節提供了總結。
在本節中,我們將概述深度脈沖神經網絡中的學習規則,分為兩種常見的方法:ANN到SNN的轉換和使用替代梯度的直接訓練。
ANN到SNN的轉換有助于高效利用預訓練模型,使其兼容現有框架,并減少訓練和推理過程中的資源需求。這種轉換方法促進了遷移學習和微調,同時增強了神經網絡的生物學合理性。SNNs固有的稀疏性和事件驅動處理方式與硬件實現高度契合,推動了神經形態計算中的可擴展性和能效。
基于ANN激活近似SNN發放率的假設,研究人員提出了多種轉換方法,以利用深度神經網絡的優勢,通過將實值激活神經元映射為離散的脈沖神經元來構建深度SNN(圖1)。Cao等人最早提出將帶有ReLU激活且無偏置的CNN映射為由積分-發放(IF)神經元組成的SNN。ReLU函數定義為:
其中T表示總的時間步數。
為提高轉換SNN的性能,Diehl等人檢查了轉換過程,報告了脈沖神經元的過度/不足激活,這扭曲了ANN激活和SNN發放率之間的近似。為解決這一問題,他們提出了權重歸一化和閾值平衡,這在數學上是等效的。
Rueckauer等人對ANN到SNN的轉換進行了詳細分析。他們發現,由于脈沖神經元的重置操作,信息丟失嚴重,并提出使用減法重置或軟重置來替代原來的歸零重置方法。他們進一步指出,由于殘余膜電位未被整合到脈沖中的量化問題是導致轉換SNN性能下降的主要因素。為解決此問題,他們通過使用激活的第99或99.9百分位數代替最大值來改進權重歸一化。此外,他們實現了現代DCNN中的常見操作(如批歸一化)的脈沖版本,促使了更深層CNN的轉換。
出現了幾種新穎的歸一化方法以減輕轉換后的性能退化問題。Sengupta等人提出了一種動態閾值平衡策略,可以在運行時對SNN進行歸一化。Han等人提出根據IF神經元的fan-in和fan-out縮放閾值。Kim等人引入了通道級權重歸一化,以消除極小的激活值,并實現了Spiking-YOLO,用于目標檢測,它引入了負脈沖以表示負激活值。
為提高轉換SNN的性能,一些有趣的工作在轉換后使用了微調方法。,Yan等人提出了一個框架,通過引入SNN中時間量化的知識來調整預訓練的ANNs。他們在ANN中引入了一個殘差項來模擬SNN中的殘余膜電位,從而減少量化誤差。Wu等人提出了一種名為漸進雙學習的混合框架,以通過時間量化知識微調全精度浮點ANNs。
為了緩解轉換誤差導致的性能下降和推理延遲增加,多個研究進一步分析了轉換過程,并開發了促進ANN到SNN轉換的方法。Hu等人提出通過基于統計估計誤差增加深層神經元的發放率來抵消累積誤差。Deng等人建議使用截頂ReLU函數(如ReLU1和ReLU2)訓練ANNs,并通過最大激活值對發放閾值進行歸一化。Li等人引入了逐層校準來優化SNN的權重,逐層修正轉換誤差。與優化突觸權重不同,Bu等人提出通過優化初始膜電位來減少轉換誤差。在中,Bu等人引入了一種量化截頂-地板-移位激活函數來替代ReLU,實現了超低延遲(4個時間步)的轉換SNN。通過分析ANN量化與SNN脈沖發放的等效性,Hu等人提出了一個映射框架,促進從量化ANN到SNN的轉換。他們還展示了一個帶符號的IF神經元模型,并提出了逐層微調方案以解決低延遲SNN中的順序誤差問題。在中,Li等人提出了一組逐層參數校準算法,以應對激活不匹配問題。
在表1中,我們總結了ANN到SNN轉換方法在CIFAR-10和ImageNet數據集上的最新成果。
使用替代梯度直接訓練脈沖神經網絡(SNNs)可以通過提供平滑近似來使用標準優化算法,如隨機梯度下降(SGD)或Adam。這簡化了SNNs的端到端學習過程,使訓練更加便捷。
為解決不連續的脈沖函數,研究人員使用替代梯度(可微函數的導數)來近似脈沖非線性的導數。對于深度脈沖神經網絡,一種常用方法是將SNN視為具有二進制輸出的循環神經網絡(RNN),并使用時間反向傳播(BPTT)來訓練SNN。類似于RNN中鏈式法則的迭代應用,BPTT展開SNN并將梯度從損失函數傳播到所有后代。例如,突觸權重可以通過以下規則更新:
在過去十年中,深度卷積神經網絡(DCNNs)在各種應用中取得了顯著的成功。基于這些進展,深度脈沖神經網絡(SNNs)的開發也借鑒了DCNNs中的經驗。最近,基于Transformer架構的人工神經網絡(ANNs)在性能上設立了新標桿。基于Transformer骨干的大型語言模型展示了強大的能力,引發了神經形態計算領域的廣泛興趣。因此,結合Transformer架構的SNNs成為了研究熱點。本節中,我們將深度脈沖神經網絡的網絡架構分為兩類:DCNN架構和Transformer架構。
在早期的研究中,Cao等人展示了帶有ReLU激活函數的卷積神經網絡(CNNs)可以映射為由積分-發放(IF)神經元組成的脈沖神經網絡(SNNs)。在這個框架中,人工神經網絡(ANNs)中的卷積和池化操作可以解釋為SNNs中的不同突觸連接模式。因此,SNNs可以看作是具有脈沖神經元作為激活函數的CNN,這為構建具有DCNN架構的深度SNN鋪平了道路。Esser等人進一步展示了批歸一化(BN)可以集成到推理過程中的發放函數中。這一發展促進了使用DCNN架構構建深度SNNs的可能,因為批歸一化是高效訓練DCNNs的常用技術。因此,像AlexNet、VGG和ResNet這樣的流行ANN架構已經廣泛應用于SNNs中。
在深度SNN架構的探索中,ResNet架構因其有效緩解梯度爆炸/消失問題而受到關注。在中,Hu等人展示了一種用于轉換殘差結構的ANN到SNN轉換方法,并報告了與同等深度的普通網絡相比,ResNet在轉換過程中產生的誤差較小。Fang等人提出了脈沖元素級ResNet(SEW-ResNet),該架構通過激活-加和方式取代了標準的殘差結構,允許脈沖神經元發放正整數脈沖。雖然這一修改增強了脈沖的表示能力,但也削弱了事件驅動計算的優勢。Hu等人引入了膜快捷ResNet(MS-ResNet),結合了ANNs中的預激活結構。此方法采用了一條快捷路徑,將脈沖神經元的全精度膜電位直接傳播到所有后續的殘差塊。然而,這種ANNs和SNNs的混合結構也減少了事件驅動計算的優勢。圖3展示了這三種不同的快捷方式實現。
與上述手動設計的架構相比,一些研究提出使用**神經架構搜索(NAS)**來自動發現SNN的最佳架構。Kim等人提出了SNASNet,能夠同時搜索前向和后向連接。Na等人開發了AutoSNN,一個脈沖感知的NAS框架,旨在有效探索已定義的節能搜索空間中的SNNs。Yan等人提出將候選架構編碼到無分支的脈沖超級網絡中,以應對長時間的搜索問題,并通過突觸操作(SynOps)感知優化來減少計算需求。
受Transformer網絡優異性能的啟發,研究人員提出將Transformer架構引入脈沖神經網絡(SNNs),以縮小最先進的人工神經網絡(ANNs)與SNNs之間的性能差距。隨著大型語言模型(LLMs)的成功,基于Transformer架構的深度SNNs研究已經成為神經形態計算領域的焦點。
1)基礎自注意力機制:早期的研究通常結合基于ANN的自注意力模塊和脈沖組件構建混合結構。例如,Mueller等人提出了一種使用Rueckauer等人轉換方法的脈沖Transformer。Zhang等人提出了用于基于事件的單目標跟蹤的脈沖Transformer,使用SNN進行特征提取,同時保留實值Transformer。同樣,Zhang等人開發了一種模型,將Transformer集成到連續脈沖流(由脈沖攝像機生成的)中以估計單目深度。然而,這些使用基礎自注意力機制的方法在充分利用SNNs的事件驅動特性以及減少資源消耗方面面臨挑戰。
2)脈沖自注意力機制:Zhou等人取得了突破,首次引入脈沖自注意力機制,并提出了一個框架,即Spikformer,用于構建具有Transformer架構的深度SNN。與基礎自注意力不同,脈沖自注意力(圖4)摒棄了復雜的softmax操作,后者難以用脈沖操作替代,而是對Query(Q)、Key(K)和Value(V)的脈沖形式執行矩陣點積。在ImageNet上,Spikformer使用Spikformer8-768架構和4個時間步達到了74.81%的準確率。然而,ANNs和SNNs之間仍然存在性能差距(Transformer-8-512的準確率為80.80%,而Spikformer-8-512的準確率為73.38%)。
一些研究進一步探索了脈沖Transformer中自注意力機制的實現。Yao等人引入了脈沖驅動Transformer和脈沖驅動自注意力(SDSA),該方法僅利用掩碼和加法操作來實現自注意力機制。Shi等人提出了雙脈沖自注意力機制(DSSA),它能夠高效處理多尺度特征圖并兼容SNN。Zhou等人開發了Q-K注意力機制,僅采用了兩種脈沖形式的組件:Query(Q)和Key(K)。
為增強脈沖Transformer的時空注意力機制,一些研究提出了時空自注意力機制。Xu等人提出了具有內在可塑性和時空注意力的去噪脈沖Transformer(DISTA),它結合了神經元級和網絡級的時空注意力機制。他們還引入了一個非線性去噪層,以減輕計算出的時空注意力圖中的噪聲信號。Wang等人開發了時空自注意力(STSA),使脈沖Transformer能夠從時間和空間域中捕獲特征。他們將時空相對位置偏差(STRPB)集成到他們的時空脈沖Transformer(STS-Transformer)中,以注入脈沖的時空位置信息。
為了利用頻率表示,Fang等人提出了脈沖小波Transformer(SWformer)。該模型結合了負脈沖和一個頻率感知的token混合器(FATM),旨在有效提取空間和頻率特征。
3)提升性能:為了提高網絡性能,一些研究集中于優化網絡結構。Zhou等人提出了Spikingformer,它修改了脈沖元素級快捷方式,改用膜快捷方式,避免了整數脈沖。Zhou等人引入了ConvBN-MaxPooling-LIF(CML),以增強深度SNN中的下采樣模塊,與ConvBN-LIF-MaxPooling相比,促進了梯度反向傳播。為了進一步改進Spikformer,Zhou等人開發了Spikformer V2,結合了脈沖卷積干(SCS)。類似地,Li等人提出了用于patch嵌入的卷積Tokenizer(CT)模塊。在中,Yao等人引入了Spike-driven Transformer V2,并結合了一種元架構來提高性能和多功能性。Zhang等人提出了脈沖全局-局部融合Transformer(SGLFormer),設計用于高效處理全球和局部尺度的信息,并引入了一個新的最大池化模塊和分類頭。
4)降低復雜性:為減少復雜性,Wang等人提出了AutoST,這是一種無訓練的神經架構搜索方法,旨在識別最優的脈沖Transformer架構。通過強調浮點運算量(FLOPs),該方法提供了對模型效率和計算復雜性的標準化和客觀評估。Wang等人旨在通過用未參數化的線性變換(LTs)替代脈沖自注意力,減少Spikformer的時間復雜度,例如傅里葉和小波變換。
為了避免從頭訓練的高成本,一些研究采用ANN到SNN的轉換方法來構建脈沖Transformer。Wang等人提出基于ANN到SNN轉換構建脈沖Transformer,并結合量化剪切-移位。為了應對Transformer中的非線性機制(如自注意力和測試時歸一化),Jiang等人提出了時空近似(STA),通過引入新的脈沖操作符和層來近似ANN中的浮點值。
在本文中,我們回顧了開發大規模脈沖神經網絡的學習方法和架構范式,特別關注了新興的脈沖Transformer。通過深入探討構建深度脈沖神經網絡的最先進方法,本研究展示了大規模SNN在實現節能型機器智能系統方面的潛力。我們希望本研究能夠幫助研究人員有效掌握新興脈沖Transformer中使用的核心技術。我們的研究還識別了開發大規模脈沖神經網絡的關鍵挑戰,包括優化訓練算法、增強模型可擴展性等。這些挑戰需要更強大的算法、更大的模型以及對該領域的進一步探索。
文章轉自微信公眾號@算法進階