脈沖神經(jīng)網(wǎng)絡(luò)(Spiking neural network, SNN)將脈沖神經(jīng)元作為計(jì)算單元能夠模仿人類大腦的信息編碼和處理過程。不同于CNN使用具體的值(continuous)進(jìn)行信息傳遞SNN通過脈沖序列(discrete)中每個(gè)脈沖發(fā)射時(shí)間(temporal)進(jìn)行信息的傳遞能夠提供稀疏但強(qiáng)大的計(jì)算能力。脈沖神經(jīng)元將輸入累積到膜電壓當(dāng)達(dá)到具體閾值時(shí)進(jìn)行脈沖發(fā)射能夠進(jìn)行事件驅(qū)動(dòng)式計(jì)算。由于脈沖事件的稀疏性以及事件驅(qū)動(dòng)的計(jì)算形式SNN能提供卓越的能源利用效率是神經(jīng)形態(tài)結(jié)構(gòu)的首選神經(jīng)網(wǎng)絡(luò)
盡管SNN有很多好處但目前僅能處理相對簡單的任務(wù)由于神經(jīng)元復(fù)雜的動(dòng)態(tài)性以及不可導(dǎo)的操作暫時(shí)沒有一個(gè)可擴(kuò)展的訓(xùn)練方法。DNN-to-SNN是近期廣泛的SNN訓(xùn)練方法該方法將目標(biāo)DNN轉(zhuǎn)化成SNN的中間DNN網(wǎng)絡(luò)進(jìn)行訓(xùn)練然后轉(zhuǎn)成SNN并復(fù)用其訓(xùn)練的參數(shù)在小數(shù)據(jù)集分類上能達(dá)到不錯(cuò)的性能但是在大數(shù)據(jù)集上分類結(jié)果不太理想
論文打算使用DNN-to-SNN轉(zhuǎn)化方法將SNN應(yīng)用到更復(fù)雜的目標(biāo)檢測領(lǐng)域中圖片分類只需要選擇分類就好而目標(biāo)檢測則需要神經(jīng)網(wǎng)絡(luò)進(jìn)行高度準(zhǔn)確的數(shù)字預(yù)測難很多。在深入分析后論文實(shí)現(xiàn)YOLO的轉(zhuǎn)換主要面臨以下兩個(gè)問題
論文直接使用DNN-to-SNN轉(zhuǎn)換方法將SNN應(yīng)用到目標(biāo)檢測中發(fā)現(xiàn)性能下降得十分嚴(yán)重在分析性能下降原因后得出兩個(gè)主要原因a) 大量神經(jīng)元的脈沖發(fā)射頻率過低 b) SNN缺少leaky-ReLU的高效實(shí)現(xiàn)
在SNN中根據(jù)輸入的幅度產(chǎn)生脈沖序列進(jìn)行無損的內(nèi)容傳遞是極為重要的。但在固定時(shí)間激活過度或激活不足的神經(jīng)元內(nèi)將可能導(dǎo)致內(nèi)容損失這和臨界電壓V t h V_{th}Vth的設(shè)置有關(guān)。設(shè)置過高神經(jīng)元需要累積很長時(shí)間的電壓才能發(fā)射脈沖相反則會(huì)過多地發(fā)射脈沖。發(fā)射頻率通常定義為N T \frac{N}{T}TNN NN為T TT個(gè)timestep的脈沖發(fā)射總數(shù)最大的發(fā)射率為100%即每個(gè)timestep都發(fā)射脈沖
為了防止神經(jīng)元的激活過度和激活不足權(quán)值和臨界電壓都需要精心地選擇。為此很多研究提出了歸一化的方法比如常用的Layer-wise normalization(layer-norm)。該方法通過該層的最大化激活值來歸一化層的權(quán)值如公式4w ww和b bb為權(quán)重λ \lambdaλ為輸出特征圖最大值。經(jīng)過歸一化后神經(jīng)元的輸出就歸一到[ 0 , 1 ] [0,1][0,1]方便設(shè)定臨界電壓。由于最大激活值λ \lambdaλ從訓(xùn)練集得到的所以測試集和訓(xùn)練集需要有相同的分布但論文實(shí)驗(yàn)發(fā)現(xiàn)這種常規(guī)的歸一化方法在目標(biāo)檢測任務(wù)上會(huì)導(dǎo)致明顯的性能下降
圖1展示了通過layer-norm后的各層每個(gè)channel的最大激活值藍(lán)色和紅色的線分別為每層的平均激活值和最小激活值。可以看到每層的歸一化后的激活值偏差較大總體而言layer-norm使得神經(jīng)元的channel偏向激活不足這在僅需選擇分類的圖片分類任務(wù)是不被察覺的但對于需要預(yù)測準(zhǔn)確值的檢測任務(wù)的回歸則不一樣。比如傳遞0.7則需要在10個(gè)timestep脈沖7次0.007則需要在1000timestep脈沖7次。當(dāng)tempstep本身就很少時(shí)過低的發(fā)射率可能會(huì)因發(fā)射不到足夠的脈沖而導(dǎo)致信息丟失
從上面的分析可以看出channle-norm能夠避免過小的歸一化激活值從而保持較高的脈沖發(fā)射頻率使得神經(jīng)元能夠在短時(shí)間內(nèi)準(zhǔn)確地傳遞信息是深度SNN在解決更高級的機(jī)器學(xué)習(xí)問題的一種可行解決方案
論文提出Spiking-YOLO是脈沖神經(jīng)網(wǎng)絡(luò)在目標(biāo)檢測領(lǐng)域的首次成功嘗試實(shí)現(xiàn)了與卷積神經(jīng)網(wǎng)絡(luò)相當(dāng)?shù)男阅芏茉聪臉O低。論文內(nèi)容新穎比較前沿推薦給大家閱讀
離心弦:樓主知道這個(gè)模型是怎么預(yù)測的嗎?論文上說訓(xùn)練時(shí)預(yù)測出N個(gè)框,然后和ground true進(jìn)行二分圖的matching,將最佳matching的框和GT去求Loss。那預(yù)測時(shí)怎么辦?我模型預(yù)測出N個(gè)框,直接進(jìn)行得分篩選嗎?源碼里面也沒有預(yù)測的部分。