脈衝神經網絡的模擬策略

一. 時鐘驅動模擬策略

1. 神經元模型的數值計算方法

一般來說,大多數生物系統建立的模型是微分方程形式,並且這些方程不能簡單地通過微積分的方法得到它們的解析表達式,即使有時候可以得到,其表達式也十分複雜,很難討論其具有的性質。因此,需要採用一定的數值方法進行求解,求出方程在某些離散點處的近似解,進而分析方程所具有的性質和規律。對於脈衝神經元模型的數值計算,一般採用歐拉或龍格-庫塔等數值方法進行近似求解。

1.1 歐拉方法

歐拉方法只有一階精度,具有明確的幾何解釋,但誤差較大,實用價值受到限制。它的基本思路是在小區間(x,x+h)(x,x+h)上用差商代替倒數,可表示爲:
yn+1=yn+hf(xn,yn)y_{n+1}=y_{n}+hf(x_{n},y_{n})

表示神經元模型的微分方程在給定初值(x0,y0)(x_{0},y_{0})後,代入微分方程可得該點處斜率,以h爲步長,求得x1=x0+hx_{1}=x_{0}+hy1y_{1}的值,將(x1,y1)(x_{1},y_{1})再代入微分方程求x2=x1+hx_{2}=x_{1}+h處的y2y_{2}值,如此反覆迭代,直至求出所要求的解。這種方法稱爲歐拉法或折線法,是目前最簡單的微分方程數值求解方法。

1.2 龍格-庫塔方法

一般來說,數值方法的精度越高,得到的解越接近真實值。龍格-庫塔方法是建立在泰勒公式基礎上的一種方法,其基本思想就是利用區間上若干點的導數的線性組合得到平均斜率,這樣就能得到更高階的精度,因此其解也就更加精確。歐拉方法只取了泰勒公式展開式的一次項,而龍格-庫塔方法則考慮了泰勒公式中的更多項,因此其求解精度更高,求解範圍更大,是一種比較好的微分方程數值計算方法。比較常用的是經典的龍格-庫塔公式,即具有四階精度的龍格-庫塔公式,表示如下:

yn+1=yn+h6(k1+2k2+3k3+k4)y_{n+1}=y_{n}+\frac{h}{6}(k_{1}+2k_{2}+3k_{3}+k_{4})
k1=f(xn,yn)k_{1}=f(x_{n},y_{n})
k2=f(xn+h2,yn+h2k1)k_{2}=f(x_{n}+\frac{h}{2},y_{n}+\frac{h}{2}k_{1})
k3=f(xn+h2,yn+h2k2)k_{3}=f(x_{n}+\frac{h}{2},y_{n}+\frac{h}{2}k_{2})
k1=f(xn+h,yn+hk3)k_{1}=f(x_{n}+h,y_{n}+hk_{3})

2. 時鐘驅動模擬的算法描述

在脈衝神經網絡的時鐘驅動模擬算法中,計算過程主要分爲神經元狀態變量更新和脈衝傳播兩個階段。首先,將所有神經元的狀態變量在每個時間步做同步更新:X(t)X(t+dt)X(t)\rightarrow X(t+dt),dt表示時間步長。如果神經元模型f爲非線性微分方程,一般採用歐拉或龍格-庫塔等數值方法進行求解;如果神經元f爲線性微分方程,則更新操作X(t)X(t+dt)X(t)\rightarrow X(t+dt)也是線性的,可通過在狀態變量X上乘以一個矩陣來實現:X(t+dt)=AX(t)X(t+dt)=AX(t),基於向量運算的科學計算軟件爲其模擬提供了有效的工具。然後將每個神經元的膜電位和閾值電位或峯值電位進行比較,當滿足條件時神經元發放脈衝,同時發放的脈衝沿着軸突向目標神經元傳播,並對突觸後神經元進行相應的狀態更新:Xgi(X)X\leftarrow g_{i}(X)。此外,對於Izhikevich與Integrate-and-Fire等需要進行復位操作的神經元模型來說,某些狀態變量需要復位操作。下表給出了脈衝神經網絡時鐘驅動模擬的基本算法。
在這裏插入圖片描述

3. 時鐘驅動算法的時間複雜度

時鐘驅動算法的計算時間主要由神經元狀態變量的更新和神經網絡中脈衝傳播兩部分構成。神經元狀態變量更新部分的計算時間主要由神經元的模型和選定的時間步長所決定,神經網絡中脈衝傳播部分的計算時間主要由傳遞的脈衝數量決定。

