[NeurIPS2021] Deep Residual Learning in Spiking Neural Networks【文献精读、翻译】

深度残差学习在脉冲神经网络中的应用

Fang W, Yu Z, Chen Y, et al. Deep residual learning in spiking neural networks[J]. Advances in Neural Information Processing Systems, 2021, 34: 21056-21069.

摘要

深度脉冲神经网络 (SNNs) 因为使用离散的二进制激活和复杂的时空动态,对基于梯度的方法来说存在优化难题。鉴于 ResNet 在深度学习中的巨大成功,尝试用残差学习来训练深度 SNNs 是一个自然的想法。以前的脉冲 ResNet 模仿了 ANNs 中的标准残差块, 仅仅将 ReLU 激活层替换为脉冲神经元 ,但这种方法会出现退化问题,难以实现残差学习。

本文提出了一种新的 Spike-Element-Wise (SEW) ResNet,用于实现深度 SNNs 中的残差学习。我们证明了 SEW ResNet 可以轻松实现恒等映射(identity mapping),并克服脉冲 ResNet 的梯度消失和爆炸问题。

我们在 ImageNet、DVS Gesture 和 CIFAR10-DVS 数据集上对 SEW ResNet 进行了评估,结果显示 SEW ResNet 在准确性和时间步长方面都优于目前最先进的直接训练的 SNNs。此外,SEW ResNet 通过 简单增加层数可以获得更高的性能 ,这为训练深度 SNNs 提供了简便的方法。据我们所知,这是 首次能够直接训练超过 100 层的深度 SNNs 。我们的代码已发布在 fangwei123456/Spike-Element-Wise-ResNet: Deep Residual Learning in Spiking Neural Networks

1. 介绍

人工神经网络 (ANNs) 在图像分类、目标检测 、机器翻译 和游戏 等任务中取得了巨大成功。ANNs 成功的一个关键因素是深度学习,它通过多层网络学习多级抽象的数据表示。研究表明,深度网络在 计算效率泛化能力 上优于浅层网络 。深度网络可以用较少的隐藏单元数表示复杂函数,而浅层网络需要指数级的隐藏单元。此外,网络的深度与其在实际任务中的表现密切相关。然而,最近的研究表明,随着网络深度的增加,准确性会先达到饱和点,然后迅速下降。为了解决这个退化问题,提出了残差学习 [14, 15],这种结构在许多“超深”网络中被广泛应用,并取得了领先的性能。

[14] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pages 770–778, 2016.
[15] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Identity mappings in deep residual networks. In European Conference on Computer Vision (ECCV), pages 630–645. Springer, 2016.

脉冲神经网络 (SNNs) 因其生物学合理性、事件驱动特性和低功耗,被认为是 ANNs 的潜在替代方案 [45]。

[45] Kaushik Roy, Akhilesh Jaiswal, and Priyadarshini Panda. Towards spike-based machine intelligence with neuromorphic computing. Nature, 575(7784):607–617, 2019

最近,深度学习方法被引入 SNNs,使得深度 SNNs 在一些简单分类任务中的表现接近 ANNs ,但在复杂任务中仍逊于 ANNs,如 ImageNet 分类 [47]。

[47] Olga Russakovsky, Jia Deng, Hao Su, Jonathan Krause, Sanjeev Satheesh, Sean Ma, Zhiheng Huang, Andrej Karpathy, Aditya Khosla, Michael Bernstein, et al. Imagenet large scale visual recognition challenge. International Journal of Computer Vision, 115(3):211–252, 2015.

为了提升 SNNs 的性能,自然会想到探索类似 ResNet 的深层网络结构。脉冲 ResNet [25, 60, 21, 17, 49, 12, 30, 64, 48, 42, 43] 作为 ResNet 的脉冲版本,通过模仿 ANNs 中的残差块,并将 ReLU 激活层替换为脉冲神经元来实现。

