Deep Residual Learning in Spiking Neural Networks
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!
35th Conference on Neural Information Processing Systems (NeurIPS 2021), Sydney, Australia. (同组工作)
Abstract
由于离散二元激活和复杂的时空动态,深度脉冲神经网络(SNN)给基于梯度的方法带来了优化困难。考虑到ResNet在深度学习中的巨大成功,使用残差学习训练深度SNN是很自然的。之前的Spiking ResNet模仿了ANN中的标准残差块,简单地将ReLU激活层替换为脉冲神经元,存在退化问题,难以实现残差学习。在本文中,我们提出了spike-element-wise (SEW) ResNet来实现深度SNN中的残差学习。我们证明SEW ResNet可以轻松实现恒等映射并克服Spiking ResNet的梯度消失/爆炸问题。我们在ImageNet、DVS Gesture和CIFAR10-DVS数据集上评估了我们的SEW ResNet,并表明SEW ResNet在准确性和时间步长上都优于最先进的直接训练的SNN。此外,SEW ResNet可以通过简单地添加更多层来获得更高的性能,为训练深度SNN提供了一种简单的方法。据我们所知,这是第一次直接训练超过100层的深度SNN成为可能。我们的代码可在https://github.com/fangwei123456/Spike-Element-Wise-ResNet获得。
1 Introduction
人工神经网络(ANN)在许多任务中取得了巨大成功,包括图像分类[28, 52, 55]、目标检测[9, 34, 44]、机器翻译[2]和游戏[37, 51]。ANN成功的关键因素之一是深度学习[29],它使用多层来学习具有多个抽象级别的数据表征。已经证明,较深的网络在计算成本和泛化能力方面优于较浅的网络[3]。由深度网络表示的函数可能需要具有一个隐藏层的浅层网络的指数数量的隐藏单元[38]。此外,网络的深度与网络在实际任务中的表现密切相关[52, 55, 27, 52]。然而,最近的证据[13, 53, 14]表明,随着网络深度的增加,准确度会饱和,然后迅速下降。为了解决这个退化问题,残差学习[14, 15]被提出,并且残差结构在"非常深"的网络中被广泛利用,实现了领先的性能[22, 59, 18, 57]。
脉冲神经网络(SNN)被认为是ANN的潜在竞争对手,因为它们具有高生物合理性、事件驱动特性和低功耗[45]。最近,深度学习方法被引入到SNN中,并且深度SNN在一些简单的分类数据集[56]中取得了与ANN相近的性能,但在复杂任务中仍然比ANN差,例如对ImageNet数据集进行分类[47]。为了获得更高性能的SNN,自然会探索更深的网络结构,如ResNet。Spiking ResNet[25, 60, 21, 17, 49, 12, 30, 64, 48, 42, 43]作为ResNet的脉冲版本,是通过模仿ANN中的残差块并用脉冲神经元替换ReLU激活层而提出的。从ANN转换而来的Spiking ResNet在几乎所有数据集上都实现了最先进的准确性,而直接训练的Spiking ResNet尚未经过验证可以解决退化问题。
在本文中,我们表明Spiking ResNet不适用于所有神经元模型来实现恒等映射。即使满足恒等映射条件,Spiking ResNet也存在梯度消失/爆炸的问题。因此,我们提出了Spike-Element-Wise (SEW) ResNet来实现SNN中的残差学习。我们证明SEW ResNet可以轻松实现恒等映射并同时克服梯度消失/爆炸问题。我们在静态ImageNet数据集和神经形态DVS手势数据集[1]、CIFAR10-DVS数据集[32]上评估了Spiking ResNet和SEW ResNet。实验结果与我们的分析一致,表明较深的Spiking ResNet存在退化问题——较深的网络比较浅的网络具有更高的训练损失,而SEW ResNet可以通过简单地增加网络深度来获得更高的性能。此外,我们表明SEW ResNet在准确性和时间步长上都优于最先进的直接训练的SNN。据我们所知,这是第一次探索直接训练的超过100层的深度SNN。
2 Related Work
2.1 Learning Methods of Spiking Neural Networks
ANN到SNN的转换(ANN2SNN)[20, 4, 46, 49, 12, 11, 6, 54, 33]和具有替代梯度的反向传播[40]是获得深度SNN的两种主要方法。ANN2SNN方法首先用ReLU激活训练ANN,然后通过用脉冲神经元替换ReLU并添加缩放操作(如权重归一化和阈值平衡)将ANN转换为SNN。最近的一些转换方法已经使用VGG-16和ResNet[12, 11, 6, 33]实现了接近无损的精度。然而,转换后的SNN需要更长的时间才能在精度上与原始ANN相媲美,因为转换基于发放率编码[46],这增加了SNN的延迟并限制了实际应用。反向传播方法可以分为两类[26]。第一类中的方法通过在模拟时间步长 [31, 19, 58, 50, 30, 40]上展开网络来计算梯度,这类似于时间反向传播(BPTT)的思想。由于与阈值触发发放相关的梯度是不可微的,因此经常使用替代梯度。由替代方法训练的SNN不仅限于发放率编码,还可以应用于时间任务,例如对神经形态数据集进行分类[58, 8, 16]。第二种方法计算现有脉冲时间相对于脉冲时间的膜电位的梯度[5, 39, 24, 65, 63]。
2.2 Spiking Residual Structure
以前的ANN2SNN方法注意到了纯前馈ANN和残差ANN之间的区别,并对转换进行了特定的归一化。Hu等人[17]是第一个将ANN2SNN中的残差结构与SNN中的缩放捷径相结合,以匹配原始ANN的激活。Sengupta等人[49]提出了Spike-Norm来平衡SNN的阈值,并通过将VGG和ResNet转换为SNN来验证其方法。现有的基于反向传播的方法使用与ResNet几乎相同的结构。Lee等人[30]在深度不超过ResNet-11的浅ResNet上评估了他们的自定义替代方法。Zheng等人[64]提出了阈值相关批量归一化(td-BN)来代替初始批量归一化(BN)[23],并通过在捷径中添加td-BN,成功地使用替代梯度直接训练了Spiking ResNet-34和Spiking ResNet-50。
3 Methods
3.1 Spiking Neuron Model
脉冲神经元是SNN的基本计算单元。类似于Fang等人[8],我们使用统一模型来描述各种脉冲神经元的动力学,包括以下离散时间方程:
其中X[t]是时间步骤 t 的输入电流,H[t]和V[t]分别表示神经元动力学之后和在时间步骤 t 触发脉冲之后的膜电位。Vth是发放阈值,Θ(x)是Heaviside阶跃函数,由Θ(x) = 1(对于x ≥ 0)和Θ(x) = 0(对于x < 0)定义。S[t]是时间步骤 t 处的输出脉冲,如果存在脉冲,则等于1,否则等于0。Vreset表示复位电位。公式(1)中的函数f(·)描述了神经元动力学,并针对不同的脉冲神经元模型采取了不同的形式。例如,IF模型和LIF模型的函数f(·)可分别由公式(4)和公式(5)描述。
其中 τ 表示膜时间常数。公式(2)和公式(3)描述了脉冲产生和重置过程,这对于所有类型的脉冲神经元模型都是相同的。在本文中,在误差反向传播期间,使用替代梯度方法定义,其中σ(x)表示替代函数。
3.2 Drawbacks of Spiking ResNet
残差块是ResNet的关键组成部分。图1(a)显示了ResNet[14]中的标准块,其中Xl, Yl是ResNet中第 l 个块的输入和输出,Conv是卷积层,BN表示批归一化,ReLU表示校正的线性单元激活层。[64, 17, 30]中使用的Spiking ResNet的标准块通过用脉冲神经元(SN)代替ReLU激活层,简单地模拟了ANN中的块,如图1(b)所示。这里Sl[t], Ol[t]是Spiking ResNet中第 l 个块在时间步骤 t 的输入和输出。基于上述定义,我们将在下面分析Spiking ResNet的缺点。
Spiking ResNet is inapplicable to all neuron models to achieve identity mapping. ResNet中的一个关键概念是恒等映射。He等人[14]注意到,如果添加的层实现了恒等映射,则较深的模型的训练误差应不大于较浅的模型。然而,它无法训练添加的层以在可行的时间内实现恒等映射,导致较深的模型比较浅的模型性能更差(退化问题)。为了解决这个问题,通过添加捷径(如图1(a)所示)提出了残差学习。如果我们使用Fl表示ResNet和Spiking ResNet中第 l 个残差块的残差映射,例如两个卷积层的堆栈,则图1(a)和图1(b)中的残差块可以被公式化为:
公式(6)的残差块使得在ANN中实现恒等映射变得容易。要看到这一点,当Fl(Xl) ≡ 0时,Yl = ReLU(Xl)。在大多数情况下,Xl是先前ReLU层的激活(Xl ≥ 0)。因此,Yl = ReLU(Xl) = Xl,这是恒等映射。
与ResNet不同,Spiking ResNet中的残差块(公式(7))限制了脉冲神经元的模型以实现恒等映射。当Fl(Sl[t]) ≡ 0时,Ol[t] = SN(Sl[t]) ≠ Sl[t]。为了传输Sl[t]并使SN(Sl[t]) = Sl[t],第 l 个残差块中的最后一个脉冲神经元(SN)需要在接收到脉冲后发放脉冲,并且在时间步骤 t 没有接收到脉冲之后保持沉默。它适用于公式(4)所述的IF神经元。具体来说,我们可以设置0 < Vth ≤ 1和V[t-1] = 0,以确保X[t] = 1导致H[t] ≥ Vth,X[t] = 0导致H[t] < Vth。然而,当考虑一些具有复杂神经元动力学的脉冲神经元模型时,很难实现SN(Sl[t]) = Sl[t]。例如,[66, 8, 61]中使用的LIF神经元考虑了可学习的膜时间常数,其神经元动力学可以用公式(5)描述。当X[t] = 1且V[t-1] = 0,H[t] = 1/τ。很难找到确保H[t] > Vth的发放阈值,因为优化器在训练中改变了该阈值。
Spiking ResNet suffers from the problems of vanishing/exploding gradient. 考虑具有k个连续块的脉冲ResNet来传输Sl[t],并且满足恒等映射条件,例如,脉冲神经元是0 < Vth ≤ 1的IF神经元,那么我们有Sl[t] = Sl+1[t] = … = Sl+k-1[t] = Ol+k-1[t]。将Sl[t]和Ol[t]中的第 j 个元素分别表示为或
,相对于第 l 个残差块的输入,第(l+k-1)个残差块输出的梯度可以逐层计算为:
其中Θ(x)是Heaviside阶跃函数,Θ'(x)由替代梯度定义。第二个等式成立为。鉴于
只能取0或1,对于[40]中提到的常用替代函数不满足
。因此,在更深的Spiking ResNet中容易发生消失/爆炸梯度问题。
基于上述分析,我们认为,之前的Spiking ResNet忽略了脉冲神经元引起的高度非线性,并且很难实现残差学习。尽管如此,图1(b)中的标准块对于具有额外归一化的ANN2SNN仍然是合适的[17, 49],因为从ANN转换的SNN旨在使用发放率来匹配原始ANN的激活。
3.3 Spike-Element-Wise ResNet
在此,我们提出了Spike Element Wise(SEW)残差块来实现SNN中的残差学习,它可以容易地实现恒等映射,同时克服梯度消失/爆炸问题。如图1(c)所示,SEW残差块可公式化为:
其中g表示具有两个脉冲张量作为输入的逐元素函数。这里,我们使用Al[t]表示要学习的残差映射为Al[t] = SN(Fl(Sl[t]))。
SEW ResNet can easily implement identity mapping. 通过利用脉冲的二值属性,我们可以找到满足恒等映射的不同元素函数g(如表1所示)。具体地说,当选择ADD和IAND作为逐元素函数g时,通过设置Al[t] ≡ 0来实现恒等映射,这可以简单地通过将Fl中最后一个归一化层(BN)的权重和偏差设置为零来实现。然后我们可以得到Ol[t] = g(Al[t], Sl[t]) = g(SN(0), Sl[t]) = g(0, Sl[t]) = Sl[t]。这适用于所有神经元模型。当使用AND作为逐元素函数g时,我们设置Al[t] ≡ 1以获得恒等映射。它可以通过将最后一个BN的权重设置为零,将偏差设置为足够大的常数以引起脉冲来实现,例如,当最后一个SN是IF神经元时,将偏差设为Vth。然后我们得到Ol[t] = 1 Λ Sl[t] = Sl[t]。注意,使用AND可能会遇到与Spiking ResNet相同的问题。很难控制一些具有复杂神经元动力学的脉冲神经元模型在特定的时间步骤产生脉冲。
Formulation of downsample block. 值得注意的是,当一个块的输入和输出具有不同维度时,捷径被设置为步幅>1的卷积层,而不是恒等连接,以执行下采样。ResNet和Spiking ResNet在捷径中使用不含ReLU的{Conv-BN}(图2(a))。相反,我们在捷径中添加了一个SN(图2(b))。
SEW ResNet can overcome vanishing/exploding gradient. SEW块类似于ANN中添加前的ReLU(RBA)块[15],可公式化为:
He等人[15]批评RBA块,因为Xl+1 = Yl ≥ Xl,这将导致深层的无限输出。[15]中的实验结果还表明,RBA块的性能比标准块差(图1(a))。在某种程度上,SEW块是RBA块。注意,使用AND和IAND作为g将输出脉冲(即二值张量),这意味着ANN中的无限输出问题将不会在具有SEW块的SNN中出现,因为所有脉冲都小于或等于1。当选择ADD作为g时,无限输出问题可以得到缓解,因为k个连续SEW块的输出将不大于k+1。此外,当g为ADD时,下采样SEW块将调节输出不大于2。
当实现恒等映射时,相对于第 l 个SEW块的输入,第(l+k-1)个SEW块输出的梯度可以逐层计算为:
第二个等式成立,因为通过为g = AND设置Al+i[t] ≡ 1,为g = ADD/IAND设置Al+i[t] ≡ 0来实现恒等映射。由于公式(11)中的梯度是常数,SEW ResNet可以克服梯度消失/爆炸问题。
4 Experiments
4.1 ImageNet Classification
由于ImageNet 2012的测试服务器已不可用,我们无法报告实际的测试准确性。相反,我们使用验证集上的准确性作为测试准确性,这与[17, 64]相同。He等人[14]评估了ImageNet数据集上的18/34/50/101/152层ResNet。为了进行比较,我们考虑了具有相同网络架构的SNN,除了基本残差块(图1(a))分别被脉冲基本块(图1(b))和SEW块(图1(c))取代,其中g为ADD。我们将具有基本块的SNN表示为Spiking ResNet,将具有SEW块的SNN表示为SEW ResNet。静态ImageNet数据集采用IF神经元模型。在ImageNet的训练期间,我们发现Spiking ResNet-50/101/152不能收敛,除非我们使用零初始化[10],该初始化在训练开始时将所有块设置为恒等映射。因此,本文报道的Spiking ResNet-18/34/50/101/152的结果是零初始化的。
Spiking ResNet vs. SEW ResNet. 我们首先评估Spiking ResNet和SEW ResNet的性能。表2报告了ImageNet验证的测试准确性。结果表明,较深的34层Spiking ResNet比较浅的18层Spiking ResNet具有更低的测试精度。随着层的增加,Spiking ResNet的测试精度会降低。为了揭示原因,我们比较了Spiking ResNet在训练过程中的训练损失、训练准确性和测试准确性,如图3所示。我们可以发现Spiking ResNet的退化问题——较深的网络比较浅的网络具有更高的训练损失。相比之下,较深的34层SEW ResNet比较浅的18层SEW ResNet具有更高的测试精度(如表2所示)。更重要的是,从图3中可以发现,随着深度的增加,我们的SEW ResNet的训练损失减少,训练/测试精度增加,这表明我们可以通过简单地增加网络的深度来获得更高的性能。所有这些结果表明,SEW ResNet很好地解决了退化问题。
Comparisons with State-of-the-art Methods. 在表3中,我们将SEW ResNet与之前在ImageNet上获得最佳结果的Spiking ResNet进行了比较。据我们所知,SEW ResNet-101和SEW ResNet-152是迄今为止唯一具有100层以上的SNN,没有其他具有相同结构的网络可供比较。当网络结构相同时,即使时间步长T较少,我们的SEW ResNet也优于直接训练的Spiking ResNet的最先进精度。SEW ResNet-34的精度略低于具有td-BN的Spiking ResNet-34(大)(67.04% v.s. 67.05%),与我们的SEW ResNet相比,它使用了1.5倍的模拟时间步长T(6 v.s. 4)和4倍的参数量(85.5M v. s. 21.8M)。最先进的ANN2SNN方法[33, 17]比我们的SEW ResNet具有更好的精度,但它们分别使用的时间步长是我们的64倍和87.5倍。
Analysis of spiking response of SEW blocks. 图4显示了ImageNet上SEW ResNet-18/34/50/101/152中Al的发放率。SEW ResNet-18有7个块,SEW ResNet-34和SEW ResNet-50有15个块,SEW ResNet-101有33个块,以及SEW ResNet-152有50个块。下采样SEW块由三角形向下符号标记。当我们选择ADD作为元素函数g时,较低的发放率意味着SEW块更接近于实现恒等映射(下采样块除外)。请注意,下采样块的捷径不是恒等映射,如图2(b)所示。图4显示,SEW块中的所有脉冲神经元都具有较低的发放率,最后两个块中的脉冲神经元甚至具有几乎为零的发放率。由于时间步长T为4,发放率不大于0.25,因此在整个模拟过程中,SEW ResNet-18/34/50中的所有神经元平均发放不超过一个脉冲。此外,SEW ResNet-101/152中的所有发放率均不大于0.5,表明所有神经元平均发放不超过两个脉冲。一般来说,SEW块中Al的发放率处于较低水平,这证实了大多数SEW区块起到了恒等映射的作用。
Gradients Check on ResNet-152 Structure. 公式(8)和公式(11)利用恒等映射来分析多个块的梯度。为了验证SEW ResNet可以克服梯度消失/爆炸,我们检查了Spiking ResNet-152和SEW ResNet-152中的梯度,这是最深的标准ResNet结构。我们考虑相同的初始化参数,并且有/无零初始化。
由于SNN的梯度受到发放率的显著影响(见第A.4节),我们首先分析了发放率。图5(a)显示了第 l 个块的输出Ol的初始发放率。下采样块的索引由垂直虚线标记。两条相邻虚线之间的块表示恒等映射区域,并且具有相同形状的输入和输出。当使用零初始化时,Spiking ResNet、SEW AND ResNet、SEW IAND ResNet和SEW ADD ResNet具有相同的发放率(绿色曲线)。在没有零初始化的情况下,SEW AND网络(红色曲线)会出现静默问题,SEW IAND网络(紫色曲线)会缓解静默问题。图5(b)显示了Al的发放率,它表示第 l 个块中最后一个SN的输出。可以发现,尽管SEW ADD ResNet中Ol的发放率在恒等映射区域线性增加,但每个块中的最后一个SN仍然保持稳定的发放率。请注意,当g为ADD时,SEW块的输出不是二值的,而发放率实际上是平均值。SEW IAND ResNet的SN保持足够的发放率,并随着深度略有衰减(紫色曲线),而SEW AND ResNet深层的SN则保持静默(橙色曲线)。静默问题可以解释如下。当使用AND时,Ol[t] = SN(Fl(Ol-1[t]) ∧ Ol-1[t] ≤ Ol-1[t]之间。由于很难在每个时间步骤 t 保持SN(Fl(Ol-1[t]) ≡ 1,在g为AND的SEW ResNet中可能频繁发生静默问题。使用IAND作为AND的替代品可以缓解这个问题,因为它很容易在每个时间步骤 t 保持SN(Fl(Ol-1[t]) ≡ 0。
我们在所有实验中使用的替代梯度函数是,因此
。当Vth=1, α = 2时,每个块的梯度幅度
如图6所示。请注意α = 2,σ'(x) ≤ σ'(0) = σ'(1 - Vth) = 1,并且σ'(0 - Vth) = 0.092 < 1。可以发现,Spiking ResNet-152中的梯度在没有零初始化的情况下从单位映射区域中的较深层衰减到较浅层,这是由σ'(x) ≤ 1引起的。值得注意的是,在零初始化的Spiking ResNet-152中也会发生衰减。虚线附近的小凸∧是由那些
的梯度消失引起的。在这些梯度完全衰减到0之后,
将是一个常数,因为其余梯度是通过
和σ'(1 - Vth) = 1,这也可以解释为什么梯度指数曲线在某些区域是水平的。当参考零初始化的SEW ResNet-152时,可以发现无论我们选择什么g,所有梯度指数曲线都是相似的。这是由于在恒等映射区域中,Sl对于所有索引 l 都是常数,并且梯度也变为常数,因为它不会流过SN。在没有零初始化的情况下,SEW AND ResNet-152中会出现梯度消失,这是由静默问题引起的。当从更深的层传播到更浅的层时,由于图5所示的足够的发放率,SEW ADD、IAND网络的梯度缓慢增加。
当Vth=0.5,α = 2时,σ'(0 - Vth) = σ'(1 - Vth) = 0.288 < 1,表明将脉冲传输到SN容易导致梯度消失,如图7所示。在零初始化的情况下,Spiking ResNet-152中的衰减更加严重,因为来自Fl的梯度不能起作用。无论我们选择什么g,SEW ResNet-152都不会受到影响。当Vth=1,α = 3时,σ'(1 - Vth) = 1.5 > 1,表明将脉冲传输到SN容易导致梯度爆炸。图8显示了这种情况下的梯度。与图6中的原因相同,在没有零初始化的情况下,替代函数的变化会增加所有网络的梯度,但不会影响零初始化的SEW ResNet-152。Spiking ResNet-152遇到梯度爆炸,而SEW ADD, IAND ResNet-152中的这个问题并不严重。
4.2 DVS Gesture Classification
设计用于对复杂的ImageNet数据集进行分类的原始ResNet对于DVS Gesture数据集来说太大了。因此,我们设计了一个名为7B-Net的小型网络,其结构为c32k3s1-BN-PLIF-{SEW Block-MPk2s2}*7-FC11。这里,c32k3s1表示通道为32、核大小为3、步长为1的卷积层。MPk2s2是核大小为2,步长为2的最大池化层。符号{}*7表示七个重复结构,PLIF表示具有可学习膜时间常数的LIF神经元,这是在[8]中提出的,可以用公式(5)描述。AER数据预处理细节见第A.1节。
Spiking ResNet vs. SEW ResNet. 我们首先通过用基本块替换SEW块,将SEW ResNet与ADD元素函数(SEW ADD ResNet)和Spiking ResNet的性能进行比较。如图9和表4所示,尽管Spiking ResNet(蓝色曲线)的训练损失低于SEW ADD ResNet(橙色曲线),但测试精度低于SEW ADD ResNet(90.97% v.s. 97.92%),这意味着Spiking ResNet比SEW ADD ResNet更容易过拟合。
Evaluation of different element-wise functions and plain block. 由于SNN在DVS Gesture数据集上的训练成本比在ImageNet上低得多,我们在DVS Gesture数据集上进行了更多的消融实验。我们用普通块(无捷径)代替SEW块,并测试其性能。我们还在表1中评估了所有类型的元素函数g。图9显示了DVS Gesture的训练损失和训练/测试准确性。早期时期的急剧波动是由大的学习率引起的(见第A.1节)。我们可以发现,训练损失是SEW IAND<Spiking ResNet<SEW ADD<Plain Net<SEW AND。由于过拟合问题,较低的损失并不能保证较高的测试精度。表4显示了所有网络的测试准确性。SEW ADD ResNet的精度最高。
Comparisons with State-of-the-art Methods. 表5将我们的网络与SOTA方法进行了比较。可以发现,我们的SEW ResNet在精度、参数数量和模拟时间步长方面优于SOTA工作。
4.3 CIFAR10-DVS Classification
我们还报告了CIFAR10-DVS数据集上的SEW ResNet,该数据集是通过DVS相机在LCD监视器上记录CIFAR-10数据集的运动图像而获得的。由于CIFAR10-DVS比DVS Gesture更复杂,我们使用了名为Wide-7B-Net的网络结构,该网络结构类似于7B-Net,但具有更多的通道。Wide-7B-Net的结构为c64k3s1-BN-PLIF-{SEW Block (c64)-MPk2s2}*4-c128k3s1-BN-PLIF-{SEW Blcok (c128)-MPk2s2}*3-FC10。
在表6中,我们将SEW ResNet与之前的Spiking ResNet进行了比较。可以发现,与Spiking ResNet [64]相比,我们的方法实现了更好的性能(70.2% v.s. 67.8%)和更少的时间步长(8 v.s.10)。我们还将我们的方法与CIFAR10-DVS上最先进的监督学习方法进行了比较。我们的Wide-7B-Net的精度略低于当前的SOTA方法[8](74.4% v.s. 74.8%),后者使用了1.25倍的模拟时间步长T(20 v.s. 16)和14.6倍的参数量(17.4M v.s. 1.19M)。此外,当将T缩小到4时,我们的Wide 7B-Net仍然可以获得64.8%的精度。
5 Conclusion
在本文中,我们分析了以前的Spiking ResNet,其残差块模拟ResNet的标准块,发现它很难实现恒等映射,并且存在梯度消失/爆炸的问题。为了解决这些问题,我们提出了SEW残差块,并证明了它可以实现残差学习。在ImageNet、DVS Gesture和CIFAR10-DVS数据集上的实验结果表明,我们的SEW残差块解决了退化问题,SEW ResNet可以通过简单地增加网络深度来实现更高的精度。我们的工作可能有助于了解“非常深”的SNN。
A Appendix
A.1 Hyper-Parameters
对于所有数据集,替代梯度函数为,因此
,其中α是斜率参数。我们为所有神经元设置α=2,Vreset=0和Vth=1。优化器是SGD,动量为0.9。根据[62]的建议,我们在在反向计算图的神经元重置公式(3)中分离S[t],以提高性能。我们使用混合精度训练[36],这将加速训练并减少内存消耗,但可能会导致精度略低于使用全精度训练。不同数据集SNN的超参数如表7所示。表8显示了具有不同元素函数的SNN的学习率(对于DVS Gesture)。三个数据集的数据预处理方法如下:
ImageNet [14]中使用的数据扩充方法也应用于我们的实验中。从图像或其水平翻转中随机采样224×224裁剪,并对训练样本进行数据归一化。对测试样本应用224×224大小调整和数据归一化的中央裁剪。
DVS128 Gesture 我们使用与[8]相同的AER数据预处理方法,并利用随机时间删除来缓解过拟合,如第A.2节所示。
CIFAR10-DVS 我们使用与DVS128 Gesture相同的AER数据预处理方法。我们不使用随机时间删除,因为CIFAR10-DVS是通过静态图像获得的。
A.2 Random Temporal Delete
为了减少过拟合,我们提出了一种简单的数据扩充方法,称为序列数据的随机时间删除。将序列长度表示为T,我们在原始序列中随机删除T - Ttrain个切片,并在训练期间使用Ttrain个切片。在推断过程中,我们使用整个序列,即Ttest=T。在DVS Gesture的所有实验中,我们设置Ttrain=12,T=16。
图10比较了有或没有随机时间删除(RTD)的Plain Net、Spiking ResNet和SEW ResNet的训练损失和训练/测试准确性。这里,按元素的函数g是ADD。可以发现,与没有RTD的网络相比,有RTD的网络具有更高的训练损失和更低的训练精度,因为RTD会增加训练的难度。有RTD的网络的测试精度高于没有RTD的网络,表明RTD会减少过拟合。三种网络的结果是一致的,表明RTD是一种通用的序列数据增强方法。
A.3 Firing rates on DVS Gesture
图11(a)显示了DVS Gesture 7B-Net中每个区块中Al的发放率。请注意,如果g为AND,则当发放率接近1时,SEW块变得更接近恒等映射,而对于其他g,当发放率靠近0时,SEV块变成恒等映射。当所有SEW块都变成恒等映射时,7B网络将变成c32k3s1-BN-PLIF-{MPk2s2}*7-FC11,这是一个过于简单的网络,会导致欠拟合。因此,7B-Net中的SEW块不必是恒等映射。图11(b)显示了每个块的输出Ol的发放率。发放率不会随着块索引的增加而严格降低,因为块通过最大池连接,最大池挤压稀疏脉冲并增加发放率。可以发现,SEW AND网络中的块具有最低的发放率。SEW IAND网络中的块比SEW AND网络的块具有更高的发放率,并且SEW IAND网络的准确率远高于SEW AND网络(95.49% v.s. 70.49%),这表明使用IAND代替AND可以缓解第4.1节中讨论的静默问题。
A.4 Gradients in Spiking ResNet with Firing Rates
SNN的梯度受发放率的影响,这就是我们在第4.1节中分析梯度之前的发放率的原因。考虑具有k个连续块的脉冲ResNet来传输Sl[t],并且满足恒等映射条件,例如,脉冲神经元是0 < Vth ≤ 1的IF神经元,那么我们有Sl[t] = Sl+1[t] = … = Sl+k-1[t] = Ol+k-1[t]。我们得到:
那么两个相邻块之间的梯度为:
将神经元数量表示为N,Sl的发放率表示为,则:
其中:
A.5 0/1 Gradients Experiments
正如第3.2节中的分析所示,由于累积乘法,Spiking ResNet中很容易发生梯度消失/爆炸问题。一个潜在的解决方案是设置Θ'(0 - Vth) = Θ'(1 - Vth) = 1。具体来说,我们在ImageNet上训练了Spiking ResNet,方法是在每个块的最后一个SN中设置Vth = 0.5和,以确保Θ'(0 - Vth) = Θ'(1 - Vth) = 1。然而,该网络不会收敛,这可能是由于SNN对替代函数敏感造成的。
[64]使用矩形替代函数。如果我们设置a=1,那么σ'(x) ∈ {0, 1}。根据公式(8),使用该替代函数可以避免Spiking ResNet中的梯度爆炸/消失问题。我们比较了CIFAR-10上SNN中的不同替代函数,包括矩形(
)、ArcTan(
)和常数1(σ'(x) ≡ 1)。请注意,我们的目标是评估0/1梯度,而不是实现SOTA的准确性。因此,我们使用了一个轻量级网络,其结构为c32k3s1-BN-IF-{{SEW Block (c32)}*2-MPk2s2}*5-FC10。我们在SEW块中使用ADD作为g。我们还通过用基本块替换SEW块来与Spiking ResNet进行比较。结果如表9所示。每个替代函数的学习率都经过了微调。
表9表明,替代函数的选择对SNN的性能有相当大的影响。尽管矩形和常数1可以避免公式(8)中的梯度爆炸/消失问题,但它们仍然会导致较低的精度,甚至使优化不收敛。表9还显示,SEW ResNet对替代梯度更具鲁棒性,因为它总是比具有相同替代函数的Spiking ResNet具有更高的精度。
A.6 Reproducibility
所有实验都是用SpikingJelly [7]实现的,这是一个基于PyTorch [41]的SNN开源深度学习框架。源码可以从https://github.com/fangwei123456/Spike-Element-Wise-ResNet中获得。为了最大限度地提高复现性,我们在所有代码中使用相同的种子。