天天看點

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

論文名: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是一種非線性的激活函數,它被應用到輸入的權重和,可以被描述為:

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

x i x_{i} xi​是神經元i的激活值, w i j w_{ij} wij​是前層的神經元j和本層的神經元i的連接配接權重, x j x_{j} xj​是前層神經元j的輸出激活值。然後通過反向傳播算法更新網絡最小化損失函數。

B. 卷積神經網絡

ConvNets是一個多層的前饋結構,特征檢測器采用的是簡單的卷積核。通常來講,卷積神經網絡是由卷積和空間下采樣層交替組成。這裡的卷積層産生了一組特征圖,卷積計算如下:

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

卷積核用 { W k , k = 1... n } \left \{ W^{k},k=1...n \right \} {Wk,k=1...n}表示, { x k , k = 1... n } \left \{ x^{k},k=1...n \right \} {xk,k=1...n}是每層的輸出特征圖, f f f為非線性激活函數, x l x^{l} xl為前層的激活輸出圖 l l l的激活單元,*符号代表的是2D的卷積。

C. Dropout

過拟合是大型深度神經網絡中的非常大的問題,避免這個問題的一個主要方法就是使用正則化,比如最近提出的dropout技術。Dropout在訓練過程中随機丢棄輸入神經元,具體來講,它是用在激活函數中作為編碼來随機丢棄ReLU激活值,是以高效增加了整個網路的魯棒性,帶dropout的ReLU激活函數可以通過下式給出:

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

等式(1)加上了一個随機的dropout比例 d r d_{r} dr​,在每個訓練疊代期間,對于每個神經元都有一個随機決定,經驗上, d r d_{r} dr​通常取0.5。

3. 脈沖神經網絡

A. 背景

在傳統的ANN中,整個輸入向量同時被送入網絡,然後逐層處理,最終産生輸出值。在SNN中,輸入通常以事件流的形式傳入網絡,然後神經元在這個時間段内整合資料,産生脈沖用于将資訊傳遞給後續層,最終驅動輸出神經元發射脈沖。這種方法有非常重要的優勢:輸入和輸出的“假象同步”可以實作,并且時變輸入可以更高效地處理,同時在特殊硬體上的更加高效的計算可以實作。

通常使用的脈沖神經元模型就是簡單的 integrate-and-fire(IF)模型,膜電位 v m e m v_{mem} vmem​的變化可以通過下式給出:

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

這裡的 w i w_{i} wi​是輸入突觸的權重, δ ( ⋅ ) \delta (\cdot ) δ(⋅)是沖擊函數, S i = { t i 0 , t i 1 , . . . } S_{i}=\left \{ t_{i}^{0},t_{i}^{1},... \right \} Si​={ti0​,ti1​,...}包含了第i個突觸前神經元的脈沖發射時間,如果膜電位超過門檻值 v t h r v_{thr} vthr​,脈沖就會産生,膜電位被複位到靜息電位 v r e s v_{res} vres​,在我們的仿真中,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"所示。

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

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

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

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中,如下:

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

A. 轉換和參數選擇

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

B. 精度

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果
Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

C. 收斂時間

Fast-Classifying, High-Accuracy Spiking Deep Networks Through Weight and Threshold Balancing摘要1. Introduction2. 神經網絡結構3. 脈沖神經網絡4. 實驗設定5. 結果

繼續閱讀