尚瑛杰,董麗亞,何 虎
(清華大學 微電子與納電子學系,北京 100084)
脈沖神經網絡(Spiking Neuron Network,SNN)被稱為第三代人工神經網絡,它在原理上更加接近生物神經網絡[1],具有低計算量、低功耗和高維度等特點,是實現類腦計算和強人工智能的重要途徑[2],近年來受到了越來越多的關注。但是,由于缺乏有效的學習算法,脈沖神經網絡的研究還處在探索階段。
目前,脈沖神經網絡的學習算法主要有基于脈沖時間依賴型可塑性規則(Spike Timing Dependent Plasticity,STDP)的無監督學習算法、基于Widrow-Hoff推導的學習算法和基于反向傳播的學習算法[3-5]。
STDP規則描述了脈沖神經網絡中連接前后2個神經元之間的因果關系,可以實現權值的無監督訓練,但基于STDP規則的學習,通常僅適用于網絡的局部學習,在大規模網絡中,存在計算量大和學習效率低等問題,需要結合其他規則進行使用[6-7]。其中,文獻[8]采用STDP、側抑制和內在可塑性等多種規則,優點是實現了脈沖神經網絡的無監督訓練,在MNIST測試集上的識別準確率為95%,缺點是算法規則復雜,不具備通用性,無法識別更為復雜的圖片。
在基于Widrow-Hoff推導的學習算法中,最常用的是利用遠程監督學習規則(Remote Supervised Method,ReSuMe)設計的算法[9-10]。文獻[11]提出一種改進的ReSuMe算法,可以實現有效的監督式學習,提高了網絡的局部學習精度。但是,這種學習算法對網絡中間層監督信號的定義不明確,不適用于多層脈沖神經網絡,因此,通常僅用于處理小規模網絡,文中也未進行相關數據集識別實驗。
基于反向傳播的學習算法,也是目前脈沖神經網絡領域中關注程度較高的一種算法[12]。它仿照傳統反向傳播算法的原理,利用數學技巧回避了離散脈沖序列無法求導的問題。文獻[13]提出一種新的方法,將神經元的膜電位看作是可微信號,并將脈沖時間的不連續點看作是噪聲,求導結果直接作用于脈沖信號和膜電位,該方法的優點在于成功地將反向傳播算法應用到脈沖神經網絡中,MNIST測試集上的識別準確率為98.66%,但其改變了脈沖神經網絡工作機制,并且計算量大,仿真實施難度大。文獻[14]將反向傳播算法與STDP規則相結合,并使用差分操作代替微分操作,從而實現了脈沖神經網絡的反向傳播算法,在MNIST測試集上的識別準確率為97.20%,但該方法需要嚴格控制神經元的激活狀態,保證它們每個仿真周期只發射一個脈沖,否則算法將失效。
脈沖神經網絡是進行復雜時空信息處理的有效工具,但其學習算法存在計算量大、學習效率低、多層網絡收斂困難和適用性弱等缺陷,導致脈沖神經網絡無法大規模應用。然而,反向傳播網絡作為第二代神經網絡,由于學習算法相對完善,已被廣泛應用在人工智能領域。為此,本文設計一種遷移學習算法,將第二代神經網絡的訓練結果直接遷移到第三代神經網絡中,以彌補脈沖神經網絡學習算法的不足,發揮脈沖神經網絡低功耗的優勢。
神經元是神經網絡最基礎的元素,而脈沖神經網絡由于工作模式的不同,脈沖神經元模型也與傳統的神經元模型有著明顯的差別,其中最為常用的是泄漏積分放電模型(Leaky Integrate and Fire,LIF)[15-16],如圖1所示。

圖1 LIF模型和等效電路示意圖Fig.1 Schematic diagram of LIF model and equivalent circuit
在LIF模型中,當輸入端接收到脈沖信號時,其膜電位會不斷升高,如果膜電位達到激發閾值,則會在輸出端產生一個脈沖信號,同時將神經元膜電位重置;如果長時間沒有輸入脈沖信號或者輸入脈沖信號較弱,LIF神經元的膜電位會緩慢降低至初始電位[17]。因此,LIF模型可以等效為一個帶有偏置電壓源的電阻-電容并聯模型。
脈沖神經網絡在結構方面與反向傳播網絡類似,由脈沖神經元及其連接組成。但是脈沖神經網絡的輸入輸出不是實數值,而是離散的脈沖信號,網絡中信息的表達、傳輸和處理也都是基于脈沖序列進行的[18-19],如圖2所示。

