阅读笔记:可微脉冲神经元-重新思考训练脉冲神经网络的梯度下降法
Differentiable Spike: Rethinking Gradient-Descent for Training Spiking Neural Networks(可微脉冲神经元-重新思考训练脉冲神经网络的梯度下降法)
一、研究背景
脉冲神经网络(SNN)是一种新型的神经网络模型,具有低功耗、高效率和生物可解释性等优点。然而,由于SNN的离散性质,传统的梯度下降方法无法直接应用于SNN的训练中,这限制了SNN的应用范围和性能。因此,如何有效地直接训练SNN成为了一个重要的研究方向。为了解决这个问题,作者提出了一种新的方法——使用可捕捉有限梯度差分方向的Differentiable Spike(Dspike)函数来代替梯度,以便在训练过程中进行自适应梯度估计,这种方法可以有效地训练大规模的SNN模型,并提高其性能。
二、研究内容和主要创新点
研究内容:
作者首先介绍了SNN基本原理和点火函数不可微导致传统梯度下降法不可用的原因,引出FDG有限差分梯度法。紧接着作者介绍了FDG的局限性,在此基础上,作者提出了一种可以自适应改变其形状并捕捉有限差分梯度方向的可微尖峰函数(Dspike),并提出的相应的算法流程和数学模型。算法的整体工作流程如图1所示。实验表明,作者提出的模型是非常准确高效的,在CIFAR-DVS数据集上上可以达到75.4%的top-1准确率,并且仅消耗了CIFAR-10上相应ANN的7.8%能量。

图1:基于Dsprike的可微脉冲神经网络算法流程图
主要创新点:
•作者从数学上推导出SNN中使用梯度下降算法的具有局限性的原因,并提出用有限差分梯度FDG代替导数的方法
•作者提出一种参数可调的双曲正切函数构成的新型Dspike函数来代替梯度进行自适应梯度估计的方法,从而适应不同的数据集和任务
三、梯度下降法的重思考
脉冲神经网络(SNN)中最常用的神经元模型为 LIF神经元模型。在LIF模型中,给定膜电位u(t),设Vth为放电阈值,当膜电位超过阈值时,膜电位会产生一个尖峰,然后硬复位为0,表示为:


由上面的式子可知,y函数可以看做是关于u的符号函数的变体,y对u的导数导数为函数,在阈值处为无穷,其余函数值为无穷,设L为任务损失目标,使用时空反向传播(STBP)计算权重参数的梯度:

式中的输出y对u的导数项在y阶跃点处为无穷大,其余点导数为0,因此,如果采用梯度下降法对权重W进行更新,要么权值不改变,要么权值变为无穷大,这显然是不合理的。

分析产生上述问题的原因,梯度下降法是将损失函数值用其一阶泰勒展开近似,如上式所示,而一阶泰勒近似仅在W变化量趋于0时成立,因此梯度函数只考虑在一个无限小的邻域周围的损失变化率,但在SNN网络中,在领域趋于0的范围内近似的梯度始终为0,但对于一个很小的邻域,损失函数会发生变化,导致梯度不为零。
四、方法介绍
有限差分梯度(FDG)
为了解决SNN中梯度下降法不可用的问题,作者首先提出了有限差分梯度(FDG)代替梯度的方法。在SNN网络中,在领域趋于0的范围内近似的梯度始终为0,但对于一个很小的邻域,损失函数会发生变化,导致梯度不为零。因此在有限小的区域内,用有限差分梯度(FDG)来估计梯度。表示为:

为了验证FDG方法的可行性,作者通过两个实验验证了有限差分梯度FDG的有效性:
实验一:在人工神经网络(ANN)上验证FDG的有效性。作者在MNIST数据集上训练了一个ANN,并比较了真实梯度和FDG之间的差异。作者使用余弦相似度来确定这两个梯度向量之间的角度,实验结果如图2(a)所示,结果表明:在不同的ε值下,FDG和真实梯度的方向始终非常相似(余弦相似度>0.99),说明FDG是一个有效的量,可以在ANN优化中代替梯度,找到较为精确的梯度下降步长。
实验二:在脉冲神经网络(SNN)上验证FDG的有效性。作者在N-MNIST数据集上训练了一个SNN,并比较了SNN中的代理梯度和FDG之间的余弦相似度,实验结果如图2(b)所示,结果表明:在不同的ε值下,FDG和代理梯度的方向始终非常相似(余弦相似度>0.99),说明FDG也可以在SNN优化中有效的估计梯度下降步长。 通过这两个实验,作者证明了FDG是一个有效的梯度估计方法。但是在训练过程评估权重向量中每个元素的FDG计算量极大,这大大减慢了训练过程。