[25] Jaehyun Kim, Heesu Kim, Subin Huh, Jinho Lee, and Kiyoung Choi. Deep neural networks with weighted spikes. Neurocomputing, 311:373–386, 2018.
[60] Fu Xing, Ye Yuan, Hong Huo, and Tao Fang. Homeostasis-based cnn-to-snn conversion of inception and residual architectures. In International Conference on Neural Information Processing, pages 173–184. Springer, 2019.
[21] Sungmin Hwang, Jeesoo Chang, Min-Hye Oh, Kyung Kyu Min, Taejin Jang, Kyungchul Park, Junsu Yu, Jong-Ho Lee, and Byung-Gook Park. Low-latency spiking neural networks using pre-charged membrane potential and delayed evaluation. Frontiers in Neuroscience, 15:135, 2021.
[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.
[49] Abhronil Sengupta, Yuting Ye, Robert Wang, Chiao Liu, and Kaushik Roy. Going deeper in spiking neural networks: Vgg and residual architectures. Frontiers in Neuroscience, 13:95, 2019.
[12] Bing Han, Gopalakrishnan Srinivasan, and Kaushik Roy. Rmp-snn: Residual membrane potential neuron for enabling deeper high-accuracy and low-latency spiking neural network. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pages 13558–13567, 2020.
[30] Chankyu Lee, Syed Shakib Sarwar, Priyadarshini Panda, Gopalakrishnan Srinivasan, and Kaushik Roy. Enabling spike-based backpropagation for training deep neural network architectures. Frontiers in Neuroscience, 14, 2020.
[64] Hanle Zheng, Yujie Wu, Lei Deng, Yifan Hu, and Guoqi Li. Going deeper with directly-trained larger spiking neural networks. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 35, pages 11062–11070, 2021.
[48] Ali Samadzadeh, Fatemeh Sadat Tabatabaei Far, Ali Javadi, Ahmad Nickabadi, and Morteza Haghir Chehreghani. Convolutional spiking neural networks for spatio-temporal feature extraction. arXiv preprint arXiv:2003.12346, 2020.
[42] Nitin Rathi and Kaushik Roy. Diet-snn: Direct input encoding with leakage and threshold optimization in deep spiking neural networks. arXiv preprint arXiv:2008.03658, 2020.
[43] Nitin Rathi, Gopalakrishnan Srinivasan, Priyadarshini Panda, and Kaushik Roy. Enabling deep spiking neural networks with hybrid conversion and spike timing dependent backpropagation. In International Conference on Learning Representations (ICLR), 2020.

尽管从 ANN 转换而来的脉冲 ResNet 在几乎所有数据集上都达到了最先进的准确性,直接训练的脉冲 ResNet 尚未验证能够解决退化问题。

本文表明,脉冲 ResNet 不适用于所有神经元模型来实现恒等映射。即使满足恒等映射条件,脉冲 ResNet 仍然会遇到梯度消失和爆炸的问题。因此,我们提出了 Spike-Element-Wise (SEW) ResNet 来在 SNNs 中实现残差学习。我们证明了 SEW ResNet 能够轻松实现恒等映射,并同时克服梯度消失和爆炸的问题。我们在静态图像数据集 ImageNet 和神经形态数据集 DVS Gesture [1] 及 CIFAR10-DVS [32] 上对脉冲 ResNet 和 SEW ResNet 进行了评估。

实验结果显示,更深的脉冲 ResNet 存在退化问题,即网络越深,训练损失越高,而 SEW ResNet 通过简单增加网络深度可以实现更高性能。此外,SEW ResNet 在准确性和时间步长方面均优于目前最先进的直接训练的 SNNs。据我们所知,这是首次探索直接训练超过 100 层的深度 SNNs。

2. 相关工作

2.1 脉冲神经网络的学习方法

将 ANN 转换为 SNN (ANN2SNN) 和使用替代梯度的反向传播 是获得深度 SNNs 的两种主要方法。ANN2SNN 方法首先训练一个带有 ReLU 激活的 ANN,然后通过将 ReLU 替换为脉冲神经元,并添加权重归一化和阈值平衡等缩放操作,将 ANN 转换为 SNN。一些最新的转换方法在 VGG-16 和 ResNet 上几乎实现了无损精度。

然而,转换后的 SNN 需要更长的时间才能在精度上与原始 ANN 匹敌,因为转换基于速率编码(rate-coding) ,这增加了 SNN 的延迟,限制了其实际应用。

反向传播方法可以分为两类。第一类方法通过在仿真时间步长上展开网络来计算梯度 ,这类似于通过时间的反向传播 (BPTT) 的思想。由于相对于阈值触发的发放的梯度是不可微的,通常使用替代梯度。使用替代梯度方法训练的 SNN 不限于速率编码,也可以应用于时间任务,例如分类神经形态数据集(classifying neuromorphic datasets) 。第二类方法计算现有脉冲的时序相对于脉冲时序处的膜电位的梯度 。

2.2 脉冲残差结构

以前的 ANN2SNN 方法注意到了平凡前馈(plain feedforward) ANNs 和残差 ANNs 之间的区别,并针对转换进行了特定的归一化(normalization)。Hu 等人 [17] 首次在 ANN2SNN 中应用残差结构,并在 SNN 中使用缩放的快捷路径来匹配原始 ANN 的激活。

[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.

Sengupta 等人 [49] 提出了 Spike-Norm 来平衡 SNN 的阈值,并通过将 VGG 和 ResNet 转换为 SNN 验证了他们的方法。现有的基于反向传播的方法使用几乎相同的 ResNet 结构。

[49] Abhronil Sengupta, Yuting Ye, Robert Wang, Chiao Liu, and Kaushik Roy. Going deeper in spiking neural networks: Vgg and residual architectures. Frontiers in Neuroscience, 13:95, 2019.

Lee 等人 [30] 在深度不超过 ResNet-11 的浅层 ResNets 上评估了他们定制的替代方法。Zheng 等人 [64] 提出了阈值依赖的批归一化 (td-BN) 来替换朴素的批归一化 (BN) [23],并通过在快捷路径中添加 td-BN 成功地用替代梯度直接训练了脉冲 ResNet-34 和脉冲 ResNet-50。

[30] Chankyu Lee, Syed Shakib Sarwar, Priyadarshini Panda, Gopalakrishnan Srinivasan, and Kaushik Roy. Enabling spike-based backpropagation for training deep neural network architectures. Frontiers in Neuroscience, 14, 2020
[64] Hanle Zheng, Yujie Wu, Lei Deng, Yifan Hu, and Guoqi Li. Going deeper with directly-trained larger spiking neural networks. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 35, pages 11062–11070, 2021.
[23] Sergey Ioffe and Christian Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In International Conference on Machine Learning (ICML), pages 448–456, 2015.

3 方法

3.1 脉冲神经元模型

脉冲神经元是脉冲神经网络 (SNNs) 的基本计算单元。与 Fang 等人 [3] 类似,我们使用统一模型来描述各种脉冲神经元的动态,其包括以下离散时间动态:

[8] Wei Fang, Zhaofei Yu, Yanqi Chen, Timothee Masquelier, Tiejun Huang, and Yonghong Tian. Incorporating learnable membrane time constant to enhance learning of spiking neural networks. In Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), pages 2661–2671, 2021.

H [ t ] = f ( V [ t − 1 ] , X [ t ] ) (1) H[t] = f(V[t-1], X[t]) \tag{1} H[t]=f(V[t1],X[t])(1)
S [ t ] = θ ( H [ t ] − V t h ) (2) S[t] = θ(H[t] - V_{th}) \tag{2} S[t]=θ(H[t]Vth)(2)
V [ t ] = H [ t ] ( 1 − S [ t ] ) + V r e s e t S [ t ] (3) V[t] = H[t](1 - S[t]) + V_{reset}S[t] \tag{3} V[t]=H[t](1S[t])+VresetS[t](3)

其中, X [ t ] X[t] X[t] 是时间步 t t t 的输入电流, H [ t ] H[t] H[t] V [ t ] V[t] V[t] 分别表示在时间步 t t t 触发脉冲后的膜电位和时间步 t t t 的膜电位。 V t h V_{th} Vth 是触发阈值, Θ ( x ) \Theta(x) Θ(x) 是Heaviside阶跃函数,定义为 Θ ( x ) = 1 \Theta(x) = 1 Θ(x)=1 x ≥ 0 x \geq 0 x0 Θ ( x ) = 0 \Theta(x) = 0 Θ(x)=0 x < 0 x < 0 x<0 S [ t ] S[t] S[t] 是时间步 t t t 的输出脉冲,当有脉冲时为1,否则为0。 V r e s e t V_{reset} Vreset 表示重置电位。

公式(1)中的函数 f ( ⋅ ) f(\cdot) f() 描述了神经元动力学,对于不同的脉冲神经元模型有不同的形式。例如,积分-发放模型(IF)和泄露积分-发放模型(LIF)中的函数 f ( ⋅ ) f(\cdot) f() 分别可以由公式(4)和公式(5)描述。

H [ t ] = V [ t − 1 ] + X [ t ] , (4) H[t] = V[t-1] + X[t], \tag{4} H[t]=V[t1]+X[t],(4)

H [ t ] = V [ t − 1 ] + 1 τ ( X [ t ] − ( V [ t − 1 ] − V r e s e t ) ) , (5) H[t] = V[t-1] + \frac{1}{\tau}(X[t] - (V[t-1] - V_{reset})), \tag{5} H[t]=V[t1]+τ1(X[t](V[t1]Vreset)),(5)

其中 τ \tau τ 表示膜时间常数。公式(2)和公式(3)描述了脉冲生成和重置过程,这些过程对所有类型的脉冲神经元模型都是相同的。在本文中, 替代梯度方法 用于在误差反向传播期间定义 Θ ′ ( x ) ≜ σ ′ ( x ) \Theta'(x) \triangleq \sigma'(x) Θ(x)σ(x),其中 σ ( x ) \sigma(x) σ(x) 表示替代函数。

3.2 脉冲 ResNet 的缺点

残差块是 ResNet 的关键组件。图 1(a) 显示了脉冲 ResNet 中的基本块。
在这里插入图片描述

其中 X l , Y l X^l, Y^l Xl,Yl是ResNet中第 l l l 层的输入和输出,Conv是卷积层,BN表示批量归一化,ReLU表示修正线性单元激活层。

脉冲ResNet中的基本块如图1(b)所示。
在这里插入图片描述

简单地将ANNs中的ReLU激活层替换为脉冲神经元(SN),其中 S l [ t ] , O l [ t ] S^l[t],O^l[t] Sl[t],Ol[t] 是在时间步 t t t 时对第 l l l 层输入和输出进行处理的。

根据上述定义,我们将分析脉冲ResNet的缺点。

脉冲ResNet无法实现所有神经元模型的恒等映射

ResNet的一个关键概念是恒等映射(identity mapping)。He等人[14]指出,如果添加的层实现了恒等映射,则一个更深的模型的训练误差不会大于其较浅模型的训练误差。

然而,如果添加的层没有实现恒等映射,则会导致更深的模型表现比浅层模型更差出现退化问题(the degradation problem)。为了解决这个问题,提出了通过在恒等映射的捷径上添加一个短路连接(shortcut connection)来实现的残差学习(见图 1(a))。
在这里插入图片描述

我们用 F l F^l Fl表示残差映射,即一堆两个卷积层,ResNet和脉冲ResNet中的 l l l层可以表示为:

Y l = L N ( F l ( X l ) + X l ) , (6) Y^l = \mathcal{L}_N(\mathcal{F}^l(X^l) + X^l), \tag{6} Yl=LN(Fl(Xl)+Xl),(6)
O l [ t ] = S N ( F l [ S l [ t ] ] + S l [ t ] ) . (7) \quad O^l[t] = SN(\mathcal{F}^l[S^l[t]] + S^l[t]). \tag{7} Ol[t]=SN(Fl[Sl[t]]+Sl[t]).(7)

方程(6)中的残差块使在ANNs中实现恒等映射变得容易。为了说明这一点,当 F l ( X l ) ≡ 0 \mathcal{F}^l(X^l)\equiv 0 Fl(Xl)0 时, Y l = R e L U ( X l ) Y^l = ReLU(X^l) Yl=ReLU(Xl)。在大多数情况下, X l X^l Xl 是前一个ReLU层的激活值,并且 X l ≥ 0 X^l \geq 0 Xl0

因此, Y l = R e L U ( X l ) = X l Y^l = ReLU(X^l) = X^l Yl=ReLU(Xl)=Xl,这实现了恒等映射。

不同于ResNet,脉冲ResNet中的残差块(方程(7))限制了脉冲神经元模型的恒等映射实现。当 F l [ S l [ t ] ] ≡ 0 \mathcal{F}^l[S^l[t]] \equiv 0 Fl[Sl[t]]0时, O l [ t ] = S N ( S l [ t ] ) ≠ S l [ t ] O^l[t] = SN(S^l[t]) \neq S^l[t] Ol[t]=SN(Sl[t])=Sl[t]

因为 S N SN SN 会对输入 S l [ t ] S^l[t] Sl[t] 进行脉冲生成处理,而这个处理的结果通常不等于输入。

为了传输 S l [ t ] S^l[t] Sl[t] 并使 S N ( S l [ t ] ) = S l [ t ] SN(S^l[t]) = S^l[t] SN(Sl[t])=Sl[t],第 l l l 层残差块中的最后一个脉冲神经元(SN)需要在接收到脉冲后发送一个脉冲,并在 t t t 个时间步内 未接收到脉冲时保持静默。这对方程(4)描述的IF神经元有效。

需要确保 𝑆𝑁 在接收到脉冲时发出一个脉冲,在未接收到脉冲时保持静默。这意味着 𝑆𝑁 的输出行为要严格遵循输入脉冲的情况。

具体来说,我们可以设置 0 < V t h ≤ 1 0 < V_{th} \leq 1 0<Vth1 V [ t − 1 ] = 0 V[t-1] = 0 V[t1]=0(确保神经元的初始状态是静默的),以确保 X [ t ] = 1 X[t] = 1 X[t]=1导致 H [ t ] ≥ V t h H[t] \geq V_{th} H[t]Vth X [ t ] = 0 X[t] = 0 X[t]=0导致 H [ t ] < V t h H[t] < V_{th} H[t]<Vth

然而,当考虑一些具有复杂神经动力学的脉冲神经元模型时,实现 S N ( S l [ t ] ) = S l [ t ] SN(S^l[t]) = S^l[t] SN(Sl[t])=Sl[t]变得困难。例如,在[66, 8, 61]中使用的LIF神经元考虑了一个可学习的膜时间常数 τ \tau τ,其神经动力学可由方程(5)描述。当 X [ t ] = 1 X[t] = 1 X[t]=1 V [ t − 1 ] = 0 V[t-1] = 0 V[t1]=0时, H [ t ] = 1 τ H[t] = \frac{1}{\tau} H[t]=τ1。在训练过程中由于优化器的影响,找到一个确保 H [ t ] > V t h H[t] > V_{th} H[t]>Vth的发放阈值是困难的。

脉冲ResNet在长时间序列上遭遇梯度消失/爆炸问题

考虑一个脉冲ResNet,其中有 k k k 个顺序块来传输 S l [ t ] S^l[t] Sl[t],并且满足恒等映射条件,例如脉冲神经元是IF神经元,其 0 < V t h ≤ 1 0 < V_{th} \leq 1 0<Vth1 ,那么我们有 S l [ t ] = S l + 1 [ t ] = . . . = S l + k − 1 [ t ] = O l + k − 1 [ t ] S^l[t] = S^{l+1}[t] = ... = S^{l+k-1}[t] = O^{l+k-1}[t] Sl[t]=Sl+1[t]=...=Sl+k1[t]=Ol+k1[t] 。将 S l [ t ] S^l[t] Sl[t] O l [ t ] O^l[t] Ol[t]中的第 j j j个元素分别记作 S j l [ t ] S^l_j[t] Sjl[t] O j l [ t ] O^l_j[t] Ojl[t],则第 ( l + k − 1 ) (l + k - 1) (l+k1) 层残差块相对于第 l l l 层残差块输入的梯度可以逐层计算如下:

∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ O j l + i [ t ] ∂ S j l + i [ t ] = ∏ i = 0 k − 1 Θ ′ ( S j l + i [ t ] − V t h ) → { 0 , if  0 < Θ ′ ( S j l [ t ] − V t h ) < 1 1 , if  Θ ′ ( S j l [ t ] − V t h ) = 1 + ∞ , if  Θ ′ ( S j l [ t ] − V t h ) > 1 (8) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial O^{l+i}_j[t]}{\partial S^{l+i}_j[t]} = \prod_{i=0}^{k-1} \Theta' (S^{l+i}_j[t] - V_{th}) \rightarrow \begin{cases} 0, & \text{if } 0 < \Theta' (S^l_j[t] - V_{th}) < 1 \\ 1, & \text{if } \Theta' (S^l_j[t] - V_{th}) = 1 \\ +\infty, & \text{if } \Theta' (S^l_j[t] - V_{th}) > 1 \end{cases} \tag{8} Sjl[t]Ojl+k1[t]=i=0k1Sjl+i[t]Ojl+i[t]=i=0k1Θ(Sjl+i[t]Vth) 0,1,+,if 0<Θ(Sjl[t]Vth)<1if Θ(Sjl[t]Vth)=1if Θ(Sjl[t]Vth)>1(8)

其中, Θ ( x ) \Theta(x) Θ(x) 是Heaviside阶跃函数, Θ ′ ( x ) \Theta'(x) Θ(x) 是由替代梯度定义的。由于 O j l + i [ t ] = S N ( S j l + i [ t ] ) O^{l+i}_j[t] = SN(S^{l+i}_j[t]) Ojl+i[t]=SN(Sjl+i[t]) ,因此第二个等式成立。考虑到 S l [ t ] S^l[t] Sl[t] 只能取0或1的事实,常用的替代函数无法满足 Θ ′ ( S j l [ t ] − V t h ) = 1 \Theta'(S^l_j[t] - V_{th}) = 1 Θ(Sjl[t]Vth)=1 [40] 。因此,在较深的脉冲ResNet中,梯度消失/爆炸问题容易发生。

[40] Emre O Neftci, Hesham Mostafa, and Friedemann Zenke. Surrogate gradient learning in spiking neural networks: Bringing the power of gradient-based optimization to spiking neural networks. IEEE Signal Processing Magazine, 36(6):51–63, 2019.

基于上述分析,我们认为先前的脉冲ResNet忽略了脉冲神经元引起的高度非线性,并且很难实现残差学习。然而,如图1(b)所示。
在这里插入图片描述

通过额外的归一化 [17 , 49] ,基本块对于ANN2SNN来说仍然表现良好,因为从ANN转换的SNN可以通过使用发放率(firing rates)来匹配原始ANN的激活。

[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.
[49] Abhronil Sengupta, Yuting Ye, Robert Wang, Chiao Liu, and Kaushik Roy. Going deeper in spiking neural networks: Vgg and residual architectures. Frontiers in Neuroscience, 13:95, 2019.

3.3 Spike-Element-Wise ResNet

这里我们提出了Spike-Element-Wise (SEW) 残差块,以实现SNNs中的残差学习,这可以轻松实现恒等映射,同时解决梯度消失/爆炸问题。如图1©所示。
在这里插入图片描述

SEW残差块可以表示为:

O l [ t ] = g ( S N ( F l ( S l [ t ] ) ) ) , S l [ t ] ) = g ( A l [ t ] , S l [ t ] ) , O^l[t] = g(SN(F^l(S^l[t]))), S^l[t]) = g(A^l[t], S^l[t]), Ol[t]=g(SN(Fl(Sl[t]))),Sl[t])=g(Al[t],Sl[t]),