圖2 脈沖神經網絡模型Fig.2 Model of spiking neuron network
NEST是一款面向脈沖神經網絡的開源模擬器,其提供了大量的神經元模型和突觸模型,避免了繁瑣的數學建模工作。同時,脈沖神經元模型的設計參考了生物學相關研究成果,具有很強的生物可解釋性。本文基于NEST模擬器,使用Python編程,提供了快速搭建脈沖神經網絡的軟件環境。
遷移學習算法的整體步驟為:構建相同結構的反向傳播網絡和脈沖神經網絡,利用反向傳播網絡成熟的算法和仿真環境對權值進行訓練,然后通過權值映射關系將訓練好的權值參數遷移到脈沖神經網絡中。脈沖神經網絡只完成推理工作,不涉及訓練過程。
遷移學習算法包含反向傳播網絡訓練算法、脈沖編碼方式、自適應權值映射關系、脈沖神經網絡推理算法4個關鍵性部分。
反向傳播網絡的訓練是基于TensorFlow框架實現的,并采用了GPU加速,具有參數設定簡單、網絡結構設計靈活和仿真速度快等特點。同時,算法采用了指數衰減型學習率解決局部最優問題,運用正則化避免過擬合問題,使用滑動平均模型增強算法魯棒性。在網絡充分訓練之后,將網絡權值存入csv文件,具體的算法步驟如下:
步驟1讀取數據和配置參數,轉步驟2。
步驟2根據配置參數構建網絡結構,轉步驟3。
步驟3通過反向傳播算法和梯度下降算法進行網絡權值訓練,轉步驟4。
步驟4網絡識別準確率是否達到期望值或達到最大迭代次數,若是則轉步驟5;否則轉步驟3。
步驟5將網絡權值存入weights.csv文件,結束。
由于脈沖神經網絡的信息載體是脈沖序列,而非實數值,因此需要設計合理的脈沖編碼方式,將實數值轉換為脈沖序列[20]。本文設計了線性編碼、指數編碼、反函數編碼和冪函數編碼4種脈沖編碼方式。
為方便表述,本文做如下規定:將輸入圖片記為D,輸入圖片中的像素記為d,輸入數據列表D中最大元素記為dmax,輸入數據列表D中最小元素記為dmin,脈沖序列起點時間記為Tmin,終點時間記為Tmax,轉換得到的脈沖序列記為S(d)。
為避免奇異樣本數據影響網絡收斂,在脈沖編碼之前需要先對數據進行歸一化操作,本文中使用的是min-max標準歸一化方法,如式(1)所示:
(1)
線性編碼如式(2)所示:
S(d)=Tmax-R(d)×(Tmax-Tmin)
(2)
指數編碼如式(3)所示:
S(d)=(0.5R(d)-1-1)×(Tmax-Tmin)+Tmin
(3)
反函數編碼如式(4)所示:
(4)
冪函數編碼如式(5)所示:
S(d)=(R(d)-1)2×(Tmax-Tmin)+Tmin
(5)
上述的4種脈沖編碼方式,都是將輸入數據的數值轉換為脈沖時間,而具體的脈沖形式則通過NEST模擬器中的脈沖發生器模型生成。在4種脈沖編碼方式下,像素值與脈沖時間轉換曲線如圖3所示。

