Neuromorphic Computing | 基础知识
现有形式
Spiking Neural Networks (SNNs)
只能输出脉冲,即0或1的神经元,都可以称之为“脉冲神经元”。使用脉冲神经元的网络,进而也可以称之为脉冲神经元网络(Spiking Neural Networks, SNNs)。
我们可以用充电、放电、重置,这 3 个离散方程来描述任意的离散脉冲神经元。
在实际应用中多为离散状态,此时时间步长为 1,所以充电、放电、重置方程为:
- 充电(Integrate): H [ t ] = f ( V [ t − 1 ] , X [ t ] ) H[t] = f(V[t-1], X[t]) H[t]=f(V[t−1],X[t])。
- 如果结合前面的权重变换,这里的实际上可以写成 H [ t ] = f ( V [ t − 1 ] , ∑ i w i S [ t ] i p r e + b ) H[t] = f(V[t-1], \sum_iw_iS[t]_i^{pre}+b) H[t]=f(V[t−1],∑iwiS[t]ipre+b),相当于是对前一层所有神经元的加权组合。所以脉冲神经元之间可以放置一些线性层,包括卷积、全连接等操作。(Towards memory- and time-efficient backpropagation for training spiking neural networks)
- 放电(Fire): S [ t ] = g ( H [ t ] − V t h r e s h o l d ) = Θ ( H [ t ] − V t h r e s h o l d ) , Θ ( x ) = { 1 , x ≥ 0 0 , x < 0 \begin{gather} S[t] = g(H[t] - V_{threshold}) = \Theta(H[t] - V_{threshold}), \\ \begin{split}\Theta(x) = \begin{cases} 1, & x \geq 0 \\ 0, & x < 0 \end{cases}\end{split} \end{gather} S[t]=g(H[t]−Vthreshold)=Θ(H[t]−Vthreshold),Θ(x)={ 1,0,x≥0x<0
- 重置(Reset):( V [ 0 ] = 0 V[0]=0 V[0]=0)
- hard: V [ t ] = H [ t ] ⋅ ( 1 − S [ t ] ) + V r e s e t ⋅ S [ t ] V[t] = H[t] \cdot (1 - S[t]) + V_{reset} \cdot S[t] V[t]=H[t]⋅(1−S[t])+Vreset⋅S[t]
- soft: V [ t ] = H [ t ] − V t h r e s h o l d ⋅ S [ t ] V[t] = H[t] - V_{threshold} \cdot S[t] V[t]=H[t]−Vthreshold⋅S[t]
其中 V [ t ] V[t] V[t] 是神经元的膜电位; X [ t ] X[t] X[t] 是外源输入,例如电压增量;使用 H [ t