Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing

 論文名:Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing
 中文名:權重、閾值權衡實現快速分類且高精度的脈衝神經網絡

摘要

例如ConvNets(卷積神經網絡)和 DBNs(深度信念網絡)代表了最先進的機器學習和計算機視覺問題。爲了克服深度網絡的大計算量成本,脈衝神經網絡最近被提出來了,並且提出了可用於脈衝神經網絡的特殊硬件,然而,由於ANNs(模擬神經網絡)沒有時間信息,所以轉換爲稀疏的脈衝發射型、事件驅動的SNNs會有精度損失
。這裏我們分析了脈衝神經元的發射率和閾值這些參數的選擇對ANNs轉換爲SNNs的影響,我們展示了一組優化技術來最小化轉換過程中的性能損失。這些技術產生的網絡優於之前在MNIST數據集上的表現最好的網絡,這裏的許多網絡都可以在20ms的仿真時間後接近最好的性能,這些技術包括在訓練期間使用修正後的零偏置的線性單元(如ReLUs)、使用一種新的權重正則化方法幫助正則化發射率。我們將ANNs轉換爲SNNs的方法可以實現低延遲、高精度,與之前的方法相比,它在沒有增加訓練時間的同時提高了性能。

1. Introduction

深度神經網絡目前在自然圖片分類上已經是最成功的結構,它們已經在諸如手寫數字識別、場景標註、CIFAR數據集和ImageNet數據集這樣的問題上實現了巨大的成功。但是伴隨的是網絡結構越來越深,對於實時檢測應用來說提出了新的挑戰——需要做特殊的硬件加速器來加速網絡推理的速度。脈衝神經網絡(SNNs)對於這種加速來說是一個重要的候選方法,在本篇論文中,我們將介紹對於深度脈衝神經網絡的新的優化方法,它可以使得脈衝神經網絡獲得比之前的脈衝方法更高的性能,同時實現了低延遲、更少的操作。

在最近這些年,脈衝神經網絡已經變成了一個相當活躍的研究方向。一方面的原因就是被構建更具有生物學意義的神經網絡所推動,另一方面就是大規模神經形態計算平臺的改進和提升,它是在特定的模擬或者數字硬件上優化類腦的脈衝計算。與在傳統CPUs或GPUs上跑神經網絡相比,神經形態平臺的功耗可能要低好幾個數量級,因爲它允許分佈式和異步基於事件驅動的計算,因此提高了可擴展性和減少了延遲。而進一步的來講,事件驅動型神經形態系統將計算資源聚焦於網絡目前活躍的部分,高效了節省了其他部分的功耗,因此在這樣的平臺上跑的大規模深度神經網絡是很有吸引力的,可能會支持在線學習。這些平臺理想地被來自神經形態傳感器的輸入所驅動,產生稀疏、一幀一幀的、精確定時的事件流,與基於幀的方法相比減少了延時。

脈衝神經網絡的訓練通常不使用基於脈衝的學習規則,而是先用反向傳播訓練一個深度神經網絡ANNs,然後將這個基於發射率的模型轉換爲由簡單的脈衝神經元組成的模型。理論已經證明了SNNs至少具有和ANNs相當的計算能力,但是實際上很難提出等效的方法來證明這點。目前的一種方法就是由“Realtime classification and sensor fusion with a spiking deep belief network”提出的方法訓練脈衝DBNs網絡——使用LIF(Leaky integrate-and-Fire)神經元的Siegert的平均發射率近似激活值。另一種方法,在“Mapping from frame-driven to framefree event-driven vision systems by low-rate rate coding and coincidence processing-application to feedforward convnets”這篇論文中提到的,需要對脈衝神經網絡中的泄露和絕對不應期的參數做微調。這兩種情況下,脈衝神經網絡都會在精度上有一定的損失。

最近,“Spiking deep convolutional neural networks for energy-efficient object recognition”提出了一種轉換的方法,它的表現比以前的方法都好,因爲它將脈衝和非脈衝網絡之間的特徵差異考慮了。主要挑戰就是對於脈衝神經元中的負值和偏置的表示,這個通過使用修正的線性單元(ReLUs)和將偏置設爲零解決了。同時,卷積網絡的最大池化操作被空間線性子採樣替代,同樣地轉換結果也有很小的損失。在這篇工作中,我們展示了這種微小損失的來源,並且展示了優化的幾種工具。我們發現如果SNNs以正確的方式驅動,接近無損的轉換是可能的,並且還可以進行非常快速的分類僅基於少量輸出峯值。

2. 神經網絡結構

A. 基於ReLU的前饋神經網絡

在全連接前饋神經網絡(FCNs)中,前層的所有神經元被完全連接到下層中,而沒有層內的連接。目前的競爭結果重新引起了對這種結果的興趣。對FCNs中的權重初始化是一個好的方案,它保留了錯誤梯度,正則化網絡來防止過擬合,其在標準數據集上的性能很高。另外最近的提出的Dropout和修正後的線性單元(ReLUs)也對結果比較好,ReLUs是一種非線性的激活函數,它被應用到輸入的權重和,可以被描述爲:
在這裏插入圖片描述
xix_{i}是神經元i的激活值,wijw_{ij}是前層的神經元j和本層的神經元i的連接權重,xjx_{j}是前層神經元j的輸出激活值。然後通過反向傳播算法更新網絡最小化損失函數。