其中 g g g 表示具有两个spikes tensor作为输入的元素级函数(element-wise function)。这里我们用 A l [ t ] A^l[t] Al[t] 表示需要学习的残差映射为 A l [ t ] = S N ( F l ( S l [ t ] ) ) A^l[t] = SN(F^l(S^l[t])) Al[t]=SN(Fl(Sl[t]))

SEW ResNet 可以轻松实现恒等映射

通过利用spikes的二进制特性,我们可以找到满足恒等映射的不同元素级函数 g g g(如表1所示)。

表1:元素级函数(element-wise functions) g 的列表

NameExpression of g ( A l [ t ] , S l [ t ] ) g(A^l[t], S^l[t]) g(Al[t],Sl[t])
ADD A l [ t ] + S l [ t ] A^l[t] + S^l[t] Al[t]+Sl[t]
AND A l [ t ] ∧ S l [ t ] = A l [ t ] ⋅ S l [ t ] A^l[t] \land S^l[t] = A^l[t] \cdot S^l[t] Al[t]Sl[t]=Al[t]Sl[t]
IAND ( ¬ A l [ t ] ) ∧ S l [ t ] = ( 1 − A l [ t ] ) ⋅ S l [ t ] (\neg A^l[t]) \land S^l[t] = (1 - A^l[t]) \cdot S^l[t] (¬Al[t])Sl[t]=(1Al[t])Sl[t]