图2:ANN网络和SNN网络中梯度和FDG的余弦相似度
Dspike函数:
为了解决FDG训练开销大的问题,作者接着提出一种可以在相对较大的邻域内模拟FDG的梯度估计函数-Dspike函数。选择双曲正切函数tanh(x) 作为梯度估计的基本构造函数,构造出Dspike函数:

tanh函数是一种常用的激活函数,具有良好的数学性质和广泛的应用。作者认为,tanh函数可以作为梯度估计的基本构建函数,因为它具有可微性和连续性,可以方便地进行梯度计算和反向传播。并且Dspike函数是一种灵活的函数,可以通过改变参数a、b、c、d控制其形状,从而捕捉有限差分梯度的方向。
参数c控制函数的对称中心,首先使用c = Vth = 0.5将对称中心设置为(0.5,0.5)。然后可以通过Dspike(0) = 0, Dspike(1) = 1来确定参数a和d,函数可以被重写为:

从式子12可以看出,通过调整温度b的值可以调整Dspike函数的值,参数b(b > 0)称为温度因子,它控制Dspike函数的形状。具体来说,当b趋近于0时,Dspike函数的形状趋近于线性,而当b趋近于正无穷时,Dspike函数的形状趋近于阶跃函数。作者还通过引入引理来证明了这一点。这种自适应的Dspike函数可以帮助SNN模型更好地适应不同的数据集和任务,从而提高其性能。

图3:前向和后向Dspike函数形状随温度b的变化
通过调整温度值b,可以找到最佳的替代梯度。为了找到最优的温度值,作者使用了一种基于网格搜索的方法,即在一定范围内对ε进行离散化,然后在静态数据集上进行实验,比较不同ε值下的性能表现。通过Dspike代理梯度训练SNN的算法伪代码Algorithm1所示。结果表明,较大的ε值可以提高模型的性能,但过大的ε值会导致模型过拟合。实验得到的最优温度ε为0.1,这是一个较好的折衷方案,可以在不同的数据集和网络结构上获得较好的性能。

五、实验设置和结果
实验设置:
作者在静态数据集和事件流数据集(N-MNIST和DVS-CIFAR10)上进行了实验。
在静态数据集(MNIST、CIFAR-10和CIFAR-100)上,采用resnet家族架构,使用了一个带有3个茎层和avg-downsample的修改版本resnet作为网络架构,并且采用常规的训练和测试方法,包括使用交叉熵损失函数和Adam优化器进行训练,使用准确率和损失函数值作为性能指标进行评估。
在事件流数据集上,作者使用了基于事件的方法进行训练和测试,包括使用SpikeProp算法进行训练,使用平均分类准确率和平均事件数作为性能指标进行评估。
实验结果:


该方法在CIFAR和ImageNet上的实验结果如表2和表4所示,可以看出,使用Dspike函数进行训练的SNN模型在静态数据集上的性能表现优于其他方法,包括使用传统的代理梯度方法和直接训练SNN方法。在数据流数据集上,作者的方法也取得了较好的性能,证明了其在事件驱动场景下的可行性。
此外,作者对采用Dspike函数的SNN的稀疏性和高效计算以及能量消耗进行评估,作者通过实验测量了每个LIF层的激活稀疏性,并将结果绘制成图表,结果如图4所示,每个LIF层的稀疏率不超过32%,即更多的神经元处于非激活状态,这可以减少计算量和能量消耗。此外,作者还比较了ANN和SNN的计算操作次数和能量消耗,结果如表3所示,结果表明在相同的模型和数据集上,使用Dspike训练的SNN具有更少的计算操作次数和更低的能量消耗,这是由于SNN的事件驱动操作和二进制激活可以实现无乘法的推理,使用Dspike训练的SNN具有更低的能量消耗,这可以降低硬件实现的成本和功耗。

六、总结
这篇文章介绍了一种新的,可以自适应改变其形状并捕捉有限差分梯度方向的可微尖峰函数(Dspike),称为Differentiable Spike(Dspike)。作者从理论上分析了有限差分梯度(FDG)和Dspike来估计梯度,从而对SNN直接训练的可行性,并在MNIST和N-MNIST数据集上进行了实验,并与其他SNN训练方法进行了比较。实验结果表明,使用Dspike训练的SNN具有更高的稀疏性、更高的计算效率和更低的能量消耗,同时也具有更好的分类性能。