B. 卷積神經網絡

ConvNets是一個多層的前饋結構,特徵檢測器採用的是簡單的卷積核。通常來講,卷積神經網絡是由卷積和空間下采樣層交替組成。這裏的卷積層產生了一組特徵圖,卷積計算如下:
在這裏插入圖片描述
卷積核用{Wk,k=1...n}\left \{ W^{k},k=1...n \right \}表示,{xk,k=1...n}\left \{ x^{k},k=1...n \right \}是每層的輸出特徵圖,ff爲非線性激活函數,xlx^{l}爲前層的激活輸出圖ll的激活單元,*符號代表的是2D的卷積。

C. Dropout

過擬合是大型深度神經網絡中的非常大的問題,避免這個問題的一個主要方法就是使用正則化,比如最近提出的dropout技術。Dropout在訓練過程中隨機丟棄輸入神經元,具體來講,它是用在激活函數中作爲編碼來隨機丟棄ReLU激活值,因此高效增加了整個網路的魯棒性,帶dropout的ReLU激活函數可以通過下式給出:
在這裏插入圖片描述
等式(1)加上了一個隨機的dropout比例drd_{r},在每個訓練迭代期間,對於每個神經元都有一個隨機決定,經驗上,drd_{r}通常取0.5。

3. 脈衝神經網絡

A. 背景

在傳統的ANN中,整個輸入向量同時被送入網絡,然後逐層處理,最終產生輸出值。在SNN中,輸入通常以事件流的形式傳入網絡,然後神經元在這個時間段內整合數據,產生脈衝用於將信息傳遞給後續層,最終驅動輸出神經元發射脈衝。這種方法有非常重要的優勢:輸入和輸出的“假象同步”可以實現,並且時變輸入可以更高效地處理,同時在特殊硬件上的更加高效的計算可以實現。

通常使用的脈衝神經元模型就是簡單的 integrate-and-fire(IF)模型,膜電位vmemv_{mem}的變化可以通過下式給出:
在這裏插入圖片描述
這裏的wiw_{i}是輸入突觸的權重,δ()\delta (\cdot )是衝擊函數,Si={ti0,ti1,...}S_{i}=\left \{ t_{i}^{0},t_{i}^{1},... \right \}包含了第i個突觸前神經元的脈衝發射時間,如果膜電位超過閾值vthrv_{thr},脈衝就會產生,膜電位被複位到靜息電位vresv_{res},在我們的仿真中,IF模型的連續時間描述可以被離散化到1ms的時間步長。

B. 脈衝網絡轉換

在之前的工作中,傳統的ANNs和脈衝實現之間存在着性能損失,這裏我們列出了一個框架來促進深度ANNs和SNNs之間的轉換,來減少在轉換期間的性能損失,在這裏使用到的轉換方法是在“Spiking deep convolutional neural networks for energy-efficient object recognition”中提出方法的擴展——添加了新穎的正則化方法、發射率和閾值的分析。

我們從使用ReLUs的ANNs和脈衝網絡的關係中開始觀察:

  • 首先,ReLU可以被看作沒有絕對不應期的IF神經元的發射率近似,因此ReLU的輸出應該和給定時間窗口內IF神經元發射的脈衝數量成比例。在訓練過程中使用ReLUs也是很有利的,因爲它的分段常量導數導致了權重以一種簡單的形式更新;
  • 第二點,對於分類任務來說,在輸出層的所有神經元的最大值非常重要,這允許整個發射率按照一個常量因子縮放,;
  • 最後,沒有偏置提供一個額外的參考值,神經元權重和閾值之間的相對比例是唯一重要的參數。

下面給出將ANNs轉換爲SNNs的幾點建議:

  1. 對於網絡中的所有單元使用ReLUs;
  2. 在訓練過程中將偏置設置爲0,並利用反向傳播更新網絡參數;
  3. 直接將ReLU網絡的權重映射爲IF單元網絡;
  4. 使用權重正則化來獲得接近無損的精度和更快的收斂;

上面的這些建議適用於全連接層和卷積層,一旦人工神經網絡中的ReLUs在訓練後被IF神經元取代,那麼在固定仿真期間的性能損失主要來源於三個因素:

  1. 單元沒有接受充分的輸入使得膜電位超過閾值,即發射率低於它原來應該達到的發射率;
  2. 在一個timestep內,ReLU模型接受了過多的輸入從而預測的輸出脈衝不止一個,這種情況發生,可能是因爲在單個timestep內輸入脈衝太多或者一些輸入權重比神經元閾值要高;
  3. 由於脈衝輸入的概率屬性,由於脈衝序列的不均勻性,一系列脈衝會過激活或者欠激活;