具体来说,当选择ADD(加法)和IAND(逻辑与)作为元素级函数(element-wise functions) g g g 时,恒等映射是通过设置 A l [ t ] = 0 A^l[t] = 0 Al[t]=0 来实现的,这可以简单地通过设置最后一个批归一化层(BN)中的权重和偏差在 F l F^l Fl 中为零来实现。然后我们可以得到:

批归一化层的作用

批归一化层对输入进行标准化,使其具有均值为0,方差为1的分布。然后,它会通过可训练的参数(权重 γ \gamma γ 和偏差 β \beta β )重新缩放和移动数据。

这适用于所有神经模型。

当使用AND作为元素级函数(element-wise functions) g g g 时,我们设置 A l [ t ] = 1 A^l[t] = 1 Al[t]=1 以实现恒等映射。它可以通过将最后一个BN的权重设置为零,并将偏差设置为足够大的常数来引发spikes,例如,当最后一个SN是IF神经元时,将偏差设置为 V t h V_{th} Vth。然后我们有:

O l [ t ] = 1 ∧ S l [ t ] = S l [ t ] 。 O^l[t] = 1 \land S^l[t] = S^l[t]。 Ol[t]=1Sl[t]=Sl[t]

注意,使用AND可能会遇到与Spiking ResNet相同的问题。很难控制一些具有复杂神经动力学的脉冲神经元模型在指定时间步生成spikes。

下采样块的形成

值得注意的是,当一个块的输入和输出具有不同的维度时,shortcut 设置为具有 stride > 1的卷积层,而不是恒等连接,以执行下采样。
在这里插入图片描述

图2:Spiking ResNet和SEW ResNet中的下采样块

(a) 下采样基本块 (b) 下采样SEW块

ResNet和Spiking ResNet使用{Conv-BN}而不是图2(a)中的ReLU。在对比中,我们在 shortcut(图2(b))中添加了SN。

SEW ResNet 可以克服梯度消失/爆炸问题

SEW块类似于ReLU加之前的RBA块[13],其公式如下:

Y l = R e L U ( F l ( X l ) ) + X l 。 (10) Y^l = ReLU(F^l(X^l)) + X^l。 \tag{10} Yl=ReLU(Fl(Xl))+Xl(10)

RBA块因为 X l + 1 = Y l ≥ X l X^{l+1} = Y^l \geq X^l Xl+1=YlXl 被He等人[15]批评 ,这将在深层中导致无限输出。实验结果[15]也表明 RBA 块的性能比基本块(图1(a))差。
在这里插入图片描述

在某种程度上,SEW块是RBA块的扩展。

注意,使用 ADD 和 IAND 作为输出spikes的函数(即二进制张量),这意味着在SEW块中,ANNs中的无限输出问题 永远不会在SNNs中发生 ,因为所有spikes都小于等于1。

当选择ADD作为元素级函数(element-wise functions) g g g 时, k k k 个顺序SEW块的无限输出问题可以减轻,因为 k k k 个顺序SEW块的输出将不大于 k + 1 k + 1 k+1 。此外,当 g g g 为ADD时,下采样SEW块将输出调节为不超过2。

当恒等映射实现时,第 ( l + k − 1 ) (l + k - 1) (l+k1) 层SEW块相对于第 l l l 层SEW块输入的输出梯度可以逐层计算如下:

∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = { ∏ i = 0 k − 1 ∂ ( 0 + S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if  g = A D D ∏ i = 0 k − 1 ∂ ( 1 ∧ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if  g = A N D ∏ i = 0 k − 1 ∂ ( ( 1 − 0 ) ⋅ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if  g = I A N D (11) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \begin{cases} \prod_{i=0}^{k-1} \frac{\partial (0+S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = ADD \\ \prod_{i=0}^{k-1} \frac{\partial (1 \land S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = AND \\ \prod_{i=0}^{k-1} \frac{\partial ((1-0) \cdot S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = IAND \end{cases} \ \ \ \ \tag{11} Sjl[t]Ojl+k1[t]=i=0k1Sjl+i[t]g(Ajl+i[t],Sjl+i[t])= i=0k1Sjl+i[t](0+Sjl+i[t])=1,i=0k1Sjl+i[t](1Sjl+i[t])=1,i=0k1Sjl+i[t]((10)Sjl+i[t])=1,if g=ADDif g=ANDif g=IAND    (11)

每一层的输出 O j l + i [ t ] O^{l+i}_j[t] Ojl+i[t] 可以由element-wise函数 g g g 作用于 A j l + i [ t ] A_j^{l+i}[t] Ajl+i[t] S j l + i [ t ] S_j^{l+i}[t] Sjl+i[t] 得到,即:
O j l + i [ t ] = g ( A j l + i [ t ] , S j l + i [ t ] ) O^{l+i}_j[t] = g(A_j^{l+i}[t], S_j^{l+i}[t]) Ojl+i[t]=g(Ajl+i[t],Sjl+i[t])
具体来说:

  • 当 ( g = ADD ) 时
    g ( A j l + i [ t ] , S j l + i [ t ] ) = A j l + i [ t ] + S j l + i [ t ] g(A_j^{l+i}[t], S_j^{l+i}[t]) = A_j^{l+i}[t] + S_j^{l+i}[t] g(Ajl+i[t],Sjl+i[t])=Ajl+i[t]+Sjl+i[t]
    在恒等映射中,设 A j l + i [ t ] = 0 A_j^{l+i}[t] = 0 Ajl+i[t]=0 ,则有:
    O j l + i [ t ] = 0 + S j l + i [ t ] = S j l + i [ t ] O^{l+i}_j[t] = 0 + S_j^{l+i}[t] = S_j^{l+i}[t] Ojl+i[t]=0+Sjl+i[t]=Sjl+i[t]
    因此:
    ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = ∂ ( 0 + S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \frac{\partial (0 + S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1 Sjl+i[t]g(Ajl+i[t],Sjl+i[t])=Sjl+i[t](0+Sjl+i[t])=1
  • 当 ( g = AND ) 时
    g ( A j l + i [ t ] , S j l + i [ t ] ) = A j l + i [ t ] ∧ S j l + i [ t ] g(A_j^{l+i}[t], S_j^{l+i}[t]) = A_j^{l+i}[t] \land S_j^{l+i}[t] g(Ajl+i[t],Sjl+i[t])=Ajl+i[t]Sjl+i[t]
    在恒等映射中,设 A j l + i [ t ] = 1 A_j^{l+i}[t] = 1 Ajl+i[t]=1 ,则有:
    O j l + i [ t ] = 1 ∧ S j l + i [ t ] = S j l + i [ t ] O^{l+i}_j[t] = 1 \land S_j^{l+i}[t] = S_j^{l+i}[t] Ojl+i[t]=1Sjl+i[t]=Sjl+i[t]
    因此:
    ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = ∂ ( 1 ∧ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \frac{\partial (1 \land S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1  Sjl+i[t]g(Ajl+i[t],Sjl+i[t])=Sjl+i[t](1Sjl+i[t])=1
  • 当 ( g = IAND ) 时
    g ( A j l + i [ t ] , S j l + i [ t ] ) = ( 1 − A j l + i [ t ] ) ⋅ S j l + i [ t ] g(A_j^{l+i}[t], S_j^{l+i}[t]) = (1 - A_j^{l+i}[t]) \cdot S_j^{l+i}[t] g(Ajl+i[t],Sjl+i[t])=(1Ajl+i[t])Sjl+i[t]
    在恒等映射中,设 A j l + i [ t ] = 0 A_j^{l+i}[t] = 0 Ajl+i[t]=0 ,则有:
    O j l + i [ t ] = ( 1 − 0 ) ⋅ S j l + i [ t ] = S j l + i [ t ] O^{l+i}_j[t] = (1 - 0) \cdot S_j^{l+i}[t] = S_j^{l+i}[t] Ojl+i[t]=(10)Sjl+i[t]=Sjl+i[t]
    因此:
    ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = ∂ ( ( 1 − 0 ) ⋅ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \frac{\partial ((1 - 0) \cdot S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1 Sjl+i[t]g(Ajl+i[t],Sjl+i[t])=Sjl+i[t]((10)Sjl+i[t])=1

结合以上各项计算,逐层计算梯度的完整过程为:
∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} Sjl[t]Ojl+k1[t]=i=0k1Sjl+i[t]g(Ajl+i[t],Sjl+i[t])
对于不同的 ( g ),都得到常数1:
∏ i = 0 k − 1 1 = 1 \prod_{i=0}^{k-1} 1 = 1 i=0k11=1

第二个等式在 g = A D D / I A N D g = ADD/IAND g=ADD/IAND 时成立。由于公式(11)中的梯度是常数,SEW ResNet可以克服梯度消失/爆炸问题。

4. 实验

4.1 ImageNet 分类

由于ImageNet 2012测试服务器不再可用,我们无法报告实际的测试准确率。取而代之的是,我们使用验证集上的准确率作为测试准确率,与[17, 64]相同。

He等人[14]在ImageNet数据集上评估了18/34/50/101/152层的ResNet。
在这里插入图片描述
为了进行比较,我们考虑了具有相同网络架构的SNNs,只是将基本残差块(图1(a))替换为脉冲基本块(图1(b))和SEW块(图1©),其中 g g g 为ADD。我们将具有基本块的SNN称为Spiking ResNet,将具有SEW块的SNN称为SEW ResNet。

在静态ImageNet数据集上采用IF神经元模型。在ImageNet上训练期间,我们发现Spiking ResNet-50/101/152无法收敛,除非我们使用零初始化,这使得所有块在训练开始时都是恒等映射(identity mapping)。因此,本文中报告的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很好地解决了退化问题。

与最先进方法的比较

在这里插入图片描述

在表3中,我们将SEW ResNet与在ImageNet上取得最佳结果的先前Spiking ResNet进行了比较。据我们所知,SEW ResNet-101和SEW ResNet-152是迄今为止唯一超过100层的SNNs,没有其他相同结构的网络可供比较。

在网络结构相同的情况下,我们的SEW ResNet即使在较少的时间步T情况下,也优于直接训练的Spiking ResNet的最先进的准确率。SEW ResNet-34的准确率略低于Spiking ResNet-34(大)与td-BN(67.04%对67.05%),后者使用了1.5倍的模拟时间步T(6对4)和4倍的参数数量(85.5M对21.8M)。最先进的ANN2SNN方法[33, 17]的准确率比我们的SEW ResNet更高,但它们分别使用了64倍和87.5倍的时间步。

[33] Yuhang Li, Shikuang Deng, Xin Dong, Ruihao Gong, and Shi Gu. A free lunch from ann: Towards efficient, accurate spiking neural networks calibration. In International Conference on Machine Learning (ICML), volume 139, pages 6316–6325, 2021.
[17] Yangfan Hu, Huajin Tang, Yueming Wang, and Gang Pan. Spiking deep residual network. arXiv preprint arXiv:1805.01352, 2018.

SEW块的脉冲响应分析

在这里插入图片描述

图4显示了ImageNet上SEW ResNet-18/34/50/101/152的 A l A^l Al 脉冲率。

SEW ResNet-18有7个块,SEW ResNet-34和SEW ResNet-50有15个块,SEW ResNet-101有33个块,SEW ResNet-152有50个块。下采样(downsample)SEW块由下三角符号 ▽ \bigtriangledown 标记。

由于我们选择ADD作为逐元素函数(element-wise)g,较低的脉冲率意味着SEW块更接近于实现恒等映射,除了下采样块。

注意,下采样块的快捷方式不是恒等映射,如图2(b)所示。
在这里插入图片描述

图4显示,SEW块中的所有脉冲神经元的脉冲率都很低,最后两个块中的脉冲神经元的脉冲率甚至几乎为零。由于时间步T为4且脉冲率不超过0.25,SEW ResNet-18/34/50中的所有神经元在整个模拟过程中平均不超过一次脉冲。此外,SEW ResNet-101/152中的所有脉冲率不超过0.5,表明所有神经元在平均上不超过两次脉冲。总体而言,SEW块中的 A l A^l Al 的脉冲率处于较低水平,验证了大多数SEW块充当恒等映射。

ResNet-152结构的梯度检查

∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ O j l + i [ t ] ∂ S j l + i [ t ] = ∏ i = 0 k − 1 Θ ′ ( S j l + i [ t ] − V t h ) → { 0 , if  0 < Θ ′ ( S j l [ t ] − V t h ) < 1 1 , if  Θ ′ ( S j l [ t ] − V t h ) = 1 + ∞ , if  Θ ′ ( S j l [ t ] − V t h ) > 1 (8) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial O^{l+i}_j[t]}{\partial S^{l+i}_j[t]} = \prod_{i=0}^{k-1} \Theta' (S^{l+i}_j[t] - V_{th}) \rightarrow \begin{cases} 0, & \text{if } 0 < \Theta' (S^l_j[t] - V_{th}) < 1 \\ 1, & \text{if } \Theta' (S^l_j[t] - V_{th}) = 1 \\ +\infty, & \text{if } \Theta' (S^l_j[t] - V_{th}) > 1 \end{cases} \tag{8} Sjl[t]Ojl+k1[t]=i=0k1Sjl+i[t]Ojl+i[t]=i=0k1Θ(Sjl+i[t]Vth) 0,1,+,if 0<Θ(Sjl[t]Vth)<1if Θ(Sjl[t]Vth)=1if Θ(Sjl[t]Vth)>1(8)
∂ O j l + k − 1 [ t ] ∂ S j l [ t ] = ∏ i = 0 k − 1 ∂ g ( A j l + i [ t ] , S j l + i [ t ] ) ∂ S j l + i [ t ] = { ∏ i = 0 k − 1 ∂ ( 0 + S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if  g = A D D ∏ i = 0 k − 1 ∂ ( 1 ∧ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if  g = A N D ∏ i = 0 k − 1 ∂ ( ( 1 − 0 ) ⋅ S j l + i [ t ] ) ∂ S j l + i [ t ] = 1 , if  g = I A N D (11) \frac{\partial O^{l+k-1}_j[t]}{\partial S^l_j[t]} = \prod_{i=0}^{k-1} \frac{\partial g(A_j^{l+i}[t], S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = \begin{cases} \prod_{i=0}^{k-1} \frac{\partial (0+S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = ADD \\ \prod_{i=0}^{k-1} \frac{\partial (1 \land S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = AND \\ \prod_{i=0}^{k-1} \frac{\partial ((1-0) \cdot S_j^{l+i}[t])}{\partial S_j^{l+i}[t]} = 1, & \text{if } g = IAND \end{cases} \ \ \ \ \tag{11} Sjl[t]Ojl+k1[t]=i=0k1Sjl+i[t]g(Ajl+i[t],Sjl+i[t])= i=0k1Sjl+i[t](0+Sjl+i[t])=1,i=0k1Sjl+i[t](1Sjl+i[t])=1,i=0k1Sjl+i[t]((10)Sjl+i[t])=1,if g=ADDif g=ANDif g=IAND    (11)

公式(8)和公式(11)分析了具有恒等映射的多个块的梯度。

为了验证SEW ResNet是否能克服消失/爆炸梯度问题,我们检查了Spiking ResNet-152和SEW ResNet-152的梯度,它们是最深的标准ResNet结构。我们考虑了相同的初始化参数和有/无零初始化。

由于SNNs的梯度显著受到脉冲率的影响(见Sec.A.4),我们首先分析脉冲率。
在这里插入图片描述

图5(a)显示了第 l l l 个块输出 O l O^l Ol 的初始脉冲率。下采样块的索引由垂直虚线标记。两个相邻虚线之间的块代表恒等映射区域,并具有相同形状的输入和输出。

使用零初始化时,Spiking ResNet、SEW AND ResNet、SEW IAND ResNet和SEW ADD ResNet具有相同的脉冲率(绿色曲线),这是零初始化曲线。

不使用零初始化时,SEW AND网络(红色曲线)发生静默问题,而SEW IAND网络(紫色曲线)缓解了这个问题。
在这里插入图片描述

图5(b)显示了第 l l l 个块的最后一个SN的输出 A l A^l Al 的脉冲率。

可以发现,尽管SEW ADD ResNet在恒等映射区域中的 O l O^l Ol 脉冲率线性增加,但每个块中的最后一个SN仍保持稳定的脉冲率。

注意,当 g g g 为ADD时,SEW块的输出不是二进制的,脉冲率实际上是平均值。

SEW IAND ResNet的SNs保持了足够的脉冲率,并且随着深度略有衰减(紫色曲线),而SEW AND ResNet的深层SNs保持静默(橙色曲线)。

静默问题可以解释为,当使用AND时, O l [ t ] = S N ( F l ( O l − 1 [ t ] ) ) ∧ O l − 1 [ t ] ≤ O l − 1 [ t ] O^l[t] = SN(F^l(O^{l−1}[t])) ∧ O^{l−1}[t] ≤ O^{l−1}[t] Ol[t]=SN(Fl(Ol1[t]))Ol1[t]Ol1[t]

由于很难在每个时间步 t t t 保持 S N ( F l ( O l − 1 [ t ] ) ) ≡ 1 SN(F^l(O^{l−1}[t])) ≡ 1 SN(Fl(Ol1[t]))1,因此 在使用AND作为g的SEW ResNet中,静默问题可能经常发生。

使用IAND代替AND可以缓解这个问题,因为在每个时间步t保持 S N ( F l ( O l − 1 [ t ] ) ) ≡ 1 SN(F^l(O^{l−1}[t])) ≡ 1 SN(Fl(Ol1[t]))1 很容易。

我们在所有实验中使用的代理梯度函数是 σ ( x ) = 1 π arctan ⁡ ( π 2 α x ) + 1 2 \sigma (x) = \frac{1}{\pi} \arctan (\frac{\pi}{2} \alpha x) +\frac{1}{2} σ(x)=π1arctan(2παx)+21,因此 σ ′ ( x ) = α 2 ( 1 + ( π 2 α x ) 2 ) \sigma^{\prime}(x)=\frac{\alpha}{2\left(1+\left(\frac{\pi}{2} \alpha x\right)^{2}\right)} σ(x)=2(1+(2παx)2)α 。当 V t h = 1 , α = 2 V_{th} = 1,α = 2 Vth=1α=2 时,每个块的梯度幅度 ∥ ∂ L ∂ S ∥ ∥\frac{∂L}{∂S} ∥ SL 如图6所示。
在这里插入图片描述

注意 α = 2 , σ ′ ( x ) ≤ σ ′ ( 0 ) = σ ′ ( 1 − V t h ) = 1 α = 2,σ′(x) ≤ σ′(0) = σ′(1 − Vth) = 1 α=2σ(x)σ(0)=σ(1Vth)=1 σ ′ ( 0 − V t h ) = 0.092 < 1 σ′(0 − V_{th}) = 0.092 < 1 σ(0Vth)=0.092<1

可以发现,在没有零初始化的情况下,Spiking ResNet-152中的梯度从较深的层到较浅的层在恒等映射区域中衰减,这由 σ ′ ( x ) ≤ 1 σ′(x) ≤ 1 σ(x)1 引起。

值得注意的是,零初始化的Spiking ResNet-152中也发生了衰减。虚线附近的小凸起 ∧ ∧ 是由那些 S j l [ t ] = 0 S^l_j[t] = 0 Sjl[t]=0 的梯度消失引起的。在这些梯度完全衰减到0之后, ∥ ∂ L ∂ S ∥ ∥ \frac{∂L}{∂S}∥ SL 将成为一个常数,因为其余的梯度是由 S j l [ t ] = 1 S^l_j[t] = 1 Sjl[t]=1 σ ′ ( 1 − V t h ) = 1 σ′(1 − V_{th}) = 1 σ(1Vth)=1计算的,这也可以解释为什么梯度-索引曲线在某些区域是水平的。

参考零初始化的SEW ResNet-152,可以发现无论我们选择什么g,所有的梯度-索引曲线都是相似的。这是由于在恒等映射区域中, S l S^l Sl 对于所有索引 l l l 都是常数,梯度也成为常数,因为它不会流经SNs。没有零初始化时,SEW AND ResNet-152中发生了消失梯度问题,这是由静默问题引起的。由于图5中显示的足够的脉冲率,SEW ADD、IAND网络的梯度在从较深的层到较浅的层时没有显著衰减,表明消失/爆炸梯度问题在这些网络中不会发生。

V t h = 0.5 , α = 2 V_{th} = 0.5,α = 2 Vth=0.5α=2 时, σ ′ ( 0 − V t h ) = σ ′ ( 1 − V t h ) = 0.288 < 1 σ′(0 − Vth) = σ′(1 − Vth) = 0.288 < 1 σ(0Vth)=σ(1Vth)=0.288<1 ,这表明向 SNs 传递脉冲容易导致梯度消失,如图 7 所示。
在这里插入图片描述

在零初始化的情况下,Spiking ResNet-152 中的衰减更为严重,因为 F l F^l Fl 的梯度无法贡献。不管我们选择什么 g g g ,SEW ResNet-152 都不会受到影响。当 V t h = 1 , α = 3 V_{th} = 1,α = 3 Vth=1α=3 时, σ ′ ( 1 − V t h ) = 1.5 > 1 σ′(1 − V_{th} ) = 1.5 > 1 σ(1Vth)=1.5>1 ,这表明向 SNs 传递脉冲容易导致梯度爆炸。
在这里插入图片描述

图 8 显示了这种情况下的梯度。与图 6 中的原因相同,代理函数的变化会增加没有零初始化的所有网络的梯度,但不会影响具有零初始化的 SEW ResNet-152。Spiking ResNet-152 遇到了梯度爆炸的问题,而 SEW ADD 和 IAND ResNet-152 的这个问题不严重。

4.2 DVS手势分类

原始ResNet是为复杂的ImageNet数据集分类设计的,对于DVS手势数据集来说太大了。因此,我们设计了一个名为7B-Net的小型网络,其结构为 c 32 k 3 s 1 − B N − P L I F − S E W B l o c k − M P k 2 s 2 ∗ 7 − F C 11 c32k3s1-BN-PLIF-{SEW Block-MPk2s2}*7-FC11 c32k3s1BNPLIFSEWBlockMPk2s27FC11 。这里 c 32 k 3 s 1 c32k3s1 c32k3s1 表示卷积层,通道数为32,卷积核大小为3,步长为1。MPk2s2表示最大池化,卷积核大小为2,步长为2。符号{}*7表示七次重复结构,PLIF表示具有可学习膜时间常数的参数化泄漏积分发放神经元,这在[8]中提出,并可以用方程(5)描述。有关AER数据预处理的详细信息,请参见Sec.A.1。
H [ t ] = V [ t − 1 ] + 1 τ ( X [ t ] − ( V [ t − 1 ] − V r e s e t ) ) , (5) H[t] = V[t-1] + \frac{1}{\tau}(X[t] - (V[t-1] - V_{reset})), \tag{5} H[t]=V[t1]+τ1(X[t](V[t1]Vreset)),(5)

[8] Wei Fang, Zhaofei Yu, Yanqi Chen, Timothee Masquelier, Tiejun Huang, and Yonghong Tian. Incorporating learnable membrane time constant to enhance learning of spiking neural networks. In Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), pages 2661–2671, 2021.

Spiking ResNet vs. SEW ResNet

我们首先通过将SEW块替换为基本块来比较具有加法元素函数(SEW ADD ResNet)的SEW ResNet和Spiking ResNet的性能。

网络元素函数 g准确率(%)
SEW ResNetADD97.92
SEW ResNetIAND95.49
Plain Net-91.67
Spiking ResNet-90.97
SEW ResNetAND70.49

表4:DVS手势上的测试准确率。网络按准确率排序。表4显示了所有网络的测试准确率。SEW ADD ResNet的准确率最高。

如图9和表4所示,尽管Spiking ResNet(蓝色曲线)的训练损失低于SEW ADD ResNet(橙色曲线),但测试准确率低于SEW ADD ResNet(90.97% vs. 97.92%),这表明Spiking ResNet比SEW ADD ResNet更容易过拟合。

不同元素函数和普通块的评估。由于DVS手势数据集上的SNN训练成本远低于ImageNet,我们在DVS手势数据集上进行了更多的消融实验。我们用普通块(无shortcut connection)替换SEW块,并测试性能。我们还评估了表1中的各种元素函数g。
在这里插入图片描述

图9显示了DVS手势上的训练损失和训练/测试准确率。早期时期的剧烈波动是由于较大的学习率引起的(参见Sec.A.1)。我们可以发现,训练损失为SEW IAND < Spiking ResNet < SEW ADD < Plain Net < SEW AND。由于过拟合问题,较低的损失并不保证较高的测试准确率。

与最先进方法的比较

表5比较了我们的网络与最先进(SOTA)的方法。可以发现我们的SEW ResNet在准确率、参数数量和模拟时间步方面都优于最先进的工作。

网络准确率(%)参数数量时间步
c32k3s1-BN-PLIF-{SEW Block (c32)-MPk2s2}*7-FC11 (7B-Net)97.920.13M16
{c128k3s1-BN-PLIF-MPk2s2}*5-DPFC512-PLIF-DP-FC110-PLIF-APk10s10 [8]97.571.70M20
Spiking ResNet-17 with td-BN [64]96.8711.18M40
MPk4-c64k3-LIF-c128k3-LIF-APk2-c128k3-LIF-APk2-FC256-LIF-FC11 [16]93.4023.23M60

表5:与DVS手势数据集上最先进方法的比较。

4.3 CIFAR10-DVS分类

我们还报告了CIFAR10-DVS数据集上的SEW ResNet,该数据集是通过DVS相机录制LCD监视器上的CIFAR-10数据集的动态图像获得的。由于CIFAR10-DVS比DVS手势更复杂,我们使用名为Wide-7B-Net的网络结构,该结构类似于7B-Net,但具有更多的通道。Wide-7B-Net的结构为 c 64 k 3 s 1 − B N − P L I F − S E W B l o c k ( c 64 ) − M P k 2 s 2 ∗ 4 − c 128 k 3 s 1 − B N − P L I F − S E W B l o c k ( c 128 ) − M P k 2 s 2 ∗ 3 − F C 10 c64k3s1-BN-PLIF-{SEW Block (c64)-MPk2s2}*4-c128k3s1-BN-PLIF-{SEW Block (c128)-MPk2s2}*3-FC10 c64k3s1BNPLIFSEWBlock(c64)MPk2s24c128k3s1BNPLIFSEWBlock(c128)MPk2s23FC10
在这里插入图片描述

在表6中,我们将SEW ResNet与之前的Spiking ResNet进行了比较。可以发现我们的方法在性能(70.2% vs. 67.8%)和时间步(8 vs. 10)方面优于Spiking ResNet [64]。我们还将我们的方法与CIFAR10-DVS上最先进的监督学习方法进行了比较。我们的Wide-7B-Net的准确率略低于当前的最先进方法[8](74.4% vs. 74.8%),该方法使用了1.25倍的模拟时间步(20 vs. 16)和14.6倍的参数数量(17.4M vs. 1.19M)。此外,当将T大幅减少到T = 4时,我们的Wide-7B-Net仍然可以获得64.8%的准确率。

5 结论

在本文中,我们分析了之前的Spiking ResNet,其残差块模仿了ResNet的标准块,发现它几乎无法实现恒等映射,并且存在梯度消失/爆炸的问题。为了解决这些问题,我们提出了SEW残差块,并证明其可以实现残差学习。ImageNet、DVS Gesture和CIFAR10-DVS数据集上的实验结果表明,我们的SEW残差块解决了退化问题,通过简单增加网络深度,SEW ResNet可以实现更高的准确率。我们的工作可能为‘非常深’的SNNs的学习带来启示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

讨论stl链表

讨论链表 list迭代器失效list的模拟实现创建结点类链表迭代器完成实现代码 list与vector 链表是一个序列容器&#xff0c;在任意位置都可以用常数时间插入或者删除&#xff0c;并且可以在两个方向进行迭代。 list迭代器失效 迭代器失效指迭代器所指向的结点无效&#xff0c;即该…

淘宝扭蛋机小程序开发:为消费者带来新的潮玩乐趣

在当下的消费市场&#xff0c;潮玩消费已经成为了年轻人的新宠&#xff0c;预计在近几年间潮玩市场的销售额将达到千亿元&#xff01;其中扭蛋机市场更是吸引了各个阶段的消费群体&#xff0c;在市场巨大的发展前景下&#xff0c;同时也吸引了众多投资者入局&#xff0c;市场竞…

SuperMap iDesktop

SuperMap iDesktop 介绍 SuperMap iDesktop是一款由超图公司推出的企业级插件式桌面GIS软件&#xff0c;它通过SuperMap iObjects .NET、桌面核心库和.NET Framework 4.0构建&#xff0c;集成了地图制作、空间分析、数据编辑、三维分析等多种功能于一体&#xff0c;为用户提供…

标准版回收站的商品怎么删除?

管理后台/维护/数据维护/清除数据 里面就可以清空回收站的商品

Flink作业执行之 4.JobGraph

Flink作业执行之 4.JobGraph 1. 入口 前文了解了由Transformation到StreamGraph的过程&#xff0c;StreamGraph即作业的逻辑拓扑结构。 生成逻辑结构后&#xff0c;接下来的操作往往是对逻辑结构的优化。在很多组件中都是这样的处理&#xff0c;如hive、spark等都会执行“逻辑…

os实训课程模拟考试(选择题复习)

目录 一、操作系统的基本功能和设计目标 &#xff08;1&#xff09;基础知识 &#xff08;2&#xff09;题目与答案 1、操作系统是一组 B &#xff08;单选&#xff09; 2、以下哪项不是操作系统关心的主要问题&#xff1f;D &#xff08;单选&#xff09; 3、下列关于…

使用SpringBoot整合filter

SpringBoot整合filter&#xff0c;和整合servlet类似&#xff0c;也有两种玩儿法 1、创建一个SpringBoot工程&#xff0c;在工程中创建一个filter过滤器&#xff0c;然后用注解WebFilter配置拦截的映射 2、启动类还是使用ServletComponentScan注解来扫描拦截器注解WebFilter 另…

Windows系统开启自带虚拟机功能Hyper-V

前言 最近有小伙伴咨询&#xff1a;Windows系统上有自带的虚拟机软件吗&#xff1f; 答案肯定是有的。它就是Hyper-V&#xff0c;但很多小伙伴都不知道怎么打开这个功能。 今天小白就带大家来看看如何正确打开这个Windows自带的虚拟机功能Hyper-V。 开始之前&#xff0c;你…

基于Spring Boot与Vue的智能房产匹配平台+文档

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐&#xff1a;最热的500个选题…

学会python——在Excel中生成图表数据(python实例十五)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.生成表格数据 3.1 代码构思 3.2 代码示例 4.绘制图表 4.1 代码构思 4.2 代码示例 5.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 P…

Shell 脚本编程保姆级教程(下)

七、Shell 流程控制 7.1 if #!/bin/bash num1100 if test $[num1] 100 thenecho num1 是 100 fi 7.2 if else #!/bin/bash num1100 num2100 if test $[num1] -eq $[num2] thenecho 两个数相等&#xff01; elseecho 两个数不相等&#xff01; fi 7.3 if else-if else #!/…

电影APP——项目建议书参考

项目建议书 1. 前言1.1 实现目标1.2 项目应用范围1.3 项目名称 2. 概述2.1 国内外发展综述2.2 拟解决的问题2.2.1 业务问题2.2.2 技术需求 2.3 系统环境需求2.3.1 网络需求描述2.3.2 业务需求描述2.3.3 运行环境/用户描述 2.4 功能建议2.4.1应用场景描述2.4.2功能划分/功能模型…

性能之巅的巴比达内网穿透访问单位的web管理系统

在这个数字化飞速发展的时代&#xff0c;作为一名IT部门的小主管&#xff0c;我经常面临着一项挑战&#xff1a;如何在外网环境下高效、安全地访问我们单位内部部署的Web管理系统。这不仅仅是关乎我个人的工作效率&#xff0c;更是影响到整个团队能否快速响应市场需求的关键。直…

650V 1200V 碳化硅MOS TO247 封装 内阻30毫欧 40 80毫欧

650V 1200V 碳化硅MOS TO247 封装 内阻30毫欧 40 80毫欧

LangChain E-Mails with LLM

题意&#xff1a;通过LangChain使用大型语言模型&#xff08;LLM&#xff09;处理电子邮件 问题背景&#xff1a; I am quite new to LangChain and Python as im mainly doing C# but i am interested in using AI on my own data. So i wrote some python code using langch…

如何安装和卸载软件?

如何安装和卸载软件&#xff1f; &#x1f4bb; 如何安装和卸载软件&#xff1f;——默语的详细教程摘要引言正文内容&#x1f5a5;️ 在Windows上安装和卸载软件安装软件卸载软件 &#x1f34f; 在Mac上安装和卸载软件安装软件卸载软件 &#x1f914; QA环节&#x1f4dd; 表格…

QT QThread 线程类的使用及示例

QThread 是 Qt 框架提供的一个用于处理多线程的类&#xff0c;它允许开发者编写具有并发功能的应用程序&#xff0c;提高程序的响应速度、执行效率和用户体验。 在操作系统中&#xff0c;线程是进程内的执行单元&#xff0c;拥有独立的执行路径。每个线程有自己独立的栈空间&a…

从零开始学Spring Boot系列-集成Spring Security实现用户认证与授权

在Web应用程序中&#xff0c;安全性是一个至关重要的方面。Spring Security是Spring框架的一个子项目&#xff0c;用于提供安全访问控制的功能。通过集成Spring Security&#xff0c;我们可以轻松实现用户认证、授权、加密、会话管理等安全功能。本篇文章将指导大家从零开始&am…

日期类(java)

文章目录 第一代日期类 Date常用构造方法SimpleDateFormat 日期格式化类日期转字符串&#xff08;String -> Date)字符串转日期 (String->Date) 第二代日期类 Calendar常用字段与如何得到实例对象相关 API 第三代日期类&#xff08;LocalDate\TIme)日期&#xff0c;时间&…

springboot + Vue前后端项目(第二十一记)

项目实战第二十一记 写在前面1. springboot文件默认传输限制2. 安装视频插件包命令3. 前台Video.vue4. 创建视频播放组件videoDetail.vue5. 路由6. 效果图总结写在最后 写在前面 本篇主要讲解系统集成视频播放插件 1. springboot文件默认传输限制 在application.yml文件中添…