Spiking-YOLO : 前沿性研究,脈衝神經網絡在目標檢測的首次嘗試 | AAAI 2020

論文提出Spiking-YOLO,是脈衝神經網絡在目標檢測領域的首次成功嘗試,實現了與卷積神經網絡至關的性能,而能源消耗極低。論文內容新穎,比較前沿,推薦給你們閱讀

來源:曉飛的算法工程筆記 公衆號

論文: Spiking-YOLO: Spiking Neural Network for Energy-Efficient Object Detection算法

Introduction


  脈衝神經網絡(Spiking neural network, SNN)將脈衝神經元做爲計算單元,可以模仿人類大腦的信息編碼和處理過程。不一樣於CNN使用具體的值(continuous)進行信息傳遞,SNN經過脈衝序列(discrete)中每一個脈衝發射時間(temporal)進行信息的傳遞,可以提供稀疏但強大的計算能力。脈衝神經元將輸入累積到膜電壓,當達到具體閾值時進行脈衝發射,可以進行事件驅動式計算。因爲脈衝事件的稀疏性以及事件驅動的計算形式,SNN能提供卓越的能源利用效率,是神經形態結構的首選神經網絡
  儘管SNN有不少好處,但目前僅能處理相對簡單的任務,因爲神經元複雜的動態性以及不可導的操做,暫時沒有一個可擴展的訓練方法。DNN-to-SNN是近期普遍的SNN訓練方法,該方法將目標DNN轉化成SNN的中間DNN網絡進行訓練,而後轉成SNN並複用其訓練的參數,在小數據集分類上能達到不錯的性能,可是在大數據集上分類結果不太理想
  論文打算使用DNN-to-SNN轉化方法將SNN應用到更復雜的目標檢測領域中,圖片分類只須要選擇分類就好,而目標檢測則須要神經網絡進行高度準確的數字預測,難不少。在深刻分析後,論文實現YOLO的轉換主要面臨如下兩個問題:spring

  • 經常使用的SNN歸一化方法過於低效,致使脈衝發射頻率太低。因爲SNN須要設定閾值進行脈衝發射,因此要對權值進行歸一化,這樣有利於閾值的設定,而經常使用的SNN歸一化方法在目標檢測中顯得過於低效,後面會詳細闡述
  • 在SNN領域,沒有高效leaky-ReLU的實現,由於要將YOLO轉換爲SNN,YOLO中包含大量leaky-ReLU,這是很重要的結構,但目前尚未高效的轉換方法

  爲此,論文使用channel-wise歸一化(Channel-wise normalization)和閾值不平衡的有符號神經元(signed neuron with imbalanced threshold)來分別解決以上問題,搭建了基於SNN的目標檢測模型Spiking-YOLO,論文的貢獻總結以下:微信

  • 深度SNN在目標檢測領域的第一次嘗試
  • channel-wise歸一化,深度SNN的細粒度歸一化方法,使得多個神經元更高但仍然合適的頻率發射脈衝,進而讓SNN信息傳遞更快且更準確
  • 閾值不平衡的有符號神經元,提出leaky-ReLU在SNN領域的高效實現,在神經芯片上也可以輕量級集成

SNN神經元簡述


  SNN使用脈衝序列進行神經元間的信息傳遞,IF(integrate-and-fire)神經元累積輸入$z$到膜電壓$V_{mem}$網絡

  第$l$層的第$j$個神經元的膜電壓計算如公式1,$\Theta_j^l(t)$爲脈衝,$V_{th}$爲臨界電壓,$z_k^l(t)$爲神經元的輸入機器學習

  $z_k^l(t)$由多個輸入累加,$w$和$b$爲權重和偏置函數

  當膜電壓$V_{mem}$大於臨界電壓$V_{th}$時產生脈衝$\Theta$,$U$爲單位階躍函數(unit step function),知足輸出1,不知足則輸出0。因爲SNN是事件驅動的,能源利用率至關高,但難以訓練是SNN在全部應用上的主要障礙性能

Methods


  論文直接使用DNN-to-SNN轉換方法將SNN應用到目標檢測中,發現性能降低得十分嚴重,在分析性能降低緣由後,得出兩個主要緣由:a) 大量神經元的脈衝發射頻率太低 b) SNN缺乏leaky-ReLU的高效實現學習