減小仿真的timestep可以減少每個timestep的輸入脈衝的數量,增加仿真時間可以有效避免不充分的激活。然而,我們要在脈衝閾值、輸入權重和輸入發射率之間找到一個權衡。具體來講,高的輸入閾值(或低的輸入權重)會減小過激活和非理想脈衝序列的錯誤,然而同樣增加了欠激活的風險,反之亦然。請注意脈衝閾值和輸入權重的比率決定了整合的數量,不用手動調整參數,在這裏我們提出了一個更加嚴格的方法來調整網絡權重——通過計算權重的縮放因子對權重歸一化從而減少了上面說的三個因素帶來的錯誤。

C. 權重正則化

這裏提出了兩種方法來對網絡的權重歸一化,並且確保激活值足夠小能夠防止ReLU過高估計輸出激活值。最安全、最保守的方法就是考慮所有可能的正的激活值,並且通過可能的最大激活值(同時也是下一層的輸入)對權重縮放。如果最大的正輸入僅僅對應單個脈衝,那麼網絡同一個神經元在一個timestep內至多發射一個脈衝。通過這樣做,脈衝神經網絡變得具有魯棒性——可以接受任意高的輸入發射率並且完全消除由於太多輸入而導致的轉換損失。不幸的是,這意味着爲了產生一個脈衝整合數據可能要花費很長時間。如果一個分類任務對性能要求比較高且可以接受更長的採樣時間,這種方法可能是一種尋找合適的權重縮放因子的方法。我們常將這種方法稱爲"model-based normalization",僞代碼如下"algorithm 1"所示。
在這裏插入圖片描述

第二種方法,訓練集也可以用來評估網絡中的激活值,而不是假設最大正激活值的最壞情況。在我們的實驗中,觀察到這個縮放因子相對保守,它的精度幾乎沒有損失,但是極大地縮短了整合時間。對於這個方法,在訓練完網絡後,訓練集前向傳播,我們將ReLU過後的激活值保存下來,接着,權重根據最大的可能激活值縮放,所以這種情況下也只會同時發射一個脈衝。另外,這種方法也需要將最大的輸入權重考慮進去(即它的縮放因子是激活值和權重絕對值的最大值),因爲如果不考慮權重的話還是有可能出現在一個timestep內需要發射多次脈衝,然而這不是一個強有力的保證——保證在測試集上也可以維持這種性能表現,訓練集應該代表測試集,同時結果顯示了這種方法是很有效的。我們將這種方法稱爲"data-based normalization",僞代碼如下"algorithm 2"所示。
在這裏插入圖片描述

4. 實驗設置

A. 數據集

本文選的是MNIST數據集,之前脈衝神經網絡實現手寫數字分類的最高精度爲 98.30%。

B. 結構

主要有兩種結構,第一種:

  1. 一個四層的全連接網絡,784-1200-1200-10;
  2. 訓練時將學習率固定爲1,動量爲0.5,batchsize爲100,50個epochs,50%的dropout,權重隨機初始化到 [-0.1, 0.1];
  3. 訓練集精度爲99.87%,測試集精度爲98.68%;

第二種網絡結構:

  1. 28x28-12c5-2s-64c5-2s-10o 的卷積網絡,輸入爲 28x28x1,後面跟的是12個5x5的卷積核、2x2的平均池化;
  2. 訓練時將學習率固定爲1,沒有動量,零偏置,batchsize爲50,50個epochs,50%的dropout;
  3. 99.19%的訓練集精度,99.14%的測試集精度;

上面描述的每一種訓練方法都被選擇來實現性能最好的ReLU網絡,權重被直接轉換爲脈衝IF網絡,我們做了一個空間搜索——輸入的頻率爲(25,50,100,200,400,1000HZ)、閾值爲(0.25,0.5,1,2,4,10,20),企圖找到最好的參數組合。同時將其與默認閾值、權重用algorithm1和2正則化的網絡進行比較。

對於FCN,model-based歸一化用於每一層的權重:每層權重通過algorithm1相乘,縮放因子爲0.08和0.045。不管是FCN還是ConvNets來說,model-based都沒有用於輸出層。不像model-based中縮放因子比例那麼小,data-based 歸一化的縮放因子爲0.37、1.25和0.8,僅對網絡權重做微調來使得它對於高的輸入頻率更魯棒。在ConvNet中,卷積層權重的縮放因子爲0.1657和0.1238(對於model-based),使用data-based,縮放因子爲0.1657、1.0021和1.19,輸出層的縮放因子大於1意味着權重按比例增加了,這是因爲訓練集的輸出太小的緣故。

C. 脈衝輸入

先將MNIST圖片的像素點都歸一化到0-1,然後基於這些像素點,對於每個像素點利用泊松分佈產生與像素值成正比的脈衝序列。

5. 結果

對於將傳統的ReLU網絡轉換爲SNNs的結果展示在Table 1中,如下:
在這裏插入圖片描述

A. 轉換和參數選擇

在這裏插入圖片描述

B. 精度

在這裏插入圖片描述

在這裏插入圖片描述

C. 收斂時間

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章