假設網絡模擬生物時間1s,對於含有N個神經元的脈衝神經網絡,神經元狀態變量需要更新 N/dtN/dt 次。假設CUC_{U}表示每次神經元更新狀態變量的計算時間,則神經元狀態更新階段總的計算時間爲:CU×NdtC_{U}\times \frac{N}{dt}

在神經網絡的模擬過程中,每個神經元的平均脈衝發放頻率爲F,則神經元平均發放 N×FN \times F個脈衝,突觸連接的平均值爲p(即每個脈衝需要向p個目標神經元傳遞),因此網絡中總共傳遞N×F×pN\times F \times p個脈衝。每次脈衝傳遞時,只需要將相應神經元狀態變量加上突觸權值即可,因此脈衝傳遞是一個簡單操作,其計算時間與神經元模型無關。假設CpC_{p}表示每個脈衝傳遞的計算時間,則脈衝傳播階段總的計算時間爲:Cp×N×F×pC_{p}\times N\times F\times p

脈衝神經網絡模擬生物的1s時間,將神經元狀態更新階段的計算時間和脈衝傳播階段的計算時間相加,可得到時鐘驅動算法總的計算時間爲:CU×Ndt+Cp×N×F×pC_{U}\times \frac{N}{dt}+C_{p}\times N\times F\times p,式中,神經元狀態變量的更新時間CUC_{U}和脈衝傳遞時間CpC_{p}相互獨立,一般情況下,CU>>CpC_{U}>>C_{p}

如果考慮神經網絡中脈衝的傳播延遲,則還需要加上管理脈衝傳播延遲的計算時間。Morrison等在時鐘驅動算法中引入循環數組來管理未來的脈衝事件,每個脈衝事件僅需一次插入和一次刪除操作,因此,管理脈衝傳播延遲的時間爲CD×N×F×pC_{D}\times N\times F\times p,式中,CDC_{D}表示循環數組的一次插入和一次刪除操作的計算時間,這個值比較小。

上面所討論的時鐘驅動模擬算法存在着明顯缺點:

  1. 無論對描述神經元狀態變量的微分方程進行近似的還是精確的求解,神經元脈衝的發放都限定在給定的離散時間點上;
  2. 由於閾值檢測都在每個時間區間的尾部進行,因此會遺失某些可能發放的脈衝;

針對時鐘驅動算法存在的問題,研究者提出瞭如下一些改進方法:

  1. 爲了改善脈衝的時間精度,可以採用數值插值的方法得到時間步長以內的脈衝時間。當假定脈衝傳播延遲的最小值大於給定的時間步長時,在每個時間區間內,神經元之間相互不影響,每個神經元可對其脈衝事件進行獨立的處理。在這種情況下,神經元狀態變量的更新就發生在每個脈衝到來的時刻,而不是每個時間步,因此,這是一種相對較爲精確的時鐘驅動模擬策略。
  2. 採用可變時間步長的積分解決方案,可以大大提高脈衝神經網絡的模擬精度。

二. 事件驅動模擬策略

由於時鐘驅動模擬策略是一種近似的模擬策略,神經元脈衝的發放與接受時間限定在給定的離散時間點上,這將嚴重影響神經網絡的動力學特性,特別是基於動態突觸的網絡模擬。事件驅動模擬算法正是利用了這一點,不是在每個時間步都計算整個網絡的狀態變化,而是在必要的時候,即當有一個脈衝輸入或者神經元將要發放脈衝時才需要計算神經元的狀態變量。因此,該類模擬策略也稱爲異步算法(asynchronous algorithm)。

在事件驅動算法中,神經網絡的模擬主要以脈衝事件爲處理核心,事件可以是網絡中神經元的脈衝發放,也可以是外部的脈衝輸入。通常外部的脈衝輸入是由泊松過程(Poisson process)描述的隨機脈衝。任何脈衝神經元模型的膜方程均可表示爲被動膜屬性(passive membrane property)、脈衝發放機制(spiking mechanism)以及突觸交互模式(synaptic interaction model)三部分,這些對脈衝神經網絡的模擬與實現具有重要影響。由於神經元之間的突觸交互模式並不完全相同,主要有瞬時突觸交互(instantaneous synaptic interaction)模式和非瞬時突觸交互(non-instantaneous synaptic interaction)模式兩種,其模擬方法也不完全相同。因此,可以根據神經元之間突觸交互模式的不同,分爲瞬時突觸交互模式和非瞬時突觸交互模式兩類事件驅動模擬策略。

1. 瞬時突觸交互模式