圖3 4種脈沖編碼方式的像素值與脈沖時間轉換對比Fig.3 Comparison of pixel value and pulse timeconversion of four spiking encoding modes
從圖3可以看出,在4種脈沖編碼方式下,像素值與脈沖時間呈負相關關系,這種設計方式是考慮到一般圖片中背景的像素值較小。像素值小的部分,對應的脈沖時間靠后。而在脈沖神經網絡中,時間靠后的脈沖信號會因神經元漏電而消失,或無法在仿真結束之前到達輸出層,從而被自動濾除,有助于特征提取。
由于工作原理的不同,反向傳播網絡的權值不能直接遷移到脈沖神經網絡中,否則會引發參數失配問題,即:如果權值過小,脈沖神經元達不到激發閾值,會導致脈沖信號無法有效傳導到輸出層;如果權值過大,脈沖神經元激發過于頻繁,會導致仿真計算負擔重和模型參數越界等問題,同時也不利于發揮脈沖神經網絡低功耗特性。
因此,反向傳播網絡權值需要乘以一個縮放因子,才可以合理地映射到脈沖神經網絡中。將縮放因子記為A,網絡輸出層神經元個數記Nout,縮放因子的自適應調整算法步驟如下:
步驟1縮放因子A初始化為1,讀取weights.csv文件中權值,記為變量Wweight,并設置2個輔助變量Astart=0,Aend=A,轉步驟2。
步驟2Wweight=Wweight×A,根據Wweight變量設置脈沖神經網絡的權值,轉步驟3。
步驟3每類圖片隨機選取一張作為輸入,每張圖片仿真一次,并記錄仿真后輸出層脈沖數量。最后,將輸出層脈沖數量對仿真次數求均值,記為Nspike,轉步驟4。
步驟4如果Nout 縮放因子A經過自適應算法的調整,能夠保證反向傳播網絡的權值按照合適的縮放比例映射到脈沖神經網絡中。 在定義了脈沖編碼格式和自適應權值映射關系之后,就可以利用反向傳播的訓練結果,在脈沖神經網絡中完成推理功能。脈沖神經網絡的推理算法步驟如下: 步驟1讀取數據和配置參數,轉步驟2。 步驟2根據配置參數構建網絡結構,并根據權值映射關系,將反向傳播網絡訓練好的權值加載到脈沖神經網絡對應的連接中,轉步驟3。 步驟3調整縮放因子A,并更新脈沖神經網絡權值,轉步驟4。 步驟4開啟仿真,檢測每個輸出神經元發出的脈沖數量,脈沖數量最多的神經元所代表的類別即為最終的輸出結果。 軟件框架主要由基于TensorFlow的反向傳播網絡訓練和基于NEST模擬器的脈沖神經網絡推理兩部分構成。 基于TensorFlow的反向傳播網絡訓練部分的軟件框架如圖4所示。 圖4 反向傳播網絡訓練框架Fig.4 Training framework of back propagation network 基于TensorFlow的反向傳播網絡訓練部分的軟件框架由以下內容組成: 1)配置文件:網絡參數配置文件提供了網絡層數、網絡層尺寸和激活函數等信息;算法參數配置文件提供了損失函數、學習率、滑動平均等操作的相關參數;系統參數配置文件則提供TensorFlow的相關配置信息。 2)數據集:提供訓練和推理所用的數據集,并提供相應的數據集讀取格式。 3)反向傳播網絡訓練模塊:根據配置文件構建網絡結構,并結合用戶的參數設置,調用TensorFlow完成網絡的訓練任務。 4)權值文件:將訓練好的網絡權值以csv文件的格式進行存儲。 基于NEST模擬器的脈沖神經網絡推理部分的軟件框架如圖5所示。 圖5 脈沖神經網絡推理框架Fig.5 Inference framework of spiking neuron network 基于NEST模擬器的脈沖神經網絡推理部分的軟件框架由以下內容組成: 1)配置文件:網絡參數配置文件提供了網絡層數、網絡層尺寸和神經元模型等信息;算法參數配置文件提供了脈沖轉換函數、脈沖序列時間區間和仿真周期等參數;系統參數配置文件則提供NEST模擬器相關配置信息。 2)數據集:提供推理所用的數據集,將數據經過脈沖轉換器編碼成為脈沖信號,提供給脈沖神經網絡進行仿真。 3)權值文件:讀取訓練好的網絡權值,并乘以縮放因子A,然后載入到脈沖神經網絡的連接中。 4)脈沖神經網絡推理模塊:調用NEST模擬器,完成脈沖神經網絡的推理功能,并將分類結果輸出。 在多層脈沖神經網絡中,為驗證遷移學習算法和軟件框架的有效性,基于本文設計的軟件框架,搭建了遷移學習算法的仿真環境,并使用兩層全連接網絡,對MNIST手寫體數字數據集進行了訓練和推理。在算法有效性驗證方面,為測試通用性,做了額外的實驗,使用LeNet-5網絡模型,對CIFAR-10數據集進行識別實驗。 為直觀展示圖片轉換為脈沖序列的過程,在實驗中將MNIST數據集中的一張圖片經過脈沖編碼后,送入輸入層,通過對輸入層每一個神經元的脈沖信號發射時間的記錄,將結果繪制成圖,如圖6所示。 圖6 圖片轉脈沖信號分布示意圖Fig.6 Schematic diagram of picture to pulsesignal distribution 在圖6中,左邊的MNIST圖片經過脈沖編碼,形成了如右邊所示脈沖信號分布。在脈沖信號分布圖中,橫軸為輸入層神經元,按照輸入層的順序,每個神經元對應一個刻度值;縱軸為脈沖時間,表示每一個輸入神經元發射脈沖的時刻,單位為仿真平臺的最小仿真周期。 遷移學習實驗共分為反向傳播網絡的訓練和脈沖神經網絡的推理2個主要步驟。另外,本文實驗采用MNIST和CIFAR-10兩種數據集。 4.2.1 MNIST數據集實驗 由于遷移算法要求反向傳播網絡和脈沖神經網絡必須具備相同的結構,本文實驗采用的反向傳播網絡和脈沖神經網絡均采用如下結構:輸入層尺寸為784,中間層尺寸為500,輸出層尺寸為10,如圖7所示。 圖7 MNIST識別實驗網絡結構Fig.7 Network structure of MNIST recognition experiment MNIST數據集實驗方法如下: 1)采用50 000張MNIST數據集圖片對反向傳播網絡進行訓練,訓練后的反向傳播網絡對10 000張MNIST測試集圖片的識別準確率達到了98.42%。 2)通過遷移學習算法,將反向傳播網絡權值通過自適應的映射關系,加載到脈沖神經網絡中。 在不同的編碼方式下,脈沖神經網絡對10 000張MNIST測試集圖片的識別準確率如表1所示。 表1 不同編碼方式下的MNIST識別準確率Table 1 MNIST recognition accuracy rate underdifferent encoding modes % 從表1可以看出,在不同的脈沖編碼方式下,脈沖神經網絡的識別準確率能夠在97.00%以上,其中線性編碼方式準確率最高,準確率為98.56%,甚至高于反向傳播網絡。在精度損失方面,4種編碼格式下的準確率損失都在1%以下。 4.2.2 CIFAR-10數據集實驗 為進一步驗證在不同數據集下算法的有效性,本文基于LeNet-5網絡模型,對10 000張CIFAR-10測試集進行了識別實驗。CIFAR-10數據集由動物照片和交通工具照片組成,圖像為彩色,并具有復雜的背景。在不同編碼格式下的識別結果如表2所示。 表2 不同編碼方式下的CIFAR-10識別準確率Table 2 CIFAR-10 recognition accuracy rate underdifferent encoding modes % 從表2可以看出,CIFAR-10數據集識別準確率最高能夠達到56.00%,精度損失為-9.65%。相比于MNIST數據集識別實驗,本文實驗在精度損失方面有所增大。這主要是由于在脈沖神經網絡中,CIFAR-10數據集圖片的背景產生了大量的脈沖序列,而目前采用的脈沖編碼方式過于簡單,無法有效濾除這部分無用的脈沖序列。因此,在不同的脈沖編碼方式下,算法損失精度有較大差異。對于該問題,可以通過設計更為精細的脈沖編碼方式進行解決,從而進一步提升識別準確率。但由于本文主要目的是證明算法的有效性,同時,更加精細的脈沖編碼方式仍需要大量研究工作,這也是未來工作的主要內容之一,因此本文不做進一步展開。 綜上所述,通過MNIST數據集和CIFAR-10數據集的識別實驗,證明了本文算法的有效性,表明該算法能夠實現反向傳播網絡到脈沖神經網絡的遷移學習,并且保證精度損失在可接受范圍內。 為驗證脈沖神經網絡的低功耗特性,本文實驗基于LIF模型的工作原理和相關參數,對脈沖神經網絡的功耗進行了估算。 由LIF模型的工作原理可知,神經元發射一個脈沖信號所消耗的能量可以通過電容上電壓變化進行估算,如式(6)所示: (6) 表3 LIF神經元模型參數Table 3 LIF neuron model parameters 根據上述計算關系,脈沖神經網絡中神經元發射一個脈沖信號的能耗為0.234 375 pJ,而網絡的功耗計算方式如式(7)所示: P=Rimage×Nspike×W (7) 其中,P為網絡的功耗,Rimage為網絡對圖片的識別速率,Nspike為平均每張圖片識別所需要發射的脈沖數量,W為發射一個脈沖所需要消耗的能量。 本文在訓練反向傳播網絡時,采用的GPU型號為NVIDIA Quadro K2200,對MNIST數據集識別速率約為200 000張/s,功耗為60 μW。為方便功耗對比,脈沖神經網絡中的識別速率也假定為200 000張/s。通過對10 000張MNIST數據集的識別實驗,在脈沖神經網絡中,統計了識別每張圖片需要發射的脈沖數量的平均數,并估算網絡功耗,結果如表4所示。 表4 脈沖神經網絡MNIST識別功耗估算Table 4 Estimation of spiking neuron network MNISTrecognition power estimation 從表4數據可以看出,在200 000張/s的識別速率下,脈沖神經網絡對MNIST數據集的識別功耗僅為微瓦級別,充分證明了本文設計的脈沖神經網絡的低功耗特性。 本文設計一種自適應權值映射關系的遷移學習算法。該算法通過融合反向傳播網絡和脈沖神經網絡的優勢,能夠有效解決多層脈沖神經網絡訓練收斂困難的問題。實驗結果表明,訓練后的脈沖神經網絡對10 000張MNIST測試集圖片的識別準確率達到98.56%,對10 000張CIFAR-10測試集圖片的識別準確率達到56.00%,且在以200 000張/s的速率對MNIST圖片進行識別的情況下,估算功耗在10 μW左右。本文設計的軟件框架能夠滿足遷移學習算法的仿真需求,GPU加速功能保證了網絡訓練的效率。下一步將繼續優化遷移學習算法,并將其應用范圍向視頻、語音等方面進行拓展。2.4 脈沖神經網絡推理算法
3 軟件框架


4 實驗結果與分析
4.1 脈沖序列轉換實驗

4.2 遷移學習算法有效性實驗



4.3 脈沖神經網絡低功耗評估



5 結束語