Channel-wise data-based normalization

  • Conventional normalization methods

  在SNN中,根據輸入的幅度產生脈衝序列進行無損的內容傳遞是極爲重要的。但在固定時間,激活過分或激活不足的神經元內將可能致使內容損失,這和臨界電壓$V_{th}$的設置有關。設置太高,神經元須要累積很長時間的電壓才能發射脈衝,相反則會過多地發射脈衝。發射頻率一般定義爲$\frac{N}{T}$,$N$爲$T$個timestep的脈衝發射總數,最大的發射率爲100%,即每一個timestep都發射脈衝 測試

  爲了防止神經元的激活過分和激活不足,權值和臨界電壓都須要精心地選擇。爲此,不少研究提出了歸一化的方法,好比經常使用的Layer-wise normalization(layer-norm)。該方法經過該層的最大化激活值來歸一化層的權值,如公式4,$w$和$b$爲權重,$\lambda$爲輸出特徵圖最大值。通過歸一化後,神經元的輸出就歸一到$[0,1]$,方便設定臨界電壓。因爲最大激活值$\lambda$從訓練集獲得的,因此測試集和訓練集須要有相同的分佈,但論文實驗發現這種常規的歸一化方法在目標檢測任務上會致使明顯的性能降低大數據

  • Analysis of layer-norm limitation

  圖1展現了經過layer-norm後的各層每一個channel的最大激活值,藍色和紅色的線分別爲每層的平均激活值和最小激活值。能夠看到每層的歸一化後的激活值誤差較大,整體而言,layer-norm使得神經元的channel偏向激活不足,這在僅需選擇分類的圖片分類任務是不被察覺的,但對於須要預測準確值的檢測任務的迴歸則不同。好比傳遞0.7,則須要在10個timestep脈衝7次,0.007則須要在1000timestep脈衝7次。當tempstep自己就不多時,太低的發射率可能會因發射不到足夠的脈衝而致使信息丟失

  • Proposed normalization method

  論文提出更細力度的歸一化方法,channel-wise normalization(channel-norm),該方法在每層的channel維度上,使用最大激活值對權值進行歸一化

  channel-wise歸一化方法如公式5,$i$和$j$爲維度下標,$l$層權值$w$經過在每一個channel使用最大激活值$\lambda_j^l$進行歸一化,該值依然是從訓練集計算的。對於非首層中,歸一化的激活值必須乘上$\lambda_i^{l-1}$來將輸入還原爲上一層歸一化前的值,再進行本層的歸一化,否則傳遞的信息會愈來愈小

  具體的邏輯如圖2和算法1,channel-wise的歸一化方法可以消除激活值特別小的問題,即獲得更高但合適的發射頻率,在短期內也能準確地傳遞信息

  • Analysis of the improved firing rate

  如圖3所示,對於channel-norm,大多數的神經元能接近80%的發射率,而對於layer-norm,大多數的神經元的發射率在0到3.5%之間,這明顯代表channel-norm避免了太小的激活值使得更多神經發射頻率更高且合適

  另外從圖4能夠看出,channel-norm在大多數的channel上能產生更高的發射頻率,特別在channel 2

  圖5則隨機採樣了20個神經元,記錄其脈衝活動,使用channel-norm使得大多數神經元可以更有規律地發射脈衝
  從上面的分析能夠看出,channle-norm可以避免太小的歸一化激活值,從而保持較高的脈衝發射頻率,使得神經元可以在短期內準確地傳遞信息,是深度SNN在解決更高級的機器學習問題的一種可行解決方案

Signed neuron featuring imbalanced threshold

  • Limitation of leaky-ReLU implementation in SNNs

  ReLU是最經常使用的激活函數,保留正值而去掉全部的負值,目前的DNN-to-SNN方法都專一於IF神經元與ReLU間的轉換,忽略了激活函數中的負值,而在Tiny-YOLO中,負值激活佔了51%。leaky-ReLU是目前最經常使用的激活,經過leakage項來保留負值$f(x)=\alpha x$,$\alpha$通常爲0.01,但目前尚未準確且高效的SNN實現方法。此前有研究提出負臨界電壓(-1),使得能夠存在正負激活,而後在這基礎乘以$\alpha$來轉換leaky-ReLU,但這違背了生物學(脈衝是離散信號),而在神經芯片上也需額外的模塊進行浮點運算

  • The notion of imbalanced threshold

  論文提出閾值不平衡的有符號神經元(IBT),在負值區域使用臨界電壓$V_{th,neg}=-\frac{V_{th}}{\alpha}$,不只能夠傳遞正負激活值,保持離散型,還能夠高效和準確地仿照leaky-ReLU的leakage項

  如圖6所示,假設$V_{th,pos}=1V$,在$\alpha=0.1$時,$V_{th,neg}=-10V$,膜電壓須要積累多10倍來發射負激活,相似於leaky-ReLU

Evaluation


Spiking-YOLO detection results

  實驗的目的是無損地將Tiny-YOLO的轉移爲SNN,結果如圖7所示,使用channel-norm和IBT能有效地提高性能,且使用的timestep更少

  論文嘗試了不一樣的解碼方式,分別爲膜電壓$V_{mem}$和脈衝數$V_{mem}/V_{th}$,因爲脈衝數的餘數要捨棄,這會帶來偏差和信息損失,因此基於膜電壓進行解壓會更準確

Spiking-YOLO energy efficiency

  DNN主要使用相乘累積(multiply-accumulate , MAC)操做,而SNN則主要是累積操做(accumulate, AC),由於脈衝是二值的(1或-1),當接受到脈衝時,不用實時乘權重就能夠知道結果。32-bit浮點型MAC和AC分別須要3.6pJ和0.9pJ,而32-bit整數型MAC和AC分別爲3.2pJ和0.1pJ。如圖9所示,無論使用哪一種歸一化方法,Spiking-YOLO的計算耗能僅爲Tiny-YOLO的1/2000倍,能源利用十分高效

  論文在實際設備上對比了Spiking-YOLO(TrueNorth chip)和Tiny-YOLO(Titan V100),由於channel-norm的發射率較高且合適,因此使用了更少的timestep,能源消耗最少

Conclusion


  論文提出Spiking-YOLO,是脈衝神經網絡在目標檢測領域的首次成功嘗試,實現了與卷積神經網絡至關的性能,而能源消耗極低。論文內容新穎,比較前沿,推薦給你們閱讀

參考內容



若是本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】

work-life balance.

相關文章
相關標籤/搜索