如果神經元之間的突觸爲瞬時電壓跳變模式,在脈衝到來時突觸後神經元的膜電位瞬時更新,脈衝的發放僅產生在突觸前脈衝到來的時間。在這種交互模式下,脈衝神經網絡的事件驅動模型比較容易實現。在事件驅動模擬算法實現時,可以將所有的事件按脈衝時間的先後次序存儲在一個隊列中。事件驅動模擬策略每次循環的一般處理步驟爲:

  1. 確定下一個事件,即提取隊列中的脈衝事件;
  2. 根據神經元模型的表達式更新該目標神經元的狀態變量,並增加相應的突觸權值;
  3. 檢查神經元是否滿足閾值條件,若神經元發放脈衝,對於每個突觸後神經元傳遞的脈衝事件被插入隊列中。

假設脈衝神經網絡的模擬週期爲T,下表給出了瞬時突觸交互模式的事件驅動模擬算法:
在這裏插入圖片描述

在脈衝神經網絡模擬過程中,爲了確定下一個脈衝事件,需要一個用於保存未來要發生事件的有序列表,這個列表存儲着每一個神經元的輸入的脈衝事件。在網絡中脈衝傳播延遲相同的情況下,對於脈衝事件的管理採用一般的先進先出隊列結構,FIFO隊列的數據結構容易實現,將傳遞的脈衝事件直接插入隊列尾部。此外,對於外部的隨機輸入脈衝事件,可用一個分開的FIFO隊列進行管理。但在脈衝神經網絡中脈衝傳播延遲時間不相同的情況下,隊列中的脈衝時間時序在當前無脈衝輸入的情況下式正確的,但如果有新的脈衝事件輸入時,需要根據脈衝事件的時間次序更新隊列。爲了得到神經網絡中脈衝事件的正確時序,一般採用優先隊列的方式進行管理。

2. 非瞬時突觸交互模式

基於電導的突觸交互(conductance-based synaptic interaction)和基於電流的突觸交互(current-based synaptic interaction)模型屬於神經元之間的非瞬時突觸交互。
在這裏插入圖片描述

3. 事件驅動算法的時間複雜度

在脈衝神經網絡的事件驅動模擬策略中,對於神經元每個脈衝的發放,在考慮平均向p個突觸後神經元傳遞脈衝的情況下,將其所需的操作可以分爲四個部分:

  1. 更新該神經元和突觸後目標神經元的狀態變量,需要p+1次更新,更新操作的計算時間取決於神經模型的複雜性;
  2. 更新該神經元和所有目標神經元的下次脈衝發放時間,需要p+1次更新,其計算時間同樣取決於神經模型的複雜性;
  3. 從隊列中提取最優先元素(即最早的脈衝發放時間),並更新與目標神經元脈衝發放時間對應的隊列元素,需要p+1次隊列操作,隊列操作的計算時間取決於所選擇的優先隊列實現方式;
  4. 如果考慮脈衝的傳播延遲,則每個傳入神經元的脈衝事件都要進行一次入隊和出隊的操作,需要2p次隊列操作。

由於脈衝神經網絡模擬1s,平均發放N×FN\times F個脈衝,因此,總的計算時間代價爲:(CU+CS+CQ)×N×F×p(C_{U}+C_{S}+C_{Q})\times N\times F\times p
式中,CUC_{U}表示神經元更新狀態變量的計算時間;CSC_{S}表示計算下次脈衝發放時間的計算時間;CQC_{Q}表示優先隊列操作的平均時間。

三. 電壓驅動模擬策略

神經元的信息處理涉及動作電位或脈衝,脈衝的精確定時計算對於實現脈衝神經網絡的數值模擬非常關鍵。脈衝神經網絡的時鐘驅動模擬策略具有通用性,可以應用於任何脈衝神經元模型。然而,當膜電位在一個時間步長期間跨過閾值兩次時(第一次從下向上方向,第二次是從上向下方向),則可能錯過脈衝發放事件。

事件驅動模擬策略能夠通過準確計算神經元的膜電位來實現脈衝發放時間的精確計算。然而,事件驅動模擬策略只適用於具有解析解的一些簡單模型,如Integrate-and-Fire神經元模型等。最近,Zheng等提出了電壓驅動的模擬策略,該方法不是將時間離散化,而是將膜電位離散化,在每個電壓步長(voltage step)進行神經元的狀態更新,並進行脈衝發放事件的檢測,該模擬策略可適用於任何脈衝神經模型。

1. 電壓驅動模擬的算法描述

