Spatio-Temporal Backpropagation for Training High-Performance Spiking Neural Networks
一 引言
目前SNN研究存在的问题:
- SNN在时空领域具有很大的优势,但是目前的研究大多是基于空间领域的研究,忽略了时间领域的优势,这就可能导致性能瓶颈。
- 脉冲活动是不可微分的,这就造成了其学习算法较为复杂困难。
- 本文提出了STBP学习算法。为了解决神经元网络不可微的问题,提出了一种适合于梯度下降训练的峰值活动近似导数。
下面文章将从神经元模型、STBP算法、不可微的解决方法三方面进行描述
二 研究方法
首先介绍迭代模式的LIF神经元模型;其次介绍反向传播的细节;最后介绍不可微分的解决方法。(建议公式自己手工推一下)
1. 神经元模型
总体模型改写流程:
- LIF模型(公式1)
- 改写成迭代模式(公式2)
- 借鉴LSTM模型,改写模型 (公式3-7)
a.LIF神经元模型
- u(t)是在t时刻的膜电压,当膜电压达到阈值,则释放一个脉冲,并将其电位置为Urest。
- τ是时间常数
- I(t)表示突触前输入,由神经元前活动或外部注射和突触权重决定。
如图所示,在空间维度,类似于DNN,逐层在SD中传播。在时间维度,每个神经元通过自反馈,生成非易失性积分。从而做到时间和空间领域的信息都进行获取分析,比只考虑空间信息的BP和只考虑时间信息的STDP,具有更大的优势。
b 迭代式
对上式1和初始化条件联合,进行一阶常微分方程求解,可得(2)
c.结合LSTM机制
DNN中的BP算法,只考虑到SD领域中的BP。因此,这里我们考虑SD和TD两个领域的BP(同时借鉴了LSTM的思想)。通过使用遗忘门f(.)控制时间领域的信息,遗忘门f(.)控制TD中电压的泄漏程度;输出门g(.)用来控制脉冲的发放。
2 时空反向传播训练框架
a.损失函数:
其中y是样本s的标签向量,o是最后一层神经元的输出向量,由另外一篇论文《Direct Training for Spiking Neural Networks Faster, Larger, Better》可知,o是由投票机制产生的。
b. 反向传播
LSTM前向传播和反向传播具体计算过程-知乎
LSTM前向和反向传播计算过程CSDN
分四种情况,分别对不同位置的状态进行求导
- t=T,n=N (最后一层的最后一个状态)直接对损失函数进行求导即可。
- t=T,n<N (中间某层n的最后状态T,不是最后一层) 只考虑SD(理解:TD方向已经到达终点,无法方向传播):类似于DNN中的反向求导。
- t<T,n=N (最后一层的中间状态,不是最后一个状态) 只考虑TD(理解:SD方向已经到达终点,无法方向传播):链式求导+全导数法则
- t<T,n<N (中间某层的某个状态,不是最后一个状态且不是最后一层)考虑SD和TD
三 不可微的解决方法
引入四条曲线来近似图3B中h1, h2, h3, h4所示的表示脉冲活动的导数:
参考链接:Dirac函数可以使用一些连续函数的序列极限表示