SNN論文閱讀筆記(部分有code)

1 SLAYER: Spike Layer Error Reassignment in Time。

Sumit Bam Shrestha, Garrick Orchard (NIPS,2018)

paper code

SLAYER是NUS提出的針對SNN的bp演算法,且作者也提供了在SLAYER的基礎上搭建FC層和CNN結構的程式碼(需要CUDA支援),使用 文件也在這裡。如果要在WIN 10上跑的話可參考這裡,或者參考原github page上提的issue。論文裡的神經元模型用的就是簡單的SRM(學過訊號與系統的都應該很熟悉了)。

具體的bp演算法與pipeline就不在此贅述了,請參考原文。

本文demo跑了的資料集有MNSIT,NMNIST,DVS,TDIGITS。原文中的benchmark:

脈衝神經網路的一點小總結(學習中)

2 Mastering the Output Frequency in Spiking Neural Networks。

Pierre Falez, Pierre Tirilly, Ioan Marius Bilasco, Philippe Devienne, and Pierre Boulet(IJCNN,2018)

paper

這篇論文提出了三個機制來解決多層脈衝神經網路之中神經元輸出頻率遞減的問題。如圖:

脈衝神經網路的一點小總結(學習中)

這三個機制分別是:

1.

提出了一個新的頻率閾值控制方法TFT(Target Frequency Threshold adaptation)

2.

使用Binary coding的方法進行編碼

3.

使用Mirrored STDP來作為Learning rule。

文中提到的幾個點:

1.

相對於業界常用的LAT(leaky adaptive threshold),TFT確實能讓網路層數變深的同時,讓頻率的衰減沒那麼劇烈。但是高的頻率也意味著更少的衝激會被啟用,丟失了影象的資訊,從而導致了識別率的降低。

2.

為了彌補TFT識別率的降低,作者進而提出了Binary Coding的方法。Binary Coding摒棄了以時間或者頻率來作為資訊的Coding模式,而是隻採用衝激在一個時間段內的存在或者消失來作為資訊。Mirrored STDP 這個演算法不是這篇文章原創的,文章沒有做具體原理介紹和解釋。

這篇文章提出的整個模型只跑了傳統的MNIST資料集,因為這種資料集的畫素值本來就偏二值化,這種模型在一些較大的資料集上表現的效果略差,文章沒有列出來。文章在結尾提到了在SNN中也許使用另一些二值化的模型(比如使用二值化的權重和二值化的啟用單元)能使得網路更深,效果也更好,但是這篇文章沒有探索。

3 Exploring the Connection Between Binary and Spiking Neural Networks。

Sen Lu, Abhronil Sengupta (Front。 Neurosci, 2020)

paper code

這篇文章講的是BNN和SNN的聯絡。同時也提出了一些能夠減少神經網路的延時(inference latency——temperal coding的通病)的辦法,資料集用的是cifar100和imagenet。用了ANN到SNN的conversion,用一些最佳化方法也降低延遲了。神經元的激發和突觸的權重都是由二進位制來表示的。講了Relu是怎麼轉為IF模型的。模型裡沒有bias也沒有batch normalization。模型是微改的vgg16。

code只開放了一部分而已,用的是pytorch和bindsnet。

4 Convolutional Spiking Neural Networks for Spatio-Temperal Feature Extraction。

Ali Samazadeh Fatemeh, Sadat Tabatabaei Far et al。

paper code

這篇文章使用CSNN來進行時間和空間上的特徵提取。提出了一個 shallow convolutional snn且它的效果要比C3D ConvLstm之類的網路效果要好。提出了一個新的脈衝神經網路架構。訓練方法使用的是基於時空的bp演算法,沒用用到ANN-SNN conversion。用估計閾值函式解決了衝激函式不可微的問題。文中也提到了Batch Normolization 不可用,只能用dropout來進行正則化,而且這個新的Artitecture據說解決了梯度消失的問題。 在Cifar10-DVS資料集上表現非常好。

5 Enabling Deep Spiking Neural Networks With Hybrid Conversion and Spike Timing Dependent Backpropagation。

Nitin Rathi,Gopalakrishnan et al。(ICLR, 2020)

paper code

這篇文章使用了一個混合訓練的方法,主要還是解決了ANN-SNN conversion的高延遲問題。先使用了conversion把SNN轉化為ANN然後把它的權值和閾值拿來給後面的反向傳播用。進而,提出了STDB(使用的是surrogate gradient),能夠在達到相同的收斂速度的情況下使得epoches或者time steps更少。跑的資料集有Cifar-100,Cifar-10。用的經典的網路有VGG和Resnet。訓練神經元的時候並沒有用bias。因為他會間接的影響閾值電壓。Bias沒了就不能用Batch Normolization,所以也是使用Dropout來進行正則化。這篇文章還提到Max pooling會對下一層造成嚴重的資訊缺失,所以這篇文章用的是Average pooling。在STDB演算法中同一層的所用神經元的閾值電壓在訓練過程中都是不變的。STDB比較的是膜電位與閾值兩者來生成輸出的衝激的,但是Surrogate gradient會忽略之前的衝激輸入。

6 Low Latency Spiking ConvNets with Restricted Output Training and False Spike Inhibition。

Ruizhi Chen, Hong Ma, Peng Guo et al。(IJCNN, 2018)

paper

這篇文章也是解決Converted SNN的在分類中的延遲問題的,提出瞭解決延遲的辦法且保持了ACC。1。提出了一個 Restricted output training的方法來動態的進行權重的正則化 2。提出了一種false spike的檢測方法並去掉訓練過程中出現的false spike,提出了 false spike Inhibition來加速分類過程中的收斂速度。3。提出了一個Temperal max pooling的方法來適用於SNN。False Spike 在比較深層(7層往上)的SNN中才會表現得更明顯。這篇文章說是以往得權重正則化得方法導致了 Low firing rate 才進而導致了分類得延時。