電壓驅動模擬策略是基於神經元膜電位狀態空間離散化的脈衝神經網絡模擬方法,對於神經元膜電位的狀態空間,按照給定的電壓步長dV進行離散化,每一個離散化的電壓區間(voltage interval)爲Ri=[Vi,Vi+dV]R_{i}=[V_{i},V_{i}+dV]。此外,神經元的復位電壓區間(resetting interval)和閾值電位區間(threshold interval)分別表示爲Rreset=[,Vreset]R_{reset}=[-\infty,V_{reset}]Rthresh=[Vthresh,+]R_{thresh}=[V_{thresh},+\infty]。在基於電壓步長驅動的神經元狀態計算中,根據神經元模型中描述膜電位變化的函數f(V)f(V),可使用分段常數、線性或二次插值的方式來逼近神經元狀態空間的演化。隨着神經元內部狀態變量的變化和輸入的脈衝事件,在新的更新時間內,神經元膜電位可能發生的情況有:①從當前的電壓區間RiR_{i}返回到前一個電壓區間Ri1R_{i-1};②從當前的電壓區間RiR_{i}到達下一個電壓區間Ri+1R_{i+1}。當神經元膜電位到達閾值區間RthreshR_{thresh}時,神經元發放脈衝,並將神經元復位至復位區間RresetR_{reset}。電壓驅動模擬策略雖然只有固定的電壓步長,但時間步長自適應地變化,當神經元膜電位快速變化時,時間步長自動減小,能夠比較精確的計算脈衝發放時間,因此電壓驅動模擬可認爲是一種局部事件驅動方法。

電壓驅動模擬策略的重點在於計算神經元連續電壓區間的變化,以及到達一個新的電壓區間的時間,稱爲出口時間(exit time)。當神經元膜電位達到閾值區間時,出口時間就成爲脈衝發放時間。電壓驅動模擬策略包含初始化和事件處理兩個階段,這裏的事件包含神經元到達新的電壓區間及相應的出口時間。在初始化階段,計算網絡中每個神經元的出口時間,並根據出口時間的時序將事件插入一個優先隊列。在事件處理的每一個迭代過程中,具體步驟爲:

  1. 提取時序最小的事件;
  2. 如果事件中的電壓區間不是閾值區間,僅需更新相應神經元的狀態,計算到達新電壓區間的出口時間,並在優先隊列中插入事件;
  3. 如果神經元膜電位到達閾值區間,出口時間即爲脈衝發放時間,並將神經元狀態變量復位,在優先隊列中插入復位事件;
  4. 發放的脈衝向突觸後神經元傳遞,更新目標神經元的狀態及出口時間,同時更新隊列中的對應的事件。

在這裏插入圖片描述

2. 電壓驅動算法的時間複雜度

假設網絡模擬生物時間1s,對於含有N個神經元的脈衝神經網絡,在電壓驅動模擬策略中,通過神經元膜電位的離散化進行狀態變量的更新,神經元的一次脈衝發放是膜電位從最低電位變化到閾值電位VthreshV_{thresh}的過程,如果僅考慮神經元膜電位的上升變化,則離散化膜電位空間的計算次數爲VS/dVV_{S}/dV,其中VSV_{S}表示脈衝發放過程中膜電位變化的範圍。在神經網絡模擬過程中,神經元平均發放N×FN\times F個脈衝。假設CEC_{E}表示每次神經元新電壓區間更新及出口的計算時間,CQC_{Q}表示當電壓區間更新時插入優先隊列操作的平均時間,則網絡中神經元膜電位離散化階段總的計算時間複雜度爲:(CE+CQ)×N×F×VSdV(C_{E}+C_{Q})\times N\times F\times \frac{V_{S}}{dV}

此外,當神經元發放脈衝時,每個脈衝需要向p個目標神經元傳遞,因此,網絡中總共傳遞N×F×pN\times F\times p個脈衝。每次脈衝傳遞時,計算時間包括兩部分:①需要將相應的神經元狀態變量加上突觸權值,其計算時間與神經元模型無關,用CpC_{p}表示每個脈衝傳遞的計算時間;②計算目標神經元新的電壓區間及出口時間,並更新優先隊列中的事件。因此,脈衝傳播階段總的計算時間爲:(Cp+CE+CQ)×N×F×p(C_{p}+C_{E}+C_{Q})\times N\times F\times p

將神經元膜電位離散化階段的計算時間和脈衝傳播階段的計算時間相加,可得電壓驅動模擬算法總的計算時間複雜度爲:(CE+CQ)×N×F×VSdV+(Cp+CE+CQ)×N×F×p(C_{E}+C_{Q})\times N\times F\times \frac{V_{S}}{dV}+(C_{p}+C_{E}+C_{Q})\times N\times F\times p

來自脈衝神經網絡原理與應